Sql server 规范化多值依赖数据库(4NF/5NF)

Sql server 规范化多值依赖数据库(4NF/5NF),sql-server,database-design,normalization,redundancy,database-normalization,Sql Server,Database Design,Normalization,Redundancy,Database Normalization,我计划做一个工作门户数据库。这里我有一些候选人订阅了一些通知 (当然,候选者姓名将是ID&候选者有更多与此人关联的列,这些列未显示。) 我不知道这是第四个还是第五个范式问题!我需要一些帮助来减少冗余 我可以在不丢失iEnabled信息的情况下将其拆分为类似这些表的内容,以便删除冗余吗 及 这是可能的还是不可避免的冗余?从任何角度看,这都不是正常形式的问题 如果希望保持第一个表的原样(包括布尔属性),那么您拥有的就是一个约束。大意是,在第一个表中,必须为(候选、通知类型)的每个可能组合显示一

我计划做一个工作门户数据库。这里我有一些候选人订阅了一些通知

(当然,候选者姓名将是ID&候选者有更多与此人关联的列,这些列未显示。) 我不知道这是第四个还是第五个范式问题!我需要一些帮助来减少冗余

我可以在不丢失iEnabled信息的情况下将其拆分为类似这些表的内容,以便删除冗余吗


这是可能的还是不可避免的冗余?

从任何角度看,这都不是正常形式的问题

如果希望保持第一个表的原样(包括布尔属性),那么您拥有的就是一个约束。大意是,在第一个表中,必须为(候选、通知类型)的每个可能组合显示一行。但这不是个问题!只有在某种程度上可以确定布尔值应该是什么的情况下,才可能出现NF问题,只给出候选值或只给出通知类型

在这种方法中,您错误地认为是“冗余”的正是这种约束的存在,以及它在更新数据库时给您带来的困难


放弃布尔属性,只写第一个表中具有“true”的行。现在您不再有这种约束,只有一个常规的“连接”表将候选对象链接到启用的通知类型,就像世界各地的数据库中有无数的“连接”表一样。

从任何角度看,这都不是一个正常形式的问题

如果希望保持第一个表的原样(包括布尔属性),那么您拥有的就是一个约束。大意是,在第一个表中,必须为(候选、通知类型)的每个可能组合显示一行。但这不是个问题!只有在某种程度上可以确定布尔值应该是什么的情况下,才可能出现NF问题,只给出候选值或只给出通知类型

在这种方法中,您错误地认为是“冗余”的正是这种约束的存在,以及它在更新数据库时给您带来的困难


放弃布尔属性,只写第一个表中具有“true”的行。现在,您不再有这种约束,只有一个常规的“连接”表将候选对象链接到启用的通知类型,就像世界各地的数据库中有无数的“连接”表一样。

@BeediKumaraN:是的,您的设计的问题是,如果表中不存在任何带有
('Sasi','Profile View')
、不带有
True
False
的行,我们该假设什么?@Erwin Smout:谢谢,这肯定会通过使用连接表来解决。@BeediKumaraN:是的,您的设计的问题是,如果表中不存在任何带有
('Sasi','Profile View')
、不带有
True
、也不带有
False
)的行,我们应该假设什么?@Erwin Smout:谢谢,这肯定会通过使用连接表来解决。