gpt4 book ai didi

sql - 这些表是否遵守 3NF 数据库规范化?

转载 作者:太空狗 更新时间:2023-10-30 01:49:30 25 4
gpt4 key购买 nike

AUTHOR

  • Author_ID, PK
  • First_Name
  • Last_Name

标题

  • TITLE_ID, PK
  • 姓名
  • Author_ID, FK

DOMAIN

  • DOMAIN_ID, PK
  • 姓名
  • TITLE_ID, FK

读者

  • READER_ID, PK
  • First_Name
  • Last_Name
  • 地址
  • CITY_ID, FK
  • 电话

CITY

  • CITY_ID, PK
  • 姓名

BORROWING

  • BORROWING_ID,pk
  • READER_ID, fk
  • TITLE_ID, fk
  • 日期

历史

  • READER_ID
  • TITLE_ID
  • DATE_OF_BORROWING
  • DATE_OF_RETURNING

    1. 这些表符合 3NF 数据库规范化吗?
    2. 如果 2 位作者为同一个标题合作怎么办?
    3. Address 列应该有自己的表吗?
    4. 当读者借书时,我在 BORROWING 表中创建一个条目。他还书后,我删除了那个条目,并在 HISTORY 表中创建了另一个条目。这是一个好主意吗?我会违反任何规则吗?我是否应该改用一个带有 DATE_OF_RETURNING 列的 BORROWING 表?

最佳答案

这看起来有点像作业题,但还是让我来回答吧:

  1. 不,这些表不在 3NF 中;带有代理键的表很少。例如,READERS 表有两个候选主键:READER_ID 和 (First_Name, Last_Name)。当然,这取决于您的问题领域:如果您愿意让两个独立的人具有相同的姓名、地址和电话,那么它就属于 3NF。此外,根据我的经验,3NF 通常带来的麻烦多于它的值(value)。
  2. 同样,这取决于您的问题领域。您可以通过中间表在 AUTHORS 和 TITLES 之间创建多对多关系。
  3. 参见 1。
  4. 您可以放弃 BORROWING 并创建一个完美运行的应用程序,因为 HISTORY 包含您需要的所有信息。您必须跟踪的信息越少越好。

关于sql - 这些表是否遵守 3NF 数据库规范化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2612848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com