sql - 在数据库中实现审查标志;最佳实践

标签 sql database flags

我需要存储一些与某些实体相关的审查标志。每个审核标志只能与单个实体属性组相关。例如表 Parents 有一个 ParentsStatus 标志,而表 Children 有一组 ChildrenStatus 标志。

在当前的设计方案中我有三个表:

  • ReviewTypes:存储标志及其相关的属性。
  • ReviewPositions:存储标志可以具有的值。
  • Reviews:存储交易数据,实际评论。就像 UsersToFlags: Flags in a database rows, best practices .

问题是我得到了反驳,说不需要 Reviews 表,最好只在每个实体上存储这个实际的评论数据。例如,向 Parents 添加一个额外的列以保存 ParentsStatus。他们认为这是一个更简单的解决方案,将数据分离出来对于我们的场景来说只是“矫枉过正”。

我不喜欢这个想法,因为这意味着每次我们想要添加一个新的审查标志时,我们都需要更新核心实体表以保存该标志。

空间不是问题。

人们有什么强烈的意见吗?

编辑:

此评论适用于三个答案。共识是关系方法是最好的,但我认为我需要从一些非常基本的阅读中阅读更多关于 EAV 模型的信息 Best beginner resources for understanding the EAV database model?及其相关链接看起来不是很简单,我不想给自己挖坑。感谢野生动物。一旦我多读了一点,我就会回来。

最佳答案

哦,是的。他们的想法更简单,直到你想加强它。鉴于该计划,他们提议如果每个实体需要两次审查会怎样。如果您想附加其他内容(例如注释/注释)怎么办?一旦他们发现他们的想法是多少充气飞镖靶,您需要做什么才能转向更有用的飞镖靶?更不用说您需要某种识别状态字段的方法,例如列名以“_Status”结尾的脆弱垃圾,或者您必须在某处对它们进行硬编码。

正确地完成它并没有那么多的工作,它并不复杂,事实上,在许多方面它更简单,并且它将以低得多的成本应对不可避免的变化。

关于sql - 在数据库中实现审查标志;最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915137/

相关文章:

sql - 嵌套的 SQL 查询搜索错误的表 (postgreSQL)

c++ - 如何使用标志变量为设计用于在数组中搜索通过用户输入提供的字符串的程序产生输出?

C# 标志解析

mysql - 在 SQL 中聚合跨 `group by` 的字符串?

mysql - 顺序 sql 树层次结构

c# - TransactionScope 无意中锁定了部分数据库

sql - Illuminate\Support\Fluent 类的对象无法转换为 int

database - 确保在多台机器上跨表生成唯一的 key

mysql - 是否需要全表扫描来计算某些属性大于 x 的行?

java - 打印所有 JVM 标志