1

例如,我有一个名为的表programs和另一个名为format. 这些format表包含一个名为 format 的列,它具有三个可能的值:zip、rar 和 exe。格式表应该有主键吗?

4

4 回答 4

3

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

zip
rar
exe
exe

如果您没有发现问题,那么您的桌子不需要 PK。

于 2012-06-18T08:17:25.147 回答
0

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

于 2012-06-18T08:16:07.367 回答
0

如果您有一个名为Programs的表和一个Format用一堆值调用的表,为什么不在表中有一个FormatIdProgram并使用表中的(当前三个)外键值之一Format

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

于 2012-06-18T08:16:11.300 回答
0

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

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

1)它对那个字段强加一个索引(你想要那个吗?)

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

于 2012-06-18T08:17:05.197 回答