Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在数据库中实现审查标志;最佳做法_Sql_Database_Flags - Fatal编程技术网

Sql 在数据库中实现审查标志;最佳做法

Sql 在数据库中实现审查标志;最佳做法,sql,database,flags,Sql,Database,Flags,我需要存储一些与某些实体相关的审阅标志。每个审阅标志只能与单个实体属性组相关。例如,表Parents有一个ParentsStatus标志,表ChildrenStatus有一组ChildrenStatus标志 在当前设计方案中,我有三个表: 查看类型:存储标志及其相关属性 查看位置:存储标志可以具有的值 审核:存储事务数据,即实际审核。这就像UsersToFlags: 问题是,我得到的反馈是,没有必要使用Reviews表,最好只在每个实体上存储实际的审查数据。例如,在Parents中添加一个额

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

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

  • 查看类型
    :存储标志及其相关属性
  • 查看位置
    :存储标志可以具有的值
  • 审核
    :存储事务数据,即实际审核。这就像UsersToFlags:
问题是,我得到的反馈是,没有必要使用
Reviews
表,最好只在每个实体上存储实际的审查数据。例如,在
Parents
中添加一个额外的列以保存
ParentsStatus
。他们认为这是一个更简单的解决方案,将数据分离出来对于我们的场景来说只是“过火”

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

空间不是问题

人们有什么强烈的意见吗

编辑:


这一评论适用于这三个答案。大家的共识是,关系方法是最好的,但我认为我需要阅读更多关于EAV模型的内容,因为从一些非常基本的阅读和它的相关链接来看,这似乎不是非常简单,我不想给自己挖一个洞。多亏了wildplasser。等我读多一点,我会再回过头来

哦,是的。他们的想法更简单,直到你想增强它。考虑到该计划,他们建议,如果每个实体需要两次审查,该怎么办。如果您想附加其他内容,如注释/注释,该怎么办。一旦他们发现他们的想法有多像一个充气的飞镖,你有什么办法去换一个更有用的?更不用说你需要一些识别状态字段的方法,比如列名以“\u status”结尾,或者你必须在某个地方硬编码


正确地操作并不是更多的工作,也不是更复杂,事实上,在许多方面,它更简单,并且可以以更低的成本处理易变的更改。

我喜欢将审阅表分开的一个原因是,您可以保存您可能还不想显示的更改(因为它尚未被审阅和批准)并且在新的dat获得批准之前,仍然保持旧的dat。我不知道你的情况是否需要这样


为了使将来的编程在需要显示更改时更加简单,可以编写一个显示新旧数据的视图

标准化总是比过早优化更可取。

我不确定我是否理解您的叙述-您能否提供一些示例数据,说明您希望在每个表中看到的内容(希望在正在考虑的两种布局下-显示以每种方式建模的相同数据)。我看不出问题。你所建议的(据我所知)基本上是一个EAV数据节点,除了来自特殊枚举的标志,比如domain(ReviewPositions表)@Damien_the_Unbeliver:如果有帮助的话,我可以编写一些示例数据。“给我几分钟时间。”wildpasser说。这并不是什么大问题,但我不得不将评论存储在实际实体上,这似乎是个坏主意。我做了相当多的搜索,但没有找到明确的答案,所以我问,似乎压倒性的意见是保持他们分开。