mysql - 产品/选项/Exras 表的审核日志记录?

标签 mysql sql database database-design

我不知道我的表设计需要什么类型的审计日志系统。

有时员工会更改产品名称、价格、选项或附加功能。但是我们不保留已更新或删除的历史记录..如何处理这种情况?

使用审计(历史表)还是版本控制类型?请为我的表格设计提供示例。

一个产品包含一个或多个选项。一个选项可以有额外的或没有额外的。

表格设计示例:

产品表:

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/

相关文章:

php - 错误 WHERE SQL

C#/.Net 错误 : MySql. 数据对象引用未设置为对象的实例

sql - 我应该设计一个 SQL Server 数据库来依赖 UNION 还是避免它?

sql - 如何编写SQL语句?

java - SWING 中哪个数据存储可以处理 TB 级的音频调用

java - JPA 查找表值

mysql - 如何修复命令 "mysql -v"上的错误

php - 未捕获的 PDOException:PDO::__construct():php_network_getaddresses:getaddrinfo 失败:名称或服务未知

mysql - Sql获取与特定用户没有关系的所有用户

php - Mysql性能,一表二