目录
- 教师表 teacher
字段名 |
数据类型 |
长度(字节数) |
是否可null |
默认值 |
主、外键 |
其他约束 |
备注信息 |
NO |
CHAR |
4 |
主键 |
教师号 |
|||
NAME |
VARCHAR |
10 |
否 |
教师姓名 |
|||
PROF |
VARCHAR |
20 |
否 |
assistant |
职称 |
||
SAL |
INT |
2 |
否 |
工资 |
|||
COMM |
SMALLINT |
2 |
岗位津贴 |
create table teacher(
-> no char(4),
-> name varchar(10) not null,
-> prof varchar(20) not null default "assistant",
-> sal int(2) not null,
-> comm smallint(2),
-> primary key(no)
-> );
编辑
2.学生表 student
字段名 |
数据类型 |
长度(字节数) |
是否可null |
默认值 |
主、外键 |
其他约束 |
备注信息 |
NO |
CHAR |
4 |
主键 |
学生号 |
|||
NAME |
VARCHAR |
10 |
否 |
学生姓名 |
|||
AGE |
TINYINT |
1 |
否 |
年龄 |
|||
DEPT |
VARCHAR |
20 |
否 |
computer |
系名 |
create table student(
-> no char(4),
-> name varchar(10) not null,
-> age tinyint(1) not null,
-> dept varchar(20) not null default "computer",
-> primary key(no)
-> );
编辑
3.课程表 course
字段名 |
数据类型 |
长度(字节数) |
是否可null |
默认值 |
主、外键 |
其他约束 |
备注信息 |
NO |
CHAR |
4 |
主键 |
课程号 |
|||
NAME |
VARCHAR |
20 |
否 |
唯一 |
课程名 |
||
CLASS_HOURS |
INT |
2 |
45 |
课时数 |
create table course(
-> no char(4),
-> name varchar(20) not null,
-> class_hours int(2) default "45",
-> primary key(no)
-> );
编辑
4.授课表 school_teaching
字段名 |
数据类型 |
长度(字节数) |
是否可null |
默认值 |
主、外键 |
其他约束 |
备注信息 |
ID |
INT |
4 |
主键 |
自动增加 |
序号 |
||
COURSE_NO |
CHAR |
4 |
否 |
外键course(no) |
课程号 |
||
TEACHER_NO |
CHAR |
4 |
否 |
外键teacher(no) |
教师号 |
||
WEEK |
INT |
2 |
15 |
周数 |
|||
CLASS_NUM |
VARCHAR |
10 |
否 |
教室号 |
create table schoolteaching(
-> id int(4),
-> course_no char(4) not null,
-> teacher_no char(4) not null,
-> week int(2) default "15",
-> class_num varchar(10) not null,
-> primary key(id),
-> constraint fk_course_no foreign key (course_no) references course(no),
-> constraint fk_teacher_no foreign key (teacher_no) references teacher(no)
-> );
编辑
5.成绩表 grade
字段名 |
数据类型 |
长度(字节数) |
是否可null |
默认值 |
主、外键 |
其他约束 |
备注信息 |
STUDENT_NO |
CHAR |
4 |
否 |
主键 |
学生号 |
||
COURSE_NO |
CHAR |
4 |
否 |
主键 |
课程号 |
||
SCORE |
FLOAT |
否 |
60 |
成绩 |
create table grade(
-> student_no char(4) not null,
-> course_no char(4) not null,
-> score float not null default "60",
-> primary key(student_no,course_no)
-> );
编辑
总结
- 保证每列的合理性,不可分解,意思表达要清楚,高度概括字段的含义,能用一个字段表达清楚的绝不使用第二个字段
- 为了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的目的。