数据库系统-3NF(上)-软件设计(二十七)

文章介绍了数据库设计的基本概念,包括三级模式(内模式、概念模式、外模式)和E-R模型,阐述了多对多关系的表示以及集成时可能遇到的冲突和解决办法。此外,讨论了E-R模式转换为关系模式的规则,并讲解了关系代数的操作如并、交、差和连接。文章还涉及规范化理论,解释了不同范式(1NF、2NF、3NF、BCNF)的作用和重要性,以及如何解决数据冗余和异常。
摘要由CSDN通过智能技术生成

原创 操作系统-页面淘汰算法(下)-软件设计(二十六)icon-default.png?t=N176https://blog.csdn.net/ke1ying/article/details/129508391

三级模式-两级映射

内模式、概念模式、外模式。

内模式指内部视图。(主要关注数据的存放)

概念模式指表DBA视图等。

外模式指用户视图。

外模式  ->通过外模式-概念模式映射   到

概念模式  ->概念模式-内模式映射 到   内模式

  1. R模型

 

方框 表示实体、椭圆表示属性、菱形表示联系。

学生和课程 中间有一层联系,就是选课,所以是菱形。

M和N表示多对多的关系,一个学生可以选择多门课,一门课也可以被多个学生选择。

集成方式:

  1. 多个局部E-R图一次集成。
  2. 逐步集成,用累加的方式一次集成两个局部E-R。

集成产生的冲突及解决办法:

属性冲突、包括属性域冲突和属性取值冲突。

命名冲突、包括同名异义和异名同义。

结构冲突、不同抽象级别(比如老师即是表又是另一个表里的字段)。

E-R模式转换关系模式

一个实体转一个关系模式

1对1则 有两个关系模式,这个联系可以记录在实体A也可以记录在实体B。

1对N则 联系也可以记录在单个那边,也可以记录在n那边。至少两个关系模式。

(比如 部门和员工,正常把联系记录在员工那边,因为部门对员工是1对多,只要在员工表加部门号就可以解决)

M对N则 多对多至少转三个关系模式,算上联系可以转四个。

关系代数

并:两个集合并在一起,两个集合都有的只显示一次。

交:相同的才显示。

差:也就是把相同部分减掉,取剩下的并。

笛卡尔积:就是两个集合相乘。3*3至少9条对应的数据。

连接:指两个集合某个字段等值连接。

规范化理论-价值与用途

非规范化的情况下存在 数据冗余、更新异常、插入异常、删除异常。

超键:唯一标识元组。

超键和候选键的区别,超键存在冗余属性。

比如学号 和姓名 性别,他们都可以确定性别,学号+姓名 不能是候选键,因为学号 和姓名都能分别确定性别,他有冗余属性。

候选键:也是唯一标识元组。(没有冗余属性)

主键:候选键和主键区别,候选键有多个,主键只能有一个。

外键:其他表关系额主键。

将关系模式的函数依赖用“有向图”的方式表示。

入度为0的属性,并以该属性集合为起点,遍历有向图,若能遍历所有节点,则该属性是候选键。

若没有入度为0的属性,尝试找中间节点,即有入度也有出度。

 

例题1里,因为A1可以遍历全部节点,所以候选关键字是A1。

例题2的ABD->E意思是三条线合并指向E,而不是单独指向E

单独指向代表A->E,B->E,D->E

例题2的候选码是组合键ABCD

例题3中没有入度为0的属性,A和B都是候选关键字。不能写成AB。

必考-范式

1NF、2NF、3NF、BCNF。

1NF:属性值必须是不可以继续拆分的原子值。

消除非主属性对候选键的部分依赖

则就到了2NF

消除非主属性对候选键的传递依赖

则就到了3NF

消除主属性对候选键额传递起来

则就到了BCNF

逐步越来越优化、解决插入异常、删除异常、数据冗余等。

(主属性:候选关键字)

第一范式如何达到了,必须字段不可分,比如有字段学校名称,高级职称,这种显然不满足1NF,这时候把高级职称改为教授,副教授,则满足,因为不可拆分的原子值。

第二范式,必须每一个非主属性完全依赖主键(不存在部分依赖)。

 

如图SNO和CNO必须组合起来才是主键,因为学生会对应多门学科,所以学生和学科组合在一起才是主键。

而CREDIT学分则是对应学科就能确定,所以他是部分依赖,需要拆分。

导致数据冗余,更新异常等问题。

这时候插入也会有问题

比如向录入C08学科的学分,但是不能录入,因为学科和学生在这个表里强绑定,必须有学生学习才能录入学分,显然这是不合理的。

更新也会有问题

如果只更新两条会导致问题,所以每次更新学分要更新很多没必要的数据。

删除异常

这时候这届学生毕业,把学生数据清空,导致了学分也消失。

这里主属性就是SNO和CNO,非主属性就是剩下的两个。

 

如图主键只有单属性,这时候肯定满足2FN,因为不存在部分依赖。

这种解决办法就是把DNO和DNAME和LOCATION拆分出来独立建表。

 

重点,这里S是到不了T的,必须S学生和J课程的组合才能到T老师。

所以S是不能做候选键的,必须是SJ做候选键

其中ST也可以做候选键,虽然S不能到T,但是T可以到J,所以也可以遍历完。

所以 这里主属性 STJ都属于。

那么这是不是BCNF呢

上面知道SJ->T   ST由T>J

这里SJ是候选键,而T不是候选键,所以这里不是BCNF。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端从入门到精通

你的鼓励是我最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值