国开《数据库基础与应用》第三章 3-3-3:第一范式规范化举例
3-3-3:第一范式规范化举例
例1:设一个通信录关系模式为T(姓名,性别,单位,电话(长途区号,办公电话,家庭电话)),假定对应的关系实例如下表1所示。
表1 不规范化的通信录关系表
姓名 | 性别 | 单位 | 性别年龄职务 | ||
---|---|---|---|---|---|
长途区号 | 办公电话 | 家庭电话 | |||
王明 | 男 | 天津大学 | 022 | 82310542 | 64356622 |
张晶 | 女 | 东北化工 | 024 | 62311259 | 30480032 |
刘芹 | 女 | 华联商场 | 021 | 38052647 | |
张鲁 | 男 | 实验二中 | 022 | 62445513 | 73559097 |
史良 | 男 | 四川财大 | 028 | 61546888 | |
江州 | 男 | 首都医大 | 010 | 55210724 | 45623210 |
赵红 | 女 | 上地开发 | 010 | 67280506 | 66250782 |
刘江 | 男 | 第一建筑 | 029 | 22449918 |
规范化方法之一:去掉复合属性“电话”,把所含的3个属性提升为顶层属性,使之变为满足第一范式的规范化关系。关系模式为T(姓名,性别,单位,长途区号,办公电话,家庭电话),关系的内容不变。
规范化方法之二:把通信录关系T分解为两个关系,一个为T1(姓名,性别,单位,通信地址,...),另一个为T2(姓名,长途区号,办公电话,家庭电话,手机电话,...)。
例2:设一个借阅图书关系模式为J(借阅证号,姓名,性别,借阅图书登记(图书号1,书名1,图书号2,书名2,...)),对应的关系实例假定如下表2所示。
表2 不规范的借阅图书关系表
借阅证号 | 姓名 | 性别 | 单位 | 借阅图书登记 | |||
---|---|---|---|---|---|---|---|
图书号1 | 书名1 | 图书号2 | 书名2 | ||||
BJ10001 | 王明 | 男 | 天津大学 | SP.256.1 | 营养学 | SP.368.2 | 家庭菜谱 |
BJ10015 | 张会 | 男 | 东北化工 | JZ.372.6 | 施工手册 | ||
BJ10603 | 刘华 | 女 | 华联商场 | FZ.25.48 | 丝绸缝纫 | ||
BJ15021 | 赵阳 | 男 | 实验二中 | TP.342.5 | 计算原理 | TP.638.24 | 程序设计 |
BJ23456 | 李玉 | 女 | 四川财大 | GL.683.4 | 管理学 | XP.35.26 | 人事管理 |
BJ03042 | 黄明 | 女 | 首都医大 | ||||
BJ20349 | 陈亮 | 男 | 上地开发 | JX.13.42 | 生物学 |
规范化方法之一:取消“借阅图书登记”这个复合栏,把包含的4个子属性独立出来,变为顶层属性,得到的关系模式为J(借阅证号,姓名,性别,图书号1,书名1,图书号2,书名2,...)。
规范化方法之二:把原关系分解为两个关系,第一个为J1(借阅证号,姓名,性别,...),第二个为J2(借阅证号,图书号,书名,...)。
借阅证号是J1关系的主码,借阅证号和图书号联合构成J2关系的主码,同时借阅证号又是J2关系的外码,需要时对这两个关系进行自然连接就可以得到原关系中的全部信息。按照J1和J2关系对原来的实例表进行投影,则得到下面表1和表2这两个关系表。J1和J2是1对多的联系,联系属性是借阅证号。
表1 J1关系
借阅证号 | 姓名 | 性别 |
---|---|---|
BJ10001 | 王明 | 男 |
BJ10015 | 张会 | 男 |
BJ10603 | 刘华 | 女 |
BJ15021 | 赵阳 | 男 |
BJ23456 | 李玉 | 女 |
BJ03042 | 黄明 | 女 |
BJ20349 | 陈亮 | 男 |
借阅证号 | 图书号 | 书名 |
---|---|---|
BJ10001 | SP.256.1 | 营养学 |
BJ10001 | SP.368.2 | 家庭菜谱 |
BJ10015 | JZ.372.6 | 施工手册 |
BJ10603 | FZ.25.48 | 丝绸缝纫 |
BJ15021 | TP.342.5 | 计算原理 |
BJ15021 | TP.638.24 | 程序设计 |
BJ23456 | GL.683.4 | 管理学 |
BJ23456 | XP.35.26 | 人事管理 |
BJ20349 | JX.13.42 | 生物学 |
规范化方法之三:其关系模式可以定义为J(借阅证号,姓名,性别,图书号,书名),即把原关系中所借阅的每本图书同个人信息一起用一个单独的元组表示出来。
总之,还是采用第二种方法为最佳方案,即借阅者个人信息与借阅图书信息分成两个关系存储,必要时通过借阅证号连接起来。