# 表设计的三大范式
所谓范式,即如何建立科学的,规范的的数据库,需要满足一些规范的来优化数据数据存储方式的指导办法。
1第一范式(1NF)
每一列属性都是不可再分的属性值,确保每一列的原子性
合理的根据实际业务数据需求来决定属性,合并相似或相同的列,避免冗余
2第二范式(2NF)
需要确保数据库表中的每一列都和主键相关,如果是联合主键,则需要和所有主键均相关而不能只与主键和某一部分相关
在一个数据库表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中
3第三范式(3NF)
确保数据表一个记录中的数据都和主键直接相关,而不是间接相关,不能存在传递关系
属性不依赖于其他非主属性
数据库实体间有三种对应关系:一对一,一对多,多对多。
一对一关系示例:
一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。
一对多关系示例:
一个学生只属于一个班,但是一个班级有多名学生。
多对多关系示例:
一个学生可以选择多门课,一门课也有多名学生。
1.一对多关系处理:
通过学生和班级问题了解一对多:
设计数据库表:只需在学生表 中多添加一个班级号的ID;
注:在数据库中表中初学时,还是通过添加主外键约束,避免删除数据时造成数据混乱!
2.多对多关系处理:
通过学生选课了解多对多问题的处理:
在多对多中在一个表中添加一个字段就行不通了,所以处理多对多表问题时,就要考虑建立关系表了
注:所以对于多对多表,通过关系表就建立起了两张表的联系!多对多表时建立主外键后,要先删除约束表内容再删除主表内容