PRIMARY KEY 约束
表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。当为表指定 PRIMARY KEY 约束时,Microsoft® SQL Server™ 2000 通过为主键列创建唯一索引强制数据的唯一性。当在查询中使用主键时,该索引还可用来对数据进行快速访问。如果 PRIMARY KEY 约束定义在不止一列上,则一列中的值可以重复,但 PRIMARY KEY 约束定义中的所有列的组合的值必须唯一。如下图所示,titleauthor 表中的 au_id 和 title_id 列组成该表的组合 PRIMARY KEY 约束,以确保 au_id 和 title_id 的组合唯一。当进行联接时,PRIMARY KEY 约束将一个表与另一个表相联。例如,若要确定作者与书名的对应关系,可以使用 authors 表、titles 表和 titleauthor 表的三向联接。因为 titleauthor 包含 au_id 和 title_id 两列,对 titles 表的访问可由 titleauthor 和 titles 之间的关联进行。

解决方案 »

  1.   

    对键的定义不理解
    书上的定义说:
    主键:如果一个属性能惟一标识元组, 且又不含有多余属性, 那么这个属性集称为候选键超键:在关系模式中, 能惟一标识元组的属性集称为超键请问超键的“值”是不是不能重复的?是。
    上面说的主键中“且又不含有多余属性”是什么意思比如 id 可以唯一标识元组(记录),id + name 也可以,应为光id就可以了,所以 name是多余的。name就是多余属性
      

  2.   

    比如 id 可以唯一标识元组(记录),id + name 也可以,应为光id就可以了,所以 name是多余的。name就是多余属性