数据库 主键 外键 唯一键区别

下面我通过一个小栗子来说明我们应该如何选择主键,外键和唯一键。 
现在我们想建立学生表,用来存储,一个系统的登陆信息。建表如下:

create table student4
(
  stu_id int primary key identity,--identity表示自增
  stu_name nvarchar(10) unique not null,
  stu_sex nchar(1) not null,
  stu_address nvarchar(100) unique not null,
  stu_email nvarchar(50)
 )
我们要求,以后再使用的过程,我们要让大家使用邮箱注册,并通过邮箱来登陆。

主键:
根据上面的需求,我们先说主键的选择。 
相信大家一看,我们可以使用邮箱登陆,那么邮箱一定是唯一的,那么用邮箱来做主键吧。其实不然,用邮箱做主键还是有问题滴。问题有如下四点。 
1、比如,我后期换邮箱呢,那不就惨了吗。 
2、如果其他的表已经关联的本学生表的主键——邮箱,那么在我们更换邮箱后,如果不修改其他表中的外键,那么就会报错。如果要是修改的话,可能工作量将会非常的大。 
3、另外,在查询邮箱的的时候,搜索速度非常的慢。 
4、如果多个表外键利用学生表的主键,那么就会导致空间的浪费 
为此,最好增加一个没有意义的编号为主键,不要 以业务逻辑的字段为主键,,比如,设置一个stu_id ,而不能以邮箱字段为主键

外键:
其他表,如果需要关联学生表,那需要在表中添加外键来关联学生表,那我们首先的是使用学生表中的主键,万不得已在选择唯一键。

唯一键
刚才我们在需求中说了,我们要用邮箱来注册和登陆,那么肯定需要让邮箱不能重复,并且,我们的邮箱又不是主键,那我们只能将邮箱设置为唯一键了。这样就能满足我们的需求了
总的来说,主键唯一标示表中的每一条记录,外键是主键的副本,从父表中复制出来的,用于建立父表和子表之间的关系,唯一键 确保表中某一个值得唯一性。主键保证了数据的唯一性,外键保证了数据的完整性。
主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值