请问我这样设计这个数据库合理吗?SQL SERVER2000

来源:百度知道 编辑:UC知道 时间:2024/07/07 17:06:33
能给点设计数据库的技巧吗
专业表:
专业编号(主键) 专业名称
1 广告
2 网络
3 软件

班级表:
班级(主键) 专业编号(外键:专业表) 班主任
广告1班 1 甘棉
网络1班 2 黎枫
软件1班 3 李想

课程表:
课程名(主键) 专业编号(外键:专业表)
flash 1
photoshop 1
计算机基础 2
网络布线 2
C# 3
java 3

学生表:
学号(主键) 姓名(主键) 性别 地址 班级(外键:班级表)
001 黄灿 男 广告1班
002 黄剑 男 网络1班
003 杨世周 男 软件1班

最后有一个成绩表不知道怎么设计,是把整个科的学生的成绩都放在一个表里面吗?还是一个
专业的学生的成绩放在一个表?比如:

软件成绩表:
编号(主键) 专业编号 班级 姓名 课程名 成绩
1 3 软件1班 杨世周 C# 80.3
2 3 软件1班

1,课程最好也用个课程ID,不排除这种情况,课程名相同,但是并不是一种课程。
2,把所有的成绩全部放一张表里面。
字段:学号,课程号,分数,其他的字段都不需要,这样才至少符合3NF

在设计表的时候,右击表的字段,选择check约束,然后新增一个,填写上 性别='男' or 性别=‘女’

这不符合三范式的第三范式.
第一范式是确保每列的原子性
第二范式是在基于一范式的前提下,除了主键以外的其它列都依赖于该主键
第三范式是基于二范式,除了主键以外的其它列都不传递依赖于主键列