database - 这个设计是否符合 2NF?

标签 database oracle database-design normalization database-normalization

好的,我有 2 张 table 。带有主键 book_id 和另一个名为 title 的字段的书表。以及一个带有主键 author_id 和字段 first_name、last_name 和外键 book_id 的作者表。

我的设计符合 2NF 吗?

最佳答案

通常(通俗地说),一级规范化意味着:

  • 不可能出现重复行。
  • 行或列中没有固有的顺序。
  • 每个“单元格”只包含一条信息。

对于 2NF,您有额外的约束,即每一列都依赖于整个键(直接或间接通过另一个非键列)。

所以我会说在这种情况下它符合 2NF,因为它符合 1NF 的标准并且这本书确实取决于作者。

但是,它仍然不一定是好的设计,特别是因为作为一般规则,您应该始终从 3NF 开始。更好的解决方案是完全成熟:

books:
    book_id
    title
authors:
    author_id
    name
books_and_authors:
    book_id
    author_id

这样一来,书籍和作者之间就有了多对多(包括零)关系。

关于database - 这个设计是否符合 2NF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596590/

相关文章:

oracle - Oracle中可变长度时空数据的动态数据库设计(需要架构设计)

database - 如何在数据库中存储一个或多个复选框值?

sql - 关系数据库设计问题 - 代理键还是自然键?

sql - oracle 11g sql查询从两个表连接中获取数据

java - 如何将 CSV 文件中的二维数组导入到 JTable 中

Oracle PL/SQL 网络请求并行化

postgresql - 重命名 postgres 表会删除现有索引吗?

java - Spring 悲观锁定

c# - 谁可以访问 MVVM 模式中的数据库

java - Servlet 捕获唯一约束异常