Database 3NF一对一关系争议
我在尝试用3NF设计数据库时遇到了问题。3NF中的数据库具有以下特征: -它是第二范式。 -它的表只包含不可传递地依赖于主键的列 我在网上看到很多人声称,如果你有一对一的关系,你应该强烈地考虑为什么不只是一张桌子,但是我对3NF的理解只是为了做到这一点。这是我目前的数据库:Database 3NF一对一关系争议,database,database-design,database-normalization,3nf,Database,Database Design,Database Normalization,3nf,我在尝试用3NF设计数据库时遇到了问题。3NF中的数据库具有以下特征: -它是第二范式。 -它的表只包含不可传递地依赖于主键的列 我在网上看到很多人声称,如果你有一对一的关系,你应该强烈地考虑为什么不只是一张桌子,但是我对3NF的理解只是为了做到这一点。这是我目前的数据库: 我曾尝试在3NF中创建此数据库,但到目前为止,我不确定是否正确拆分BOOK_STATS和BOOK_DETAILS表。我对它进行了分析,确定像文件类型和质量这样的东西根本不依赖于这本书,所以我不得不将它们分开。这是正确的还是我
我曾尝试在3NF中创建此数据库,但到目前为止,我不确定是否正确拆分BOOK_STATS和BOOK_DETAILS表。我对它进行了分析,确定像文件类型和质量这样的东西根本不依赖于这本书,所以我不得不将它们分开。这是正确的还是我需要更深入地了解它们被拆分的原因?将一个表拆分为多个具有相同主键的表既不会违反任何正常形式,也不会修复潜在的违规行为。通过考虑规范化尚未规范化的表所需的步骤,这很容易变得合理:所有这些方法都引入了主键不同于原始表主键的表。因此,引入具有相同主键的表不能是规范化步骤 我属于主张1-1关系应被视为合并到一个表的那一部分,除非有强烈的语义或物理原因将它们分开。但是,可能会对您的
图书详细信息
表提出以下问题:
- “书”的概念可以指两件事:一个逻辑实体,即作者、标题、内容或物理实例。正如您的模型所示,文件中包含的书籍也有相同的区别。奥威尔的1984可能存在于多个文件中,一个质量良好的PDF文件,一个质量一般的epub文件,具有不同的文件大小。或者一本大书可能被分割成多个文件。我不知道您的模型和应用程序的用途,但我会尝试涵盖像这样的真实世界现象,因为稍后添加它们将影响应用程序的大部分,而且成本高昂。因此,我可以想象将您的
表转换为一个book\u detail
表,该表与书籍具有1:n甚至m:n的关系media
- 对于
和文件质量
是否有预定义的值范围,如“优秀、优秀、平庸、差”、“pdf、epub、txt等”?在这种情况下,这些值应该是另一个表的一部分,您的文件类型
或book
将只包含该表中的id作为外键book\u detail
图书详细信息
表提出以下问题:
- “书”的概念可以指两件事:一个逻辑实体,即作者、标题、内容或物理实例。正如您的模型所示,文件中包含的书籍也有相同的区别。奥威尔的1984可能存在于多个文件中,一个质量良好的PDF文件,一个质量一般的epub文件,具有不同的文件大小。或者一本大书可能被分割成多个文件。我不知道您的模型和应用程序的用途,但我会尝试涵盖像这样的真实世界现象,因为稍后添加它们将影响应用程序的大部分,而且成本高昂。因此,我可以想象将您的
表转换为一个book\u detail
表,该表与书籍具有1:n甚至m:n的关系media
- 对于
和文件质量
是否有预定义的值范围,如“优秀、优秀、平庸、差”、“pdf、epub、txt等”?在这种情况下,这些值应该是另一个表的一部分,您的文件类型
或book
将只包含该表中的id作为外键book\u detail