gpt4 book ai didi

database-design - 每 table 真的都需要PK吗?

转载 作者:行者123 更新时间:2023-12-01 12:52:17 24 4
gpt4 key购买 nike

我正在创建一个数据结构,其中一个表没有任何明确的唯一性。

这是一个保存付款条目的表(因此两个条目可能相同)

它将在一对多的基础上进行链接。即返回帐号 = x 的所有行

它将用于显示,不更新或删除仅插入。

我停下来考虑这个表是否需要主键,而我的大学坚持认为无论如何每个表都应该有一个主键。所以他添加了一个递增的 id(使用序列)。

对我来说这意味着 有一个序列正在使用资源而没有真正贡献任何东西。 在永远不会使用但会产生开销的表上创建索引。 如果我需要在紧急情况下删除某一行,我可以使用内置的 rowid。

我知道 table 应该有主键,但真的每张 table 都需要主键吗?我错过了什么吗?谢谢你的时间。

最佳答案

您的表几乎肯定需要一个主键。身份证号不是答案。

一个主键它的等价物。 (例如,NOT NULL UNIQUE 约束。)

如果没有 ID 号就无法区分一件事,那么 有 ID 号也无法区分一件事。

如果没有 key ,付款条目表最终可能看起来像这样。

account_id  payment_type  payment_amount
--
10167 cash $10.00
10167 cash $10.00
10167 cash $10.00
10167 cash $10.00

关于付款的常见查询可能包括

  • 帐户 10167 已经支付了多少笔款项?
  • 帐户 10167 已支付了多少?

您可能想回答“4”和 40.00 美元。但是其中两个条目是重复的。 (可能是编程错误。有时候我会收到“Hello, world”的挑战。你不能指望我总能把这些复杂的东西弄对。)

如果您更改我的原始表格以获取 ID 号,您最终会得到这个。

id    account_id  payment_type  payment_amount
--
1 10167 cash $10.00
2 10167 cash $10.00
3 10167 cash $10.00
4 10167 cash $10.00

而且您仍然无法判断是否有两个重复条目。

关于database-design - 每 table 真的都需要PK吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550076/

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