我需要存储一些与某些实体相关的评论标志。每个审核标志只能与单个实体属性组相关。例如表Parents
has a ParentsStatus
旗帜和桌子Children
有一组ChildrenStatus
flags.
在当前的设计方案中,我有三个表:
-
ReviewTypes
:存储标志及其相关属性。
-
ReviewPositions
:存储标志可以具有的值。
-
Reviews
:存储交易数据、实际评论。它就像 UsersToFlags:数据库行中的标志,最佳实践 https://stackoverflow.com/questions/124844/flags-in-a-database-rows-best-practices.
问题是我遭到拒绝,认为没有必要Reviews
表,最好只存储每个实体的实际评论数据。例如添加一个额外的列Parents
持有ParentsStatus
。他们认为这是一个更简单的解决方案,并且对于我们的场景来说,将数据分离出来只是“矫枉过正”。
我不喜欢这个想法,因为这意味着每次我们想要添加新的审核标志时,我们都需要更新核心实体表以保存该标志。
空间不是问题。
人们有什么强烈的意见吗?
Edit:
此评论适用于三个答案。共识是关系方法是最好的,但我认为我需要更多地阅读 EAV 模型,因为一些非常基本的阅读了解 EAV 数据库模型的最佳初学者资源? https://stackoverflow.com/questions/494158/best-beginner-resources-for-understanding-the-eav-database-model及其相关链接似乎并不是超级简单,我不想给自己挖坑。感谢野普拉瑟。一旦我读得更多一点,我就会循环回来。
哦是的。他们的想法更简单,直到你想增强它。鉴于该计划,他们提出如果每个实体需要进行两次审查会怎样。如果您想附加其他内容(例如注释/注释)怎么办?一旦他们发现他们的想法有多像一个充气飞镖靶,你需要做什么才能换成更有用的飞镖靶呢?更不用说您需要某种方式来识别状态字段,例如列名以“_Status”结尾的脆弱垃圾,或者您必须在某个地方对它们进行硬编码。
正确地做到这一点并不需要更多的工作,也不会更复杂,事实上在很多方面它更简单,并且将以低得多的成本应对不可避免的变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)