2009-11-07 130 views

回答

20

主键和唯一键是实体完整性约束

主键允许表中的每一行进行唯一标识,并确保没有重复的行存在,并且没有输入空值。

唯一键约束用于防止表中行的键值重复并允许空值。 (在oracle中,一个null不等于另一个null)。

  • KEY或INDEX是指一个正常的非唯一索引。索引的非重叠值是允许的,因此索引可能包含索引所有列中具有相同值的行。这些索引不会对您的数据执行任何结构,因此它们仅用于加快查询速度。
  • UNIQUE指索引中所有行必须唯一的索引。也就是说,对于此索引中的所有列,同一行可能不具有与另一行相同的非NULL值。除了用于加快查询速度外,UNIQUE索引还可用于强制执行数据结构,因为数据库系统不允许在插入或更新数据时破坏此不同值规则。您的数据库系统可能允许在允许NULL值的列上使用UNIQUE索引,在这种情况下,如果两行都包含NULL值(NULL被认为不等于自身),则允许两行相同,尽管这可能是不受欢迎的,具体取决于您的应用。
  • PRIMARY的行为与UNIQUE索引完全相同,除了它总是被命名为“PRIMARY”,并且在表上可能只有一个(并且总是应该有一个;尽管一些数据库系统不强制执行此操作)。 PRIMARY索引旨在用作唯一标识表中任何行的方法,因此不应将其用于允许NULL值的任何列。您的PRIMARY索引应始终位于足以唯一标识一行的最小列数上。通常,这只是一列包含一个唯一的自动递增数字,但如果还有其他任何可以唯一标识一行的列(如国家/地区列表中的“countrycode”),则可以使用该列。
  • FULLTEXT索引与上述不同,它们在数据库系统中的行为差异更大。与上面三种典型的b-tree(允许从最左列开始选择,排序或范围开始)或散列(允许从最左列开始选择)不同,FULLTEXT索引仅用于全文搜索MATCH()/ AGAINST()子句。

看到Differences between INDEX, PRIMARY, UNIQUE, FULLTEXT in MySQL?

+0

注:SQL Server的唯一约束和索引处理空值,如果他们是平等的,这样“在这种情况下,如果两行都包含NULL值,则允许两行相同。“对于SQL Server不是这样。 – 2009-11-07 23:29:54

4

这里有你一些参考:

Primary & foreign key Constraint.

主键:主键是字段的字段 或组合唯一 标识一个表中的记录,以便 单个记录可以位于 没有混淆。

外键:外键(有时称为引用键 )是用于将两个表链接在一起的键 。 通常情况下,您从一个表中获取主键 字段,并将其 插入另一个表,其中它变为 外键(它仍然是原始表中的主键 键)。

Index另一方面,是一种属性,您可以将其应用于某些列,以便可以加快在这些列上完成的数据检索。

2

键/索引:一个键是一个逻辑数据库设计的一个方面中,一个索引是物理数据库设计的一个方面。关键字与完整性约束相对应,索引是一种物理记录值的技术,可以在执行这些约束时有用地应用这些值。

主键/外键:“主键”是一组属性,其值必须形成整个表中唯一的组合。可以有多个这样的组合(> 1个键),而“主要”这个词是早期设计师被迫选择多个键中的一个作为“最重要/最重要”的剩余部分。 。原因主要是与外键结合使用:

与“主键”一样,“外键”也是一组属性。这些属性的值必须组成一个组合,它是被引用表中现有的主键值。我不知道这条规则今天在SQL中究竟有多严格。无论如何,术语仍然存在。

唯一:用于指示索引不能接受重复条目的关键字。唯一索引显然是强制执行主键的极好方法。如果在LOGICAL设计的上下文中使用“unique”这个词,这是多余的,草率的,不必要的和混乱的。按键(即主键)根据定义是唯一的。

17

主键:唯一标识每行 它不能为空。 它不能重复。

外键: 创建两个表之间的关系。 可以为空。 可以是重复的  

+0

是否所有的外键都是其他关系的主键?如果不是,那么null属性将如何唯一标识。 – sidgupta234 2016-06-24 12:51:06

3

1)一种primary key是一组一个或多个属性的唯一识别关系中的元组。

2)foreign key是一组从关系方案,其可被唯一地识别的元组氟利昂另一关系方案属性。

+2

元组是标识对象特征的数据值的集合。 – 2012-02-04 14:17:10

3
  1. 主键是一列或一组列,用于唯一标识表中的一行。主键应该简短,稳定和简单。外键是表中的字段(或字段集合),其值必须与第二个表的主键的值相匹配。通常,外键位于与要求匹配其主键的表不同的表中。一个表可以有多个外键。
  2. 主键不能接受空值。外键可以接受多个。
  3. 我们在表中只能有一个主键。我们可以在一个表中有多个外键。
  4. 默认情况下,主键是聚簇索引,数据库表中的数据按聚簇索引的顺序进行物理组织。外键不会自动创建索引,聚簇或非聚簇。您可以手动创建外键索引。
0

主键主要是防止重复和显示的列的唯一性 外键主要表现在两个表的关系