MySQL之三范式、ER图

宋玥珂的突然更新~

范式:设计数据库表时所依据的规范

第一范式:一张表内字段不重复出现 如课程数学 课程英语。又比如联系方式中既有邮箱又有电话。


一个例子

第二范式:建立在第一范式基础上 要求非主键字段完全依赖主键,不能产生部分依赖。尽量不使用联合主键。

一个反例

解决方式:一共建立三个表。建一个学生表字段为学生编号和姓名 一个教师表字段为教师编号和姓名。 再建一个关系表 ,把学生编号(外键 来自学生表)和教师编号(外键 来自教师表)做联合主键, 这就是一个典型的多对多的设计。

第三范式:在满足第二范式基础上,非主键字段不能依赖与主键字段(不要产生传递依赖)。


该表已经满足第二范式 但是非主键字段班级名称依赖班级编号 仍然存在数据冗余

解决方式:一对多,在多的一方表中添加指向一的一方的主键字段的外键。分两张表存储。

就像这样啦

一对一有两种方案:

1.分两张表储存  共享主键

在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面



2.分两张表储存 外键唯一


设计时尽量遵循三范式,但是还是要看具体需求。

ER图


首先放一张被组长大神认可的ER图

一直以来组长都说ER图和需求分析十分关键,写好它们可以防止后期遇到很多的麻烦。本来我是想写ER图和需求分析的,但是感觉一时半会理不特别清楚那个逻辑,况且小组的别的同学登录界面都做出来了,我就准备做登录界面,甚至图都P好了。

就是这个带我logo的图

但是组长来,说还是要先写ER图。于是接下来的三天,我决定去写ER图。那就来点干货吧。

首先要了解ER图的核心要素:实体,属性,关系;实体就是一个个对象,比如猫;属性就是实体所有的某个属性,比如猫的性别;关系就是实体和实体之间或者实体内部之间的关系。其次我们要了解ER图中怎么表示1中描述的三个核心要素:在ER图中,矩形代表实体,椭圆代表属性,菱形代表关系,各个形状之间用线段连接。

画图不是难点,难的是理清楚之间的关系,把要实现的功能都想好。

实体变成表,实例变成行,属性变成列,唯一标识变成主键,关系变成外键列和外键约束条件。

1.24日的更新

一直看网上的ER图也没有头绪 还是要自己理清 想了两天的ER图 啊好崩溃。更难过的是没有进展,这种感觉很绝望。

你可能感兴趣的:(MySQL之三范式、ER图)