数据库范式设计(专题)

数据库范式设计(专题)

ID:39708000

大小:256.50 KB

页数:16页

时间:2019-07-09

数据库范式设计(专题)_第1页
数据库范式设计(专题)_第2页
数据库范式设计(专题)_第3页
数据库范式设计(专题)_第4页
数据库范式设计(专题)_第5页
资源描述:

《数据库范式设计(专题)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2021年7月16日第1页数据库范式设计专题教学目标教学重点:第一、二、三范式教学过程2021年7月16日第2页2.3.3范式与规范化数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF

2、)。第一范式(1stNF)在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。BuyerIDCountryCity1142中国中国日本美国北京北京东

3、京纽约………BuyerIDAddress1234中国北京市美国纽约市英国利物浦日本东京市……2第二范式(2NF)第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键、主码。Orders字 段例 子订单编号产品编号订购日期价格001A0012000-2-3$29.00……Orders字 段例 子订单编号订购日期0012000

4、-2-3Products字 段例 子产品编号价格A001$29.003第三范式(3NF)满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不能包含已经在其它表中存在的非主关键字信息。即,第三范式就是属性不依赖于其它非主属性(即表与表之间存储数据独立)。Orders字 段例 子订单编号订购日期顾客编号0012000-2-3AB001顾客姓名Tony……Orders字 段例 子订单编号订购日期顾客编号0012000-2-3AB001……规范化实例假设某建筑公司要设计一个数据库。公司的业务规则概括说明

5、如下:公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)公司定期制定一个工资报表,如图-1所示规范化实例工程号工程名称职工号姓名职务小时工资率工时实发工资A1花园大厦1001齐光明工程师6513845.001002李思岐技术员6016960.001004葛宇宏律师60191140.00小计2945.00A2立交桥1001齐光明工程师6515975.00100

6、3鞠明亮工人5517935.00小计1910.00A3临江饭店1002李思岐技术员60181080.001004葛宇洪技术员6014840.00小计1920.00图-1某公司的工资表规范化实例工程号工程名称职工号姓名职务小时工资率工时A1花园大厦1001齐光明工程师6513A1花园大厦1002李思岐技术员6016A1花园大厦1001齐光明工程师6513A1花园大厦1003鞠明亮工人5517A3临江饭店1002李思岐技术员6018A3临江饭店1004葛宇洪技术员6014图-2某公司的项目工时表规范化实例1.表中包含大量的冗余,可能会导致数据异常

7、:更新异常例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行添加异常若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)删除异常例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据规范化实例2.采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。一张表描述了多件事情,如图-3所示。

8、应用范式规范化设计工程号工程名称职工号姓名职务小时工资率工时图-3函数依赖图工程信息员工信息项目工时信息应用第二范式规范化工程号工程名称职工号姓名职务小时工资率工程

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。