【发布时间】:2012-06-06 13:24:29
【问题描述】:
我需要存储一些与某些实体相关的评论标志。每个审查标志只能与单个实体属性组相关。例如表Parents 有一个ParentsStatus 标志,而表Children 有一组ChildrenStatus 标志。
在当前的设计方案中,我有三个表格:
-
ReviewTypes:存储标志及其相关的属性。 -
ReviewPositions:存储标志可以具有的值。 -
Reviews:存储交易数据,实际评论。就像 UsersToFlags:Flags in a database rows, best practices。
问题是我被反驳说不需要Reviews 表,最好只将这些实际评论数据存储在每个实体上。例如,向Parents 添加一个额外的列来保存ParentsStatus。他们认为这是一个更简单的解决方案,而将数据分离出来对于外部场景来说只是“矫枉过正”。
我不喜欢这个想法,因为这意味着每次我们想要添加一个新的审查标志时,我们都需要更新核心实体表以保存该标志。
空间不是问题。
人们有什么强烈的意见吗?
编辑:
此评论适用于三个答案。共识是关系方法是最好的,但我认为我需要从一些非常基本的阅读Best beginner resources for understanding the EAV database model? 及其相关链接中阅读更多关于 EAV 模型的内容,它似乎不是超级简单,我不想要给自己挖个洞。感谢wildplasser。一旦我阅读更多内容,我将返回。
【问题讨论】:
-
我不确定我是否理解您的叙述 - 您能否提供一些示例数据,说明您希望在每个表格中看到的内容(希望在正在考虑的两种布局下 - 显示相同的数据建模每种方式)。
-
我没有看到问题。你所提议的(据我所知)基本上是一个 EAV 数据节点,除了来自一个特殊的类似枚举的域(ReviewPositions 表)的标志
-
@Damien_The_Unbeliver:如果有帮助,我可以做一些示例数据。带我几分钟。
-
@wildpasser。这不是什么大问题,但我被推回去将评论存储在实际实体上,这似乎是个坏主意。我进行了相当多的搜索,但没有找到明确的答案,因此我问道,似乎压倒性的意见是将它们分开。