gpt4 book ai didi

sql - 在多对一表中使用哪个外键

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:05 26 4
gpt4 key购买 nike

假设我有一个 Books 表,其中包含 Book_ID(主键)、ISBN(唯一)和其他几个列,例如 Title/author/etc。

我有另一个表 Sales,它有主键 Sale_ID,一个链接到 Books 的外键,以及其他包含 Sales 信息的字段。只有带有 ISBN 的书籍才会有销售。将 Book_ID 或 ISBN 作为主键是否更好的数据库设计。注意:无论选择哪个外键,我都将加入 Sales to Books。

更新:一些书籍没有 ISBN,因为它们没有与它们一起出版。但是,我预计(至少在未来几年内)用户无法出售它们,因为我没有系统来确保没有 ISBN 的给定书籍不会重复。

最佳答案

一般来说,我想我会选择 surrogate primary key book_id 作为外键。

如果您将非主键 ISBN 用作外键,我可以确定一些潜在问题:

  • 您可能缺少或未知某本书的 ISBN。如果那本书卖了,你会怎么做?
  • 您的 ISBN 可能不正确。要对其进行编辑,您必须更新所有将其用作外键的表。
  • 您将来可能想开始销售没有ISBN 的图书。一开始为什么要存储没有 ISBN 的书籍?
  • book_id 上的索引应该比 ISBN 字段上的索引紧凑得多。

关于sql - 在多对一表中使用哪个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713789/

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