机房重构之数据库设计
来源:互联网 发布:文化部网络直播黑名单 编辑:程序博客网 时间:2024/09/21 07:52
一、画ER图
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联 系的方法,用来描述现实世界的概念模型。
绘制方法:
⑴确定所有的实体集合
⑵选择实体集应包含的属性
⑶确定实体集之间的联系
⑷确定实体集的关键字,用下划线在属性上表明关键字的属性组合
⑸确定联系的类型,在用线将表示联系的菱形框联系到实体集时,在线旁注明是1或n(多)来表示联系的类型
二、将ER图转化成关系模式
1:1 :例如 CardInfo 和StudentInfo 是1:1的关系
CardInfo(CardNo,Balance,CardState)
StudentInfo(StuID,StuName,StuDept,StuSex,StuClass,,StuState)
转化后
StudentInfo(StuID,CardNo,StuName,StuDept,StuSex,StuClass,,StuState)
或
CardInfo(CardNo,StuNo,Balance,CardState)
即把主键加入到任一方均可
1:n : 例如UserInfo 和 CardInfo 是在注册方面是1:n的关系
UserInfo(UserID,Password,UserName,UserLevel)
CardInfo(CardNo,Balance,CardState)
转换后
CardInfo(CardNo,UserID,Balance,CardState)
即把主键放到n方
n:m :例如UserInfo 和 CardInfo 是在充值方面是n:m的关系(一个用户可以充值多 张卡,一张卡可以被多个用户充值)
CardInfo(CardNo,Balance,CardState)
UserInfo(UserID,Password,UserName,UserLevel)
转化后
CardInfo(CardNo,Balance,CardState)
UserInfo(UserID,Password,UserName,UserLevel)
Recharge(CardNo,UserID,Money,OpTime)
加入一个新的关系模式并把两个的主键分别加入到新的关系模式中
三、用三范式规范数据库
1、第一范式(原子性)
本系统中没有找到很好的例子,随便举一个例子说明问题
非第一范式关系
系名称
高级职称人数
教授
副教授
计算机系
6
10
信息管理系
3
5
第一范式关系
系名称
教授人数
副教授人数
计算机系
6
10
信息管理系
3
5
第一个表中“高级职称人数”不是原子属性,他还包括两个子值
2、第二范式(不存在局部依赖)
Recharge(CardNo,UserID,Money,OpTime)
在这个充值关系中,CardNo,UserID 决定 OpTime,所以他俩组合做主键,但是CardNo 自己就可以决定Money,因此存在局部依赖。
优化为
Recharge(CardNo,UserID,OpTime)
Balance(CardNo,Money)
即满足第二范式要求
3、第三范式(不含传递依赖)
没有在此系统中找到合适的例子,举其他例子说明此问题
Student(StuNo,StuDept,StuDeptTeacher)
stuNo 可以决定stuDept
StuDept可以决定 StuDeptTeacher
这样就存在传递依赖
优化后
Student(StuNo,StuDept)
Dept(StuDept,StuDeptTeacher)
4、三范式的关系
满足第三范式必须满足第一和第二范式
- 机房重构之数据库设计
- 机房重构之数据库设计
- 机房重构之数据库设计
- 机房重构之数据库设计
- 机房重构之--数据库设计说明书
- 机房重构之数据库设计
- 机房重构之数据库设计
- 【重构机房】 设计数据库
- 【机房重构】数据库设计
- 机房重构--数据库设计
- 【机房重构】-数据库设计
- 【机房个人重构】数据库设计之物理设计
- VB.NET机房重构之数据库设计
- 【机房个人重构】数据库设计之概念模型
- 【机房个人重构】数据库设计之逻辑模型
- 机房重构—数据库设计
- 机房重构--数据库设计(一)
- 机房重构--数据库设计(二)
- php安全
- 【HDU 1042】N! —— 高精度整数
- svn的建立以及使用
- thinkphp3.1.3多对多关联模型BUG修复
- UI UIActionSheet
- 机房重构之数据库设计
- 在ubuntu下如何搜索文件?
- 求int型数据在内存中存储时1的个数 (十进制转二进制)
- win7下搭建hadoop2.6.0伪分布式平台
- 浅谈void 和void*
- 浅谈php安全
- 面向对象(匿名对象的使用)
- VB.NET 章鱼哥 自定义控件的建立和使用
- 概率论与数理统计(2)