0

当数据库表中存在主键和唯一键时会出现什么异常情况?我想知道主键和唯一键是两个不同的东西吗?其实这个问题是在面试的时候问我的。。

4

3 回答 3

2

我的猜测是面试官所指的“异常”来自关系数据库的规范化规则。你可以在很多地方找到规则,包括Wikipedia,但我敢打赌他说的是“插入异常”、“删除异常”和“更新异常”。

假设,如果您只使用唯一键而不是主键更新记录,则可能会发生更新异常(因为其他表中可能有更多记录)。我不确定,但是如果您查看这些规则,您自己可能会有更好的答案。

于 2013-07-09T14:45:34.627 回答
0

当然两者是不同的。

主键唯一地定义了表的每一行。它不能为空。并且只能有一个主键(它可能是简单的或复合的)。

唯一键指出,该列必须包含唯一值。它可能包含空值。可以有尽可能多的具有唯一键约束的列。

主键=唯一键+许多其他约束。

希望你清楚。

于 2013-07-09T13:41:00.023 回答
0

主键唯一键,添加了键不能为 NULL 的约束。从设计的角度来看,主键的目的是标识表中的一行。其他唯一键只是“附加为唯一”,但不应用于“识别”一行(并且在允许 NULL 时不能使用)。

现在,当一张桌子有两个键时,说到“异常”,嗯……更值得怀疑?!?事实上,这是一个很常见的情况。也许问题是关于通过主键查询与通过唯一键查询之间的“差异” - 因为在后一种情况下可能(多行具有)空值?

于 2013-07-09T13:42:16.437 回答