在数据库设计中使用子类型或单独的表进行注释
设计数据库时,出现一个常见问题:是否应该子类型是在单个表中使用,还是应该为不同类型的数据创建单独的表?在本例中,我们有一个包含三个主要表的数据库:BOOKS、ARTICLES 和 NOTES。最初,使用单个NOTES表来存储书籍和文章的注释。然而,人们对该设计的规范化和效率提出了担忧。
一种潜在的替代方法是利用五个表:BOOKS、ARTICLES、NOTES、BOOK_NOTES 和 ARTICLE_NOTES。这种结构允许单独存储书籍注释和文章注释,并在注释表中使用更简单的列定义。
使用子类型还是单独的表之间的决定取决于数据的具体性质。当子类型具有唯一且不同的列时,通常使用子类型。然而,在这种情况下,BOOK_NOTES 和 ARTICLE_NOTES 表在结构上没有显着差异。
更优化的方法可能涉及创建一个超类型表 Publication,其中 Book 和 Article 作为子类型。这将允许单个注释表具有发布的外键。由于 Publication 的主键与 Book(或 Article)的主键相同,因此它有利于 Publication、Book 或 Article 的高效连接。此设计还提供了添加新出版物类型(例如杂志)的灵活性,而无需修改 NOTES 表。
例如,以下表架构举例说明了这种方法:
TABLE Publication ( ID (PK)
以上是注释的子类型或单独的表:哪种数据库设计最好?的详细内容。更多信息请关注PHP中文网其他相关文章!