到目前为止,我一直在创建代理键,作为每个表的主键。我对此很满意。
但是,对于依赖于其他表的弱实体,我已经读过,最好使用外键和弱实体的一个属性来创建一个复合键,作为首要的关键。
这个方法有什么好处,还是可以继续为我的所有表使用代理键?
答案 0 :(得分:1)
我写过的三分之二的表格都是“自然的”PRIMARY KEY
。有时候它是“复合的”。甚至有时候我会在PK中的另一个专栏之后放置代理。
我用于决定的原因因应用程序和表的大小而异:
id AUTO_INCREMENT
通常只是浪费空间,速度等。TEXT
和BLOB
列不能在PK中。以下是3个例子,其中复合天然PK明显优于代理:
注意:“弱实体”和“外键”不是我决策中的考虑因素。