主键与索引,主键与外键的关系

简单来讲 : 主键用来标识记录,索引用来加速查询。 

主键一定是唯一性索引,唯一性索引并不一定就是主键
    所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。

    主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。

2.
    一个表中可以有多个唯一性索引,但只能有一个主键

3.

    主键列不允许空值,而唯一性索引列允许空值

4.

索引可以提高查询的速度.
其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索的速度

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiyupiaopiao/archive/2008/07/21/2686774.aspx

  主键与外键的关系:  这需要理清几个概念: 1)候选键: 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。 2)主键:当有多个候选码时,可以选定一个作为主码,选定的候选码称主键 3)外键: 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。举个例子: 有两个关系: student(s#,sname,d#),即学生这个关系有三个属性:学号,姓名,所在系别dep(d#,dname),即院系有两个属性:系号、系名则s#、d#是主键,也是各自所在关系的唯一候选键,d#是student的外键。  

主键是定义一个表中起主要作用的数据项,这些数据项的数据在表中是唯一的,同时系统按主键为表建立索引。

外键是定义一个表中的某数据项的数据,要参照另一个表的主键数据。既没有在另一个表的主键数据中出现的数据,不允许在这个表的外键数据项中出现。

主键:表中记录的唯一标识

外键:依赖于别的表的数据

唯一键:在表中唯一

键是一个或多个字段的组合

唯一键:可以确定一条记录的字段(或字段组合),一张表可以有多个唯一键,正如可以识别你的身份的可以是身份证,学生证,军人证

主键:你把唯一键的一个选做主键,一张表只能有一个主键

外键:所定义的外键是另一张表的主键,

主键:表中记录的唯一标识,外键:依赖于别的表的数据,唯一键:在表中唯一。

主键和唯一键的一个区别:主键是不允许为NULL的,唯一键则可以,当然你可以加上NOT NULL来限制它

主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。

外键:

若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。

A为基本表,B为信息表。

在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份证号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份证号一样,必须是每个记录的值都不同,这才能根据主键的值来确定不同的记录。

什么是外键?

说明你的表A中的某项a,是引用表B的某列b

为什么要使用外键?
RDBMS的基本概念,可以维护数据库的完整。

如何来用,涉及到数据库的定义。

唯一约束和主键的区别是什么?

唯一性约束

唯一性约束所在的列允许空值,但是主键约束的列不允空值。

可以把唯一约束放在一个或者多个列上,但是,唯一性约束所在的列并不是表的主键列。

唯一性约束强制在指定的列上创建一个唯一性索引,在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。

主键:

用于标识某行而且与之相关

是不可能更新

不应该允许空

唯一域/字段

用于作为访问某行的可选手段。

只要唯一就可以更新

可以为空

注意唯一和主键的区别,它们都是创建一个唯一的索引,一个表格仅含有一个主键约束列,但是,它有可能在其他列中含有许多的唯一约束。

 


你可能感兴趣的:(oracle)