数据库设计范式
数据库有6大范式,一般到BCNF范式就行了;
| 学生选课总表(学号,姓名,课程号,课程名,成绩,系名,系主任),复合主键是(学号,课程号) |
| 当前满足范式 | 不满足下一级范式的原因 | 下一步拆分动作 |
|---|---|---|
| 1NF | 姓名、课程名等非主属性仅依赖复合主键的一部分,存在部分函数依赖 | 学生表(学号,姓名,系名,系主任)、 课程表(课程号,课程名)、 选课表(学号,课程号,成绩) |
| 2NF | 学生表中:学号→系名,系名→系主任,存在传递函数依赖 | 学生表(学号,姓名,系名)、 系表(系名,系主任)、 课程表(课程号,课程名)、 选课表(学号,课程号,成绩) |
| 3NF | 新增教师授课表(学生,教师,课程),其复合主键为:「学生+课程」或「学生+教师」: 学号、教师、课程都是主属性:学号→教师,教师→课程,主属性间存在传递依赖 | 教师授课表(教师,课程)、 学生选课表(学生,教师), |
| BCNF | 无更高常规范式要求 | 无需继续拆分 |
