根据三范式进行业务建模
1)第一范式是指数据库表中的每个字段都是原子性的,即不可再分的。
例如:学生表,字段如下 ,其中班级字段就需要再次拆分,拆分后的属性如图2
学生表 | ||||
id | 学生姓名 | 学生年龄 | 学生性别 | 班级 |
1 | 张三 | 8 | 男 | 一年级二班 |
2 | 李四 | 8 | 男 | 一年级一班 |
图一
学生表 | |||||
id | 学生姓名 | 学生年龄 | 学生性别 | 年级 | 班级 |
1 | 张三 | 8 | 男 | 一年级 | 二班 |
2 | 李四 | 8 | 男 | 一年级 | 一班 |
图二
2)消除部分依赖
这种情况一般是存在联合主键情况下,非主键列不完全依赖所有主键,只依赖部分主键。如学生姓名这一列跟时间没有关系,故学生姓名需要剔除,单独建立如图二学生表。
打卡记录 | ||||
id | 学生Id | 学生姓名 | 时间 | 是否打卡 |
1 | 3 | 张三 | 周三上午 | 是 |
2 | 4 | 李四 | 周三下午 | 否 |
图三
3)消除传递依赖
图四所示年级班级表中,校长字段显然冗余了。因为校长字段是学校属性,并不属于年级班级属性。故校长字段应该删除。新建校领导表进行存储。
年级班级表 | ||||
id | 学校 | 年级 | 班级 | 校长 |
1 | 实验小学 | 一年级 | 一班 | 张三 |
2 | 实验小学 | 一年级 | 一班 | 张三 |
图四
依据三范式建立数据库表可以达到的效果:
1)消除冗余性,因为表字段进行了最细粒度的分割,故而各个表结构不在保留分散的属性
2)提高数据一致性,冗余字段在业务系统中会产生数据更新时的不一致。根据三范式建立的数据库表,可以最大限度提供数据一致性。
标签:班级,建表,步骤,数据库,学生,id,一年级,年级,主键 From: https://blog.csdn.net/u013254794/article/details/137457225