我不知道我的表设计需要什么类型的审计日志系统。
有时员工会更改产品名称、价格、选项或附加功能。但是我们不保留已更新或删除的历史记录..如何处理这种情况?
使用审计(历史表)还是版本控制类型?请为我的表格设计提供示例。
一个产品包含一个或多个选项。一个选项可以有额外的或没有额外的。
表格设计示例:
产品表:
mysql> select * from products;
+-----------+------------+
| ProductID | Name |
+-----------+------------+
| 1 | Hard Drive |
+-----------+------------+
选项表:(ProductID 1有两个选项)
mysql> select * from options;
+----------+-----------+---------+-------+
| OptionID | ProductID | Name | Price |
+----------+-----------+---------+-------+
| 1 | 1 | Samsung | 55.00 |
| 2 | 1 | Hitachi | 20.00 |
+----------+-----------+---------+-------+
Extras 表:(OptionID 2 有两个 Extras...OptionID 1 没有 Extra)
mysql> select * from extras;
+---------+----------+------------------+--------+
| ExtraID | OptionID | Name | Price |
+---------+----------+------------------+--------+
| 1 | 2 | 10 Year Warranty | 100.00 |
| 2 | 2 | 20 Year Warranty | 250.00 |
+---------+----------+------------------+--------+
如果我更改产品名称 (products.name
)... 选项和附加数据(无论 ProductID 链接到什么)应该自动添加到历史表中还是使用版本控制方法?
有些产品有大约 20 个选项,每个选项有大约 10 个额外选项。
我在选项和附加表中有超过 300,000 行。
我有 Order 和 Order_Items 表。在 Order_Items 表中,它包含 OptionID (FK) 列表,但我确实包含选项名称...因此,如果我更改选项名称(options.Name
) 然后订单将生效。
最佳答案
我认为您没有提供足够的信息来回答您的问题。在我工作的地方,员工每天都会更改数据库中的数据。我们为某些表保留历史记录,而不为其他表保留历史记录。我们为某些表保留审计跟踪,而对其他表则不保留。对于某些表格,我们既不保留历史记录也不保留审计线索。
我可以想象更改产品名称以更正拼写错误。这种更改通常不需要对选项或附加功能进行任何更改。
我还可以想象以一种使其成为不同产品的方式更改产品名称,这可能需要更改选项和附加功能。
由于大多数公司都销售产品,我认为您应该重新考虑表格的名称。您的“产品”表似乎更像是一类产品。您的“选项”表看起来更像是产品。类别没有价格,但产品有。
您还询问了订单。对“产品”、“选项”和“附加”表中值的更改应该不会影响以前的订单。五年后,您可能需要出庭并提供该命令的副本。如果您遗漏了文书工作,您的数据库就能够更好地准确再现客户支付的费用,即使它充满了拼写错误和错误的价格。
关于mysql - 产品/选项/Exras 表的审核日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6433239/