没有合适的资源?快使用搜索试试~ 我知道了~
数据库设计1
需积分: 0 0 下载量 170 浏览量
2022-08-03
19:03:16
上传
评论
收藏 1.48MB PDF 举报
温馨提示
试读
1页
数据库设计数据建模E-R模型基本思想E实体实体与实例类(实体):学生个体(实例):张三属性单一属性与复合属性单值属性和多值属性导出属性(由其他属性计算)关系的第
资源推荐
资源详情
资源评论
数据库设计
数据建模
E-R模型基本思想
E实体
实体与实例
类(实体):学生
个体(实例):张三
属性
单一属性与复合属性
单值属性和多值属性
导出属性(由其他属性计算)
关系的第一范式
关键字 唯一区分
扩展E-R图
独立实体(强实体):一个实体的实例都被唯一
的标识而不决定于它与其他实体的联系
从属实体(弱实体):没有足够的属性构成主键
R联系 度/元
一元联系:只发生在一张表
角色:当同一实体的不同实例参与一个联系时,
为区别各实例参与联系的方式
二元联系
类型
一对一
一对多
多对多
基数:最大最小值
完全参与联系:最小基数为1 (1..m)
部分参与联系:最小基数为0 (0..m)
多元联系
Chen方法
步骤
理解需求,寻找实体
用属性刻画每一个实体
确定每一个实体的关键字/码
分析实体之间的联系
检查是否覆盖了需求
Crow's foot方法
数据库设计过程
需求分析
源清单(表清单)
属性清单
概念数据库设计
用E-R模型描述
消除冲突
属性冲突
域不同
单位不同
结构冲突
同一对象是实体还是属性
同一实体在E-R种属性组成不同
同一联系在E-R中类型不同
命名冲突
同一对象不同名字
不同对象同一名字
逻辑数据库设计
将E-R图转逻辑模式
实体转关系
属性转关系的属性
关键字转关系的关键字
复合属性
分成多个属性
当成一个实体(外键),其有多个属性
多值属性 将关键字和该多值属性组成一张新的关系 如SC表
联系的转换
注意哪一方放到另一方作为外键,尽量避免空值
也要避免重复的char列 如学生表里的班主任可以用t_id
多元联系会自己变成一张表,可以用联合主键,
也可以加一列自己的id
弱实体的转化 加上与之联系的强实体的关键字,组成候选码
具体/泛化的转换
不正确设计
冗余
受控冗余:已经得到控制的
非受控冗余
删除异常 随着删除,其他表的数据收到影响
需要遵循三大理论
数据依赖理论
函数依赖(123NF/BCNF)
多值依赖(4NF)
连接依赖(5NF)
关系范式理论
模式分解理论
物理数据库设计
存储结构、文件类型
高效访问方式(索引、直接)
磁盘空间设置
备份和恢复
函数依赖及公理定理
函数依赖
定义
实际上这就是函数的定义,不能一对多
设计关系模式时,除给出属性全集外,还需给出
数据依赖集合
特性
当一个属性没有相同取值时(主键),它可以决
定其他所有属性
部分和完全依赖
即根据X能否缩小
可任选一候选键作为R的主键
包含在任一候选键中的属性称主属性
比候选键大的叫超键
传递依赖
传递依赖存在非受控冗余,可化简
延申定义
逻辑蕴含
(函数)闭包
属性(集)闭包
覆盖
最小覆盖
函数依赖推导
Armstrong公理
Armstrong引理
该引理通常用于证不出X->Y时,转换
关系范式及模式分解
关系范式理论
1NF 每个分量都是不可分的数据值
不能有复合属性
不能有多值属性
2NF
每一非主属性完全函数依赖于候选键
消除了非主属性对候选键的部分依赖
举例:
3NF
消除非主属性对候选键的传递依赖
BCNF
所有依赖的左边必须含有候选键(书上说超码)
多值依赖 说人话就是:X->->Y,一对多,且Y不可拆散
关于多值依赖的一些Armstrong定理引理
4NF 如果有多值依赖, 则一定依赖于候选键(或比之略大的超键)
消除了非主属性对候选键以外属性的多值依赖
模式分解
将关系模式分解成
1NF
复合属性:拆分或产生子实体
多值属性:将该属性和关键字单独一张表,两个
共同作为关键字
2NF
将有部分依赖的关系含有的属性独立出一张表,
那张表的关键字更新
3NF
先将每个函数依赖单独组成关系,必不可能传递
再合并其中一些
BCNF
将左侧不含候选键的函数依赖单独拎出去组成新
关系
再合并其中一些
定义
用关系模式R的一组子集代替,且在R下的任意关系
r,投影到这组子集后再连接,能比较好的还原
希望有的性质
数据内容:无损连接性
数据依赖:保持依赖性
分解算法
无损连接分解
满足r= m(r)
无损分解成BCNF算法
无损分解成4NF算法
保持依赖分解
保持分解成3NF算法
检验算法
无损连接检验算法 画Rp表
分解成两个关系模式的无损连接检验算法
保持依赖检验算法
其实就是看子集的所有依赖能否覆盖原R的依赖F
利用Armstrong引理4的属性闭包
连接依赖与5NF
计算题会考
求候选码
关键是看能完全函数决定U
属性只出现在函数依赖的左侧或者从未出现,必
在任一候选码的范围中;如果出现只出现在右
边,直接pass
检查{第一步的结果}+是否等于U,如果是直接结
束
如果不能再和剩下的属性(两边都有出现的)一
一组合,检验
求属性闭包
有点像演绎定理
先由给定的属性生成X_0={ }
再从已有的函数依赖里生成传递一遍生成X_1
重复直到两次生成的一样,算法结束
求函数依赖集的最小覆盖
先把右边有多个属性的全部拆散;
剩下的依赖作为一个大的集合,逐个考虑删除。
如删除X->Y时,对剩下的依赖判断能否由 X+推
出Y,如果可以则删除,如果不行则不能删。
剩下的依赖中,如果有依赖的左边不为单属性,
则尝试能否缩减直到最小化。
计算题会考
无损连接检验算法
先构造
如果属性在该关系中,则填a,不在则填b
再修改
用每一个函数依赖修改上表
修改:即用一列去映射另一列,使另一列尽量多
重复的值,a或b都行
当映射另一列时,所有重复的值都可以同时变
动(可以理解成用前面用过的又扫了一遍)
当无法修改时,算法结束
如果有一行全为a,则是无损连接
否则不具有无损性
保持依赖检验算法
判断X+是否含有Y,有则过
更强的条件:因为部分依赖可以作传递
更强的条件:如果有传递,最左边的作为候选
键,右边的式子则不含候选键
更强的条件:可以证明
资源评论
坑货两只
- 粉丝: 67
- 资源: 290
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- python-leetcode面试题解之第157题用Read4读取N个字符-题解.zip
- python-leetcode面试题解之第156题上下翻转二叉树-题解.zip
- python-leetcode面试题解之第155题最小栈-题解.zip
- python-leetcode面试题解之第153题寻找旋转排序数组中的最小值-题解.zip
- python-leetcode面试题解之第152题乘积最大子数组-题解.zip
- python-leetcode面试题解之第151题反转字符串中的单词-题解.zip
- python-leetcode面试题解之第150题逆波兰表达式求值-题解.zip
- python-leetcode面试题解之第149题直线上最多的点数-题解.zip
- python-leetcode面试题解之第148题排序链表-题解.zip
- python-leetcode面试题解之第147题对链表进行插入排序-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功