首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >审核Products / Options / Exras表的日志记录?

审核Products / Options / Exras表的日志记录?
EN

Stack Overflow用户
提问于 2011-06-22 07:35:21
回答 2查看 357关注 0票数 1

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

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

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

产品包含一个或多个选项。选项可以有附加选项,也可以不附加附加选项。

表格设计示例:

产品表:

代码语言:javascript
复制
mysql> select * from products;
+-----------+------------+
| ProductID | Name       |
+-----------+------------+
|         1 | Hard Drive |
+-----------+------------+

选项表:( ProductID 1中有两个选项)

代码语言:javascript
复制
mysql> select * from options;
+----------+-----------+---------+-------+
| OptionID | ProductID | Name    | Price |
+----------+-----------+---------+-------+
|        1 |         1 | Samsung | 55.00 |
|        2 |         1 | Hitachi | 20.00 |
+----------+-----------+---------+-------+

额外表:(OptionID 2有两个额外表...OptionID 1(不含额外内容)

代码语言:javascript
复制
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个额外选项。

options和extras表中有超过300,000行。

我有Order和Order_Items表。在Order_Items表中,它包含了OptionID (FK)的列表,但我确实包含了选项名称...因此,如果我更改选项名称(options.Name),则顺序将生效。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-22 17:46:24

我认为你没有给我们足够的信息来回答你的问题。在我工作的地方,员工每天都会更改数据库中的数据。我们为某些表保留历史记录,而不为其他表保留历史记录。我们为某些表保留审计跟踪,而不为其他表保留审计跟踪。对于某些表,我们既不保留历史记录,也不保留审计跟踪。

我可以想象一下,为了纠正一个拼写错误而更改产品名称。这种更改通常不需要对选项或额外的选项进行任何更改。

我还可以想象更改产品名称的方式,使其成为不同的产品,这可能需要更改选项和额外的。

由于大多数公司销售产品,我认为您应该重新考虑表的名称。您的" products“表看起来更像是一个产品类别。你的“选项”表看起来更像是产品。类别没有价格,但产品有价格。

您还询问了有关订单的问题。对表"products“、"options”和"extras“中值的更改应该不会影响以前的订单。五年后,你可能不得不去法院提供一份命令的副本。如果你错过了书面工作,你的数据库最好能够准确地再现客户支付的东西,即使它充满了打字错误和错误的价格。

票数 1
EN

Stack Overflow用户

发布于 2011-06-22 20:45:17

从你的评论中。我建议做两件事。

为Product和Category表添加审核日志(历史)表。示例Audit logging for products data?

对于Options/Extra表,我将通过在每一行上有一个开始和结束日期来进行版本控制,这样您就可以在任何给定的时间点看到值。这里有一个很好的解释,versioning each field vs history date field?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6433239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档