主键与外键

在现实世界中,事物之间存在着联系,这种联系反映到数据库中就体现为表之间的联系。

例一、在图1中,学生表存储学生信息,系表存储系的信息。但学生表和系表之间是有联系的:每个学生都属于一个系,而一个系有多个学生。

(图1)

在数据库中,如何存储这种联系的信息呢?就要借助“主键-外键”关系实现。例一中,系号“是系表的主键,学生表中“系号”就是外键,(主外键关系的前提是两张表中有相同的属性

主键-外键就是连接两个表的纽带。通过主键外键的等值连接,就可以将不同表里的相关记录连接在一起,从而实现数据合并。利用主键-外键,可以查询每个学生所在系的信息,也可以查询某系所包含的学生信息。

当两个表通过“外键-主键”建立了联系之后,就要保持两表数据的一致性。例如在插入学生记录的同时,外键的值(系号)必须是系表中主键的有效值(必须有这个系),或者是空值(学生的系暂未确定);又如,在删除系表记录时,如果在学生表里还有该系学生的记录(该系还有学生在就读),那么系记录就不能删除。

例二、下面再分析一个员工信息管理系统的例子。该数据库中建有员工基本信息表(person)、部门编码表(deparment)和学历编码表(education),如图2所示:

(图2)

部门表保存了部门编号和部门名称,部门编号(DepID)是主键,部门编号在表中具有唯一性,这样就可以用部门编号来标识一条记录。

学历表保存了学历编号和学历名称,学历编号(EduID)是主键,学历编号在表中具有唯一性,这样就可以用学历编号来标识一条记录

员工表存储员工的基本信息,包括工作证号、姓名、部门编号、学历编号等字段,工作证号(ID)是该表的主键。在该表中,Department列是一个外键,匹配部门表中的DepID主键;Education列也是一个外键,匹配学历表中的EduID主键。利用外键-主键的连接,就可以查询出张三的部门是经理室,学历是硕士。

利用“外键-主键”关系能简化数据库设计,减少数据冗余。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值