赞
踩
概念描述:
例如:一个人只能拥有一张身份证,一张身份证也只能对应一个人。
那么这里的一个人和身份证就是一对一的关系。
多表之间一对一关系如何实现?
两个一对一关系的表,可以在任意一方添加外键,并将外键指向另一方的主键。(实现的提前条件必须使用关键字unique对外键进行唯一约束。一般一对一关系的表,直接合并成一张表,很少用,了解即可)
概念描述:
例如:一个学生只能属于一个系,但一个系可以有很多的学生。
那么这里的一个系和学生就是1:n关系。
多表之间的一对多关系如何实现?
例如一个系和学生。在学生的表(多的一方)中建立外键,指向系的主键。
概念描述:
例如:一个学生可以选择多门课程,一门课程可以被多个学生选择。
那么这里的学生和课程就是m:n关系。
多表之间的多对多关系如何实现?
借助中间表来实现。在中间表中至少包含两个字段,并且两个多对多关系的表主键作为外键写入中间表。
在表中,所有的列都是不可再分的原子项。(了解即可,因为表一创建便满足第一范式)
在第一范式的基础上,消除部分函数依赖。关于部分函数依赖,又引申出以下几点,具体参照如下图:
例如:学号-->名字,(学号,课程名称)-->分数
(简单翻译:通过学号可以确定名字的唯一值,通过学号,课程名称就可以确定唯一的分数值。这里的学号是属性,学号,课程名称是属性组)
例如:(学号,课程名称)-->分数
(简单翻译:参照上图。
学号10010它可以查询出很多科目的分数,课程大学英语也可以查询出很多个同学的成绩分数,所以说单是学号或者是课程名没有办法去确定唯一的分数。想要获得分数的某个值,必须要依赖学号和课程名称这两个属性去确认,这个就叫完全函数依赖
)
例如:(学号,课程名称)-->系名
(简单翻译:只要通过查询某个学生的学号,就可以确定他是哪个系的,完全不需要课程名称这个属性,这就是部分函数依赖)
例如:学号-->系名,系名-->系主任,最终学号-->系主任
例如:(学号,课程名称)-->分数
学号,课程名称就是表的码。
(1)创建一张表,包含以下信息(表一创建就满足第一范式)
(2)满足第二范式(在第一范式的基础上,消除部分函数依赖)
部分函数依赖:学号-->姓名,学号-->系名,系名-->系主任,学号-->系主任(传递依赖)
完全函数依赖:(学号,课程名称)-->分数
消除部分函数依赖:消除姓名,系名,系主任等列,得到下图,满足第二范式。
(3)满足第三范式(在第二范式的基础上,消除传递依赖)
由第二范式的图可知,传递依赖:学号-->系名,系名-->系主任,学号-->系主任
消除传递依赖:将系名、系主任去除。
满足第三范式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。