1

在数据库的同一个表中,主键和声明为UNIQUENOT NULL的属性有什么区别?

4

2 回答 2

3

表中只能有一个主键,并且不能为空。您不必为主键显式指定NOT NULL属性。

表中可以有多个唯一键。唯一键可以为空

当您将任何列指定为NOT NULL时,这意味着您不能将该列保留为 NULL

编辑:-

根据您的评论,您的表中不能有多个主键

此外,唯一键约束在实践中并不意味着 NOT NULL 约束。除了为唯一键编写NOT NULL有什么用处,因为这是主键和唯一键之间的唯一区别。

于 2013-10-05T17:02:53.577 回答
0

不幸的是,该 SQL 约束被命名为主键,因为它混淆了逻辑实体主键和实体的物理存储主键的相关但不同的概念。虽然逻辑主键和物理主键都使用相同的字段当然是可能的,而且这种情况并不罕见,但这不是必需的,也经常是不可取的。

逻辑实体主键是数据库教科书中讨论关系理论时提到的对象。规范化关系结构时所指的是这个对象,它(当然)是逻辑模型中实体存在的候选键之一。

物理存储主键物理模型中的一个属性,可能是实体逻辑模型中定义的那些属性的补充,DBMS 使用它来唯一标识逻辑实体实例的存储。这是在定义实体存储的(物理)模式时在主键约束中引用的对象。当此物理存储主键逻辑实体主键不同时,最常见的原因是人工键已附加到逻辑属性,以便:

  • 启用逻辑实体主键中的字段更新;
  • 通过成为外键引用的更窄键来提高性能,请参阅

所有逻辑实体候选键都应在具有唯一性约束的物理模型中定义。只有物理存储主键成为主键约束。

于 2013-10-06T00:15:20.907 回答