use MyDatabase
create table 学生表
(
学号 varchar(16) primary key,
姓名 varchar(8),
性别 char(2) check (性别 IN ('男','女')),
出生日期 date,
所在系 varchar(20),
专业 varchar(20),
班号 varchar(10),
联系号码 varchar(20),
QQ号码 varchar(15),
通讯地址 varchar(20)
)
create table 课程表
(
课程号 varchar(16) primary key,
课程名 varchar(30) NOT NULL,
学分 tinyint check(学分 between 1 and 8),
开课学期 tinyint check(开课学期 between 1 and 12),
课程性质 varchar(4) check(课程性质 in ('必修','选修')),
考试性质 varchar(4) check(考试性质 in ('考试','考查')),
授课时数 tinyint check(授课时数 <=68),
实践时数 tinyint check(实践时数 <=68),
平时成绩比例 numeric(1,1)
)
create table 教师表
(
教师号 varchar(16) primary key,
教师名 varchar(8) not null,
性别 char(2) check(性别 in ('男','女')),
职称 varchar(6) check(职称 in ('助教','讲师','副教授','教授')),
学历 varchar(6) check(学历 in('本科','硕士','博士','博士后')),
出生日期 date,
所在部门 varchar(30),
联系号码 varchar(20),
通讯地址 varchar(20)
)
create table 选课表
(
学号 varchar(16) not null,
课程号 varchar(16) not null,
选课学年 varchar(4),
选课学期 char(1) check(选课学期 like '[12]'),
primary key (学号,课程号,选课学年,选课学期),
foreign key(学号) REFERENCES 学生表(学号),
foreign key(课程号) REFERENCES 课程表(课程号)
)
create table 成绩表
(
学号 varchar(16),
课程号 varchar(16),
考试次数 tinyint check(考试次数 between 1 and 3),
平时成绩 tinyint,
考试成绩 tinyint,
总评成绩 tinyint,
primary key (学号,课程号),
foreign key(学号) REFERENCES 学生表(学号),
foreign key(课程号) references 课程表(课程号)
)
create table 授课表
(
课程号 varchar(16) not null,
教师号 varchar(16) not null,
学年 varchar(4),
学期 tinyint,
主讲时数 tinyint,
辅导时数 tinyint,
带实验时数 tinyint,
primary key (课程号,教师号,学年,学期),
foreign key(课程号) REFERENCES 课程表(课程号),
foreign key(教师号) REFERENCES 教师表(教师号)
)