【发布时间】:2017-01-31 23:37:16
【问题描述】:
假设一个用户有这样的帖子表:
id=1 的帖子是用户发布的第一个帖子。 id=2 的帖子——是对帖子所做的编辑,id=3——帖子的最新当前版本。
post_param_a 和 user_id 无法在整个版本中更改 - 自第一个版本以来它们始终保持不变。所以我们可以这样存储它:
所以问题是:以第二种方式存储它会不会更好,没有重复?这样,要获得用户帖子的当前版本,我们必须加入第一个版本并一直检查它的user_id。 或者在这种情况下可以存储重复字段吗?
附言这是有问题的,因为我们希望避免在整个版本中无法更改的值的重复和意外更改,因此我们希望将它们全部存储在一个地方
【问题讨论】:
-
只有傻瓜才会这样做#2
-
#1 无论如何都是非规范化的。
-
@Drew 那么最好的方法是什么?拆分到不同的表?
-
这是个人喜好问题。我为数据标准化而努力。上面的表格看起来像某些层次结构下的评论数据,在我的书中不应该包含非规范化数据。您需要在层次结构中显示其上方的一两个表,因为这里没有明确的含义。
标签: mysql postgresql database-design