数据库中的范式学习
来源:互联网 发布:网络词凉凉是什么意思 编辑:程序博客网 时间:2024/05/23 12:08
学生:学号(Sno),姓名(Sname),系名(Sdept)
一个学生只对应一个学生,一个学生只在一个系学习。当学号确定时,姓名和系名也就确定了。
属性中的这种依赖关系就类似于数学中的函数y=f(x),自变量x确定之后,相应的函数y也就唯一地确定了。
Sname=f(Son),Sdept=f(Son) Son->Sname,Sno->Sdept
教务:学号(Sno),所在系(Sdept),系主任姓名(Mname),课程号(Cno)
和成绩(Grade)
现实世界的已知事实(语义)告诉我们:
(1)一个系有若干学生,但一个学生只属于一个系。
(2)一个系各有一个正职负责人。
(3)一个学生可以选修多门课程,每门课程有若干学生选修。
(4)每个学生学习每一门课程有一个成绩。
F={Sno->Sdept,Sdept->Mname,(Sno,Cno)-Grade}
如果只考虑函数依赖这种数据依赖,我们就得到一个描述学生的关系模式:表6.1是某一个时刻关系模式Student的一个实例,即数据表。
Sno Sdept Mname Cno Grade
这个关系模式存在以下问题:
1.数据冗余太大
每一个系的系主任姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。浪费大量的存储空间。
2.更新异常
由于数据冗余,当更新数据库中的数据时,系统需要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险。比如,某系更换系主任后,必须修改与该系学生有关的每一个元组。
3.插入异常
如果一个系刚成立,尚无学生就无法把这个系及其系主任的信息存入数据库。
4.删除异常
如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系及其系主任的信息也丢弃掉。
如果分成3个关系模式:
S(Sno,Sdept,Sno->Sdept):
Sc(Sno,Cno,Grade,(Sno,Cno)->Grade)
Dept(Sdept,Mname,Sdept->Mname)
这三个模式都不会发生插入异常,删除异常的毛病,数据的冗余也得到控制。
- 数据库中的范式学习
- 数据库设计中的范式
- 数据库中的范式
- 数据库设计中的范式
- 数据库中的范式
- 数据库设计中的范式
- 数据库中的范式理论
- 数据库原理中的范式
- 数据库中的三范式
- 数据库中的范式问题
- 数据库中的范式
- SQL数据库中的范式
- 数据库中的范式
- SQL数据库中的范式
- 数据库中的范式
- 数据库中的范式
- 数据库中的范式
- 数据库中的范式
- 如何安全退出已调用多个 Activity 的 Application?
- 上传github项目
- 【POJ 2096】Collecting Bugs(概率与期望+dp)
- BZOJ 2844 albus就是要第一个出场(线性基)
- 同一个Fragment重复加载的问题
- 数据库中的范式学习
- 递归算法实现二分查找
- json 遍历的削笔机
- 有两个有序整数集合a和b,写一个函数找出它们的交集?
- JAVA中 @Override 的作用
- eclipse中运行带图标tomcat未报错并且也跑不起来的问题
- Maven入门
- ZooKeeper系列之三:Zookeeper常用命令
- 解决mysql中只能通过localhost访问不能通过ip访问的问题