只有一列的表是否应该有主键?

时间:2012-06-18 08:13:19

标签: sql

例如,我有一个名为programs的表,另一个名为formatformat表包含一个名为format的列,它有三个可能的值:zip,rar和exe。格式表是否应该有主键?

4 个答案:

答案 0 :(得分:3)

想想如果你的表包含以下内容会发生什么:

zip
rar
exe
exe

如果您没有看到任何问题,那么您的表格不需要PK。

答案 1 :(得分:0)

如果值是唯一的,那么可能不是。但是,如果您没有值的唯一索引,则可能存在重复项,这将使识别单行变得困难。此外,使用具有已知固定长度(例如整数ID)的PK将有助于提高性能并保持索引碎片化。另外,如果您需要加入此表,最好通过使用外键(在某些RDBMS中需要PK)来引用格式的ID而不是值。

答案 2 :(得分:0)

如果您有一个名为Programs的表和一个名为Format的表,其中包含一堆值,为什么不在FormatId表中使用Program列并使用Format表中的一个(当前是三个)外键值?

请参阅有关规范化的这些说明:http://en.wikipedia.org/wiki/Database_normalization(我确定您知道这一点,但也许其他人可能不会阅读此问题。)

答案 3 :(得分:0)

在大多数情况下,只有一列的表将具有唯一值,作为重复值,单个列中的值也没有意义。

所以,在你的情况下,格式不会重复(这就是我的想法),所以制作主键没有坏处,但是

1)它对该字段强制建立索引(你想要吗?)

2)将来,如果您打算将此链接到另一个表,请确保将其用作主键,而不是为主键引入format_id之类的内容。如果您这样做,那么请立即将其作为主键。