这段时间在设计财务人事以及资金控制系统数据库的设计,小公司啥都得自己干~所以开始研究3大范式 以下是我自己的总结。
数据库范式2
表一
(姓名 年龄 科目 分数 科目学分)
王 19 数学 100 5
王 19 物理 90 3
王 19 化学 60 4
满足第二范式!!!
表一
姓名 科目 分数
王 数学 100
王 物理 90
王 化学 60
表二
姓名 年龄
王 19
表三
科目 科目学分
数学 5
物理 3
化学 4
1.数据库冗余
2.更新异常 要将所有的19都改去
3. 插入异常 加入我要新增科目 ,还没有学生选科目,由于主键约束(姓名) 导致科目无法插入!
数据库范式3
假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)
这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:
(学号) → (所在学院) → (学院地点, 学院电话)
说白了:第二范式就是与主键同级字段的重复,造成的不符合第二范式(学号 姓名)
第三范式就是与主键下一级字段造成的重复(学号 所在学院 学院电话)
数据库范式2
表一
(姓名 年龄 科目 分数 科目学分)
王 19 数学 100 5
王 19 物理 90 3
王 19 化学 60 4
满足第二范式!!!
表一
姓名 科目 分数
王 数学 100
王 物理 90
王 化学 60
表二
姓名 年龄
王 19
表三
科目 科目学分
数学 5
物理 3
化学 4
1.数据库冗余
2.更新异常 要将所有的19都改去
3. 插入异常 加入我要新增科目 ,还没有学生选科目,由于主键约束(姓名) 导致科目无法插入!
数据库范式3
假定学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)
这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:
(学号) → (所在学院) → (学院地点, 学院电话)
说白了:第二范式就是与主键同级字段的重复,造成的不符合第二范式(学号 姓名)
第三范式就是与主键下一级字段造成的重复(学号 所在学院 学院电话)