H1-10 数据库范式
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SNO 1 2 3 4
CNO 2 2 2 3 1
GRADE 4 5 6 5
CREDIT 8 8 8 5 5
在应用中使用以上关系模式有以下问题: 在应用中使用以上关系模式有以下问题: 个学生选修, (1)数据冗余即数据重复,假设同一门课有 个学生选修,学分 )数据冗余即数据重复,假设同一门课有40个学生选修 就重复40次 就重复 次。 (2)更新异常,若调整了某课程的学分,相应的元组 )更新异常,若调整了某课程的学分,相应的元组CREDIT值 值 都要更新,有可能会出现同一门课程学分不同的情况。 都要更新,有可能会出现同一门课程学分不同的情况。 (3)插入异常,如计划开新课,由于没人选修,因此就没有学号 )插入异常,如计划开新课,由于没人选修, 关键字,只有学生选修后才能把课程和学分存入。 关键字,只有学生选修后才能把课程和学分存入。 (4)删除异常,若学生已结业,从当前数据库删除选修记录。若 )删除异常,若学生已结业,从当前数据库删除选修记录。 某些课程新生尚未选修,则此门课程及学分记录将无法保存。 某些课程新生尚未选修,则此门课程及学分记录将无法保存。
原因:非关键字属性CREDIT仅依赖于CNO,也 就是说CREDIT部分依赖组合关键字(SNO, CNO)而不是完全依赖。 解决方法:分成两个关系模式SC1(SNO,CNO, GRADE),C2(CNO,CREDIT)。新关系包括 两个关系模式,它们之间通过SC1中的外关键字 CNO相联系,在需要时再进行联接。
即如果一个表中的任意三列abc存在着a决定b且b决定c的情况那么这个表就不属于第三范式因为a可以通过传递依赖决定c这时应该将传递依赖分解到两每个人都希望可以和他人相互信任否则就会缺乏安全感
系模式的集合。关系数 据库设计之时是要遵守一定的规则的。 满足不同程度要求的为不同范式。满足最低要求的叫 第一范式,简称为1NF。在第一范式基础上进一步满足一 些要求的为第二范式,简称为2NF、3NF(第三范式), 另有第四范式和第五范式不做具体要求。在你设计数据库 之时,若能符合前3个范式,你就是数据库设计的高手。
Order Detils表 表 CustomerID (客户ID) Order ID (订单ID) Item ID (货物ID) Requireddate (到货日期) Shippeddate (发货日期) Quantity (数量) Discount (折扣)
Item表 表 Item ID Itemname Uniprice
(货物ID) 主键 (货物名称) (单价)
(客户ID) 外键 (订单ID) (货物ID) (到货日期) (发货日期) (数量) (折扣)
数据库范式
• 第三范式 除去不依赖于键的列 Customer表 表 CustomerID (客户ID) 主键 Company name (公司名称) Address (地址) City (城市) Order表 表 CustomerID (客户ID) 外键 Order ID (订单ID) Item ID (货物ID) Requireddate (到货日期) Shippeddate (发货日期) Item表 表 Item ID Itemname Uniprice (货物ID) (货物名称) (单价)
外键
数据库范式
• 第二范式 除去冗余的数据 Customer表 表 CustomerID (客户ID) 主键 Company name (公司名称) Address (地址) City (城市) Order表 表 CustomerID Order ID Item ID Requireddate Shippeddate Quantity Discount
第三范式(3NF)
• 第三范式 消除传递依赖 (即完全依赖于其它列或外键的数据 项),以便使数据符合第三范式。 即如果一个表中的任意三列A、B、C,存在着A决定B, 且B决定C的情况,那么这个表就不属于第三范式,因为A 可以通过传递依赖决定C,这时应该将传递依赖分解到两 个表中。
数据库范式
• 以客户、订单案例研究为例。 客户、订单案例研究中的非规范化数据 Order ID (订单ID)1…n CustomerID (客户ID)1…n Orderdate (订购日期) Requireddate (到货日期) Shippeddate (发货日期) Quantity (数量) Discount (折扣) Company name (公司名称) Address (地址) City (城市) Product ID (产品ID)1…n Productname (产品名称) UnitPrice (单价)
1NF(第一范式) (第一范式)
2NF(第二范式) (第二范式)
3NF(第三范式) (第三范式)
第一范式(1NF)
• 第一范式 删除表中重复的列以达到第一范式。即每个属性值都是不可再分的最小 数据单位 。 例如:由“职工号”、“姓名”、“电话号码”组成的表(一个人可能有 一个办公室电话和一个家庭电话号码),这时将其规范成为1NF有三种方 法: 重复存储“职工号”和“姓名”。此时,关键字只能是“电话号码”。 “职工号”为关键字,“电话号码”分为“单位电话”和“住宅电话”两 个属性。 “职工号”为关键字,但强制每条记录只能有一个电话号码。 以上三个方法,第一种方法最不可取,按实际情况选取后面两种情况。 以上三个方法,第一种方法最不可取,按实际情况选取后面两种情况。
第二范式(2NF)
• 第二范式 如果一个关系属于1NF,且所有的非主关键字段都完全地依赖于主 关键字,则称之为第二范式,简记为2NF。 例如:在选课关系表SCI(SNO,CNO,GRADE,CREDIT)中, SNO为学号,CNO为课程号,GRADE为成绩,CREDIT为学分。由以 上条件可知,关键字为组合关键字(SNO,CNO)。
数据库范式
• 第一范式 除去重复的组
Customer表 表 CustomerID (客户ID) Company name (公司名称) Address (地址) City (城市) Order表 表 CustomerID (客户ID) Order ID (订单ID) Orderdate (订购日期) Item ID (货物ID) Itemname (货物名称) Uniprice (货物单价) Requireddate (到货日期) 主键