主要,唯一和外键约束和索引之间有什么区别?

时间:2009-11-07 09:25:06

标签: sql-server database oracle constraints indexing

primaryuniqueforeign key constraints以及indexes之间有什么区别?

我在Oracle 10gSQL Server 2008

工作

7 个答案:

答案 0 :(得分:25)

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

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

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

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

请参阅Differences between INDEX, PRIMARY, UNIQUE, FULLTEXT in MySQL?

答案 1 :(得分:24)

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

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

答案 2 :(得分:7)

以下是一些参考资料:

Primary & foreign key Constraint.

  

主键:主键是字段   或唯一的字段组合   识别表中的记录,这样   可以找到个人记录   没有困惑。

     

外键:外键(有时候   称为引用键)是一个关键   用于将两个表链接在一起。   通常,您使用主键   从一个表中的字段并插入它   进入另一张桌子   外键(它仍然是主键   关键在原表中。)

另一方面,

Index是一个可以应用于某些列的属性,以便可以加快在这些列上完成的数据检索。

答案 3 :(得分:4)

键/索引:键是LOGICAL数据库设计的一个方面,索引是PHYSICAL数据库设计的一个方面。密钥对应于完整性约束,索引是物理记录在执行这些约束时可以有用的值的技术。

主要/外来:“主要”键是一组属性,其值必须形成在整个表中唯一的组合。可以存在多个这样的集合(> 1个密钥),并且单词“primary”是早期设计者被迫选择这些多个密钥中的一个作为“最重要/相关的密钥”的残余。 ”。其原因主要是与外键相结合:

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

唯一:用于表示索引不能接受重复条目的关键字。独特的索引显然是强制执行主键的绝佳方法。如果在LOGICAL设计的背景下使用“独特”这个词,它就是多余的,草率的,不必要的和令人困惑的。键(主键,即)根据定义是唯一的。

答案 4 :(得分:3)

1) primary key 是一组一个或多个属性,用于唯一标识关系中的元组。

2) foreign key 是来自关系方案的一组属性,可以从另一个关系方案中唯一地标识元组。

答案 5 :(得分:3)

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

答案 6 :(得分:1)

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