关系数据库范式设计——常玉慧
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作呢?
1NF
消 除 非 主 属 性 对 码 的 部 分 依 赖
2NF
原因:存在非主属性“小时工资率”对码“职工号”的传递依赖
7/28/2020
15
3NF的定义
如果关系模式R中的所有非主属性对
任何候选码都不存在传递依赖,则称关系
R ∈ 3NF。
员工表∈ 2NF 员工表∈ 3NF
7/28/2020
16
A1 花园大厦 1001 齐光明
A1 花园大厦 1002 李思岐
丢失了项目
A1
花园大厦 1004 葛宇洪
A2的信息
A2
立交桥
1003 鞠明亮
A3 临江饭店 1002 李思岐
A3 临江饭店 1004 葛宇洪
职务 小时工资率 工时
工程师
65
13
技术员
60
16
技术员
60
13
工人
55
17
技术员
60
18
技术员
60
14
如果1003号职工要辞职,则必须删除所有职工号=1003的 数据行。
异常:这样的删除操作,丢失了项目A2所有有用的数据!
7/28/2020
12
问题分析
原因:一张表描述了多件事情
项目工时信息
工程号 工程名称 职工号 姓名 职务 小时工资率 工时
工程信息
员工信息
函数依赖图
注意:存在非主属性对码的部分依赖 例如:(工程号,职工号) P 工程名称
3NF
BCNF
4NF
5NF
任务:某建筑公司的工资管理系统的数据库如何设计?
Table 1
DTaatablBe ase2
……
Table n
工程号、工程T名ab称le 、1职工号、姓名、 职务 ;
一项工程由多个职工参加,一 个职工也可以T参ab与le 多2个工程;
……
公司按照工时和小时工资率支付工资, 小时工资率由T职ab工le 的n职务决定
项目工时表
工程号 A1 A1 A1 A2 A3 A3
职工号 1001 1002 1004 1003 1002 1004
工时 13 16 13 17 18 14
姓名 齐光明 李思岐 葛宇洪 鞠明亮
职务 工程师 技术员 技术员 工人
小时工资率 65 620 620 55
思考:员工表中 小时工资率被重复 存储,修改技术员的 小时工资率怎样操
1140.00
2945.010 9
935.00
17
935.00
技术技员 术员60
技术员
60
技术员
1860
14
60
1080.010 8
840.00
1920.010 4
9
问题二:数据冗余大、更新复杂
工程号 A1 A1 A1 A2 A3 A3
工程名称 花园大厦 花园大厦 花园大厦 立交桥 临江饭店 临江饭店
7/28/2020
13
2NF的定义
若关系模式R∈1NF,并且每一个非主 属性都完全函数依赖于R的码,则R∈2NF。
上述的项目工时表∈1NF,但∈2NF。
7/28/2020
14
应用2NF规范化
职工号 1001 1002 1004 1003
工程表
工程号
工程名称
A1
花园大厦
A2
立交桥
A3
临江饭店
员工表
65
13
60
16
…
…
60
18
60
14
60
若要增加一个新的职工时,首先必须给这名职工分配一 个工程。或者为了添加一名新职工的数据,先给这名职工分配 一个虚拟的工程。(因为主关键字不能为空)
异常:工程号不存在或者该职工根本没有参与此项目!
7/28/2020
11
问题四:删除异常
工程号 工程名称 职工号 姓名
1004
A3 临江饭店 1004
7/28/2020
姓名
姓名
齐光明
齐光明
李李思思岐岐
葛宇宏
葛小宇计洪
鞠明亮
鞠小明计亮
李李思思岐岐
葛宇洪
葛小宇计洪
职务职务小资时率工
小时 工工时资率
工时
实发工资
工程师
工程师
65
65
13
13
845.00
技术技员 术员60
技术员
60
技术员
工人
55
工人
1660
19
60
17
55
960.0016
7/28/2020
10
问题三:增加异常
工程号 A1
A1 … A3 虚拟的工程号 A3
A4
工程名称 花园大厦 花园大厦
… 临江饭店 临江饭店
职工号 1001 1002 … 1002 1004 1005
姓名 齐光明 李思岐
… 李思岐 葛宇洪 王启明
职务 工程师 技术员
… 技术员 技术员 技术员
小时工资率 工时
应用3NF规范化
职工号 1001 1002 1004 1003
员工表
姓名 职务 齐光明 工程师 李思岐 技术员 葛宇洪 技术员 鞠明亮 工人
职工号 1001 1002 1004 1003 1002 1004
姓名 齐光明 李思岐 葛宇洪 鞠明亮 李思岐 葛宇洪
职务 工程师 技术员 技术员 工人 技术员 技术员
小时工资率 65 60 60 55 60 60
工时 13 16 13 17 18 14
每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输 入操作,既占据存储空间,又使得数据库的更新变得复杂,操作不当很可 能导致数据的不一致性。
工时
工程师 技术员 技术员
冗65 余数据13
60
16
60
19
工人
55
17
技术员
60
18
技术员
60
14
实发工资
845.00 960.00 1140.00 2945.00 935.00 935.00 1080.00 840.00 1920.00
Hale Waihona Puke Baidu7/28/2020
7
1NF的定义
如果一个关系模式R的所有属性都 是不可分的基本数据项,则R∈1NF。
7/28/2020
8
应用1NF规范化
公司的项目工时表
工程号
工程号
A1
AA11
A1
A2
A2
工工程程名名称称 职工号
职工号 区域 名称
花园大厦 1001
1001
花新区园大厦花大园厦 10012002
1004
花园大厦 1004
临渭区 立交桥
1003
立交桥 1003
AA33
钟临楼江区饭店临饭江店
10012002
关系数据库设计范式
1
如何评价酒店的星级
★
★★
★★ ★
★ ★ ★ ★ ★ ★ ★ ★★
如何评价酒店的星级
酒店
依据
评定为 酒店的划分与评定标准
一星级酒店 二星级酒店 三星级酒店 四星级酒店 五星级酒店
如何评价酒店的星级
酒店 关系模式
依据 依据
酒店的划分与评定标准 范式
评定为 判定为
一星级酒店 二星级酒店 三星级酒店 四星1N级F酒店 五星2N级F酒店
7/28/2020
6
问题一:非规范的关系表
公司的项目工时表
工程号
工程名称 区域 名称
职工号
姓名
1001
齐光明
A1
新区
花园
1002
李思岐
大厦 关系10数04据库不葛支宇宏持
非规范
这种数据结构!
小计
A2
临渭区 立交桥
1003
鞠明亮
小计
A3
钟楼区
临江 饭店
1002 1004
李思岐 葛宇洪
小计
职务
小时工 资率
1NF
消 除 非 主 属 性 对 码 的 部 分 依 赖
2NF
原因:存在非主属性“小时工资率”对码“职工号”的传递依赖
7/28/2020
15
3NF的定义
如果关系模式R中的所有非主属性对
任何候选码都不存在传递依赖,则称关系
R ∈ 3NF。
员工表∈ 2NF 员工表∈ 3NF
7/28/2020
16
A1 花园大厦 1001 齐光明
A1 花园大厦 1002 李思岐
丢失了项目
A1
花园大厦 1004 葛宇洪
A2的信息
A2
立交桥
1003 鞠明亮
A3 临江饭店 1002 李思岐
A3 临江饭店 1004 葛宇洪
职务 小时工资率 工时
工程师
65
13
技术员
60
16
技术员
60
13
工人
55
17
技术员
60
18
技术员
60
14
如果1003号职工要辞职,则必须删除所有职工号=1003的 数据行。
异常:这样的删除操作,丢失了项目A2所有有用的数据!
7/28/2020
12
问题分析
原因:一张表描述了多件事情
项目工时信息
工程号 工程名称 职工号 姓名 职务 小时工资率 工时
工程信息
员工信息
函数依赖图
注意:存在非主属性对码的部分依赖 例如:(工程号,职工号) P 工程名称
3NF
BCNF
4NF
5NF
任务:某建筑公司的工资管理系统的数据库如何设计?
Table 1
DTaatablBe ase2
……
Table n
工程号、工程T名ab称le 、1职工号、姓名、 职务 ;
一项工程由多个职工参加,一 个职工也可以T参ab与le 多2个工程;
……
公司按照工时和小时工资率支付工资, 小时工资率由T职ab工le 的n职务决定
项目工时表
工程号 A1 A1 A1 A2 A3 A3
职工号 1001 1002 1004 1003 1002 1004
工时 13 16 13 17 18 14
姓名 齐光明 李思岐 葛宇洪 鞠明亮
职务 工程师 技术员 技术员 工人
小时工资率 65 620 620 55
思考:员工表中 小时工资率被重复 存储,修改技术员的 小时工资率怎样操
1140.00
2945.010 9
935.00
17
935.00
技术技员 术员60
技术员
60
技术员
1860
14
60
1080.010 8
840.00
1920.010 4
9
问题二:数据冗余大、更新复杂
工程号 A1 A1 A1 A2 A3 A3
工程名称 花园大厦 花园大厦 花园大厦 立交桥 临江饭店 临江饭店
7/28/2020
13
2NF的定义
若关系模式R∈1NF,并且每一个非主 属性都完全函数依赖于R的码,则R∈2NF。
上述的项目工时表∈1NF,但∈2NF。
7/28/2020
14
应用2NF规范化
职工号 1001 1002 1004 1003
工程表
工程号
工程名称
A1
花园大厦
A2
立交桥
A3
临江饭店
员工表
65
13
60
16
…
…
60
18
60
14
60
若要增加一个新的职工时,首先必须给这名职工分配一 个工程。或者为了添加一名新职工的数据,先给这名职工分配 一个虚拟的工程。(因为主关键字不能为空)
异常:工程号不存在或者该职工根本没有参与此项目!
7/28/2020
11
问题四:删除异常
工程号 工程名称 职工号 姓名
1004
A3 临江饭店 1004
7/28/2020
姓名
姓名
齐光明
齐光明
李李思思岐岐
葛宇宏
葛小宇计洪
鞠明亮
鞠小明计亮
李李思思岐岐
葛宇洪
葛小宇计洪
职务职务小资时率工
小时 工工时资率
工时
实发工资
工程师
工程师
65
65
13
13
845.00
技术技员 术员60
技术员
60
技术员
工人
55
工人
1660
19
60
17
55
960.0016
7/28/2020
10
问题三:增加异常
工程号 A1
A1 … A3 虚拟的工程号 A3
A4
工程名称 花园大厦 花园大厦
… 临江饭店 临江饭店
职工号 1001 1002 … 1002 1004 1005
姓名 齐光明 李思岐
… 李思岐 葛宇洪 王启明
职务 工程师 技术员
… 技术员 技术员 技术员
小时工资率 工时
应用3NF规范化
职工号 1001 1002 1004 1003
员工表
姓名 职务 齐光明 工程师 李思岐 技术员 葛宇洪 技术员 鞠明亮 工人
职工号 1001 1002 1004 1003 1002 1004
姓名 齐光明 李思岐 葛宇洪 鞠明亮 李思岐 葛宇洪
职务 工程师 技术员 技术员 工人 技术员 技术员
小时工资率 65 60 60 55 60 60
工时 13 16 13 17 18 14
每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输 入操作,既占据存储空间,又使得数据库的更新变得复杂,操作不当很可 能导致数据的不一致性。
工时
工程师 技术员 技术员
冗65 余数据13
60
16
60
19
工人
55
17
技术员
60
18
技术员
60
14
实发工资
845.00 960.00 1140.00 2945.00 935.00 935.00 1080.00 840.00 1920.00
Hale Waihona Puke Baidu7/28/2020
7
1NF的定义
如果一个关系模式R的所有属性都 是不可分的基本数据项,则R∈1NF。
7/28/2020
8
应用1NF规范化
公司的项目工时表
工程号
工程号
A1
AA11
A1
A2
A2
工工程程名名称称 职工号
职工号 区域 名称
花园大厦 1001
1001
花新区园大厦花大园厦 10012002
1004
花园大厦 1004
临渭区 立交桥
1003
立交桥 1003
AA33
钟临楼江区饭店临饭江店
10012002
关系数据库设计范式
1
如何评价酒店的星级
★
★★
★★ ★
★ ★ ★ ★ ★ ★ ★ ★★
如何评价酒店的星级
酒店
依据
评定为 酒店的划分与评定标准
一星级酒店 二星级酒店 三星级酒店 四星级酒店 五星级酒店
如何评价酒店的星级
酒店 关系模式
依据 依据
酒店的划分与评定标准 范式
评定为 判定为
一星级酒店 二星级酒店 三星级酒店 四星1N级F酒店 五星2N级F酒店
7/28/2020
6
问题一:非规范的关系表
公司的项目工时表
工程号
工程名称 区域 名称
职工号
姓名
1001
齐光明
A1
新区
花园
1002
李思岐
大厦 关系10数04据库不葛支宇宏持
非规范
这种数据结构!
小计
A2
临渭区 立交桥
1003
鞠明亮
小计
A3
钟楼区
临江 饭店
1002 1004
李思岐 葛宇洪
小计
职务
小时工 资率