【发布时间】:2012-01-08 12:33:59
【问题描述】:
我有一个物品清单。这些物品中的大部分都没有库存。 item 表有 id、name、description。项目的数量存储在另一个名为 inventory 的表中。库存表具有 item_id 和库存商品的数量。
库存表需要主键吗?如果是这样,我应该使用串行密钥还是复合密钥?表什么时候可以没有主键?
编辑:感谢大家提供的非常丰富的信息。除了极少数例外,我现在将始终拥有主键。我还学到了更多关于串行键和复合键的知识。
【问题讨论】:
-
ANY 真实数据表需要一个主键 - 这是唯一标识表中每一行的方法。为什么你会不想要一个 PK 超出我的范围......我在表上没有主键的唯一情况可能是用于批量加载数据或其他东西的临时表就这样……
-
@mark_s 与这个问题没有任何联系,但我个人认为,在非常特殊的情况下,我可以比基于 PK 的表更好地拥有和利用堆 8-) 让我们去聊天?
-
@mark_s 是的,确切地说,只有批量加载的堆规则 8-)
-
@OlegDok:暂存表是没有集群 PK 的堆/表的唯一现实案例
-
@gbn 就是这个意思,过段时间@dba.se会有一个关于PK的问题
标签: sql key primary-key composite-key composite-primary-key