第三周作业

创建学生管理数据库studentmanager

DROP DATABASE if exists studentmanager;

CREATE DATABASE if not exists studentmanager;

创建学生管理数据库studentmanager中的各表:

department(系部表)

字段名

数据类型

约  束

说明

dep_id

char(10)

主键

系部编号

dep_name

varchar(20)

非空、唯一

系部名称

dep_head

varchar(10)

 

系部主任

#系部表
drop table if exists department;
create table if not exists department
(
dep_id char(10) key comment '系部编号',
dep_name varchar(20) not null unique comment '系部名称',
dep_head varchar(10) comment '系部主任'
) engine=innodb;

teacher(教师表)

字段名

数据类型

约  束

说明

t_id

char(10)

主键

教师编号

t_name

varchar(10)

非空

教师姓名

t_sex

ENUM

取值只能为“男”或“女”

性别

t_entrydate

date

默认值为当前系统日期(curdate()函数)

入职日期

t_professor

varchar(10)

 

职称

t_salary

Decimal(10,2)

大于等于0

基本工资

dep_id

char(10)

外键,与系部表的“系部编号”关联

系部编号

注意:MySQL 日期类型及默认设置,参考如下:https://blog.csdn.net/gxy_2016/article/details/53436865

注意:解决无法创建外键问题:https://segmentfault.com/a/1190000020191540

MySQL创建表时添加外键约束:https://wubin.work/blog/articles/153

在创建表时使用enum()时,注意:https://blog.csdn.net/qq_35456045/article/details/105170880

#教师表
create table if not exists teachar
(
t_id char(10) key comment '教师编号',
t_name varchar(10) not null comment '教师名字',
t_sex ENUM('男','女')  comment '性别',
t_entrydata timestamp default current_timestamp comment '入职时间',
t_professor varchar(10) comment '职称',
t_salary Decimal(10,2) unsigned comment '基本工资',
dep_id char(10) comment '系部编号',
constraint fk_t_id_dep_id
foreign key(t_id) references department(dep_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

 course(课程表)

字段名

数据类型

说  明

course_id

char(10)

课程号,主键

course_name

varchar(20)

课程名称,唯一键

course_credit

Tinyint

学分,取值范围在1-10之间

course_type

char(10)

课程类型

 

注意:学分的取值范围怎么表示现在还不太会。

1 #课程表
2 create table if not exists course
3 (
4 course_id char(10) key comment '课程号',
5 course_name varchar(20) unique comment '课程名称',
6 course_credit Tinyint comment '学分',
7 course_type char(10) comment '课程类型'
8 )ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

class(班级表)

字段名

数据类型

约  束

说明

c_id

char(10)

主键

班级编号

c_name

varchar(20)

非空

班级名称

c_mentor

varchar(10)

 

班主任

dep_id

char(10)

外键,与系部表的“系部编号”关联

系部编号

 

 

 

 

 

 

 

 

 1 #班级表
 2 create table if not exists class
 3 (
 4 c_id char(10) key comment '班级编号',
 5 c_name varchar(20) not null comment '班级名称',
 6 c_mentor varchar(10) comment '班主任',
 7 dep_id char(10) comment '系部编号',
 8 constraint fk_id_id
 9 foreign key(dep_id) references department(dep_id)
10 )engine=innodb default charset=utf8;

student(学生表)

字段名

数据类型

约  束

说明

s_id

char(10)

主键

学号

s_name

varchar(10)

非空

姓名

s_sex

char(2)

 取值只能为“男”或“女”

性别

s_borndate

date

 

出生日期

s_enrolldate

date

默认值为系统日期curdate()

入学日期

s_telephone

char(11)

 

联系电话

s_address

varchar(30)

 

家庭住址

c_id

char(10)

外键,与班级表的班级号关联

班级编号

#学生表
create table if not exists student
(
s_id char(10) key,#学号
s_name varchar(10) not null, #姓名
s_sex char(2),
s_borndate timestamp, #出生日期
s_enrolldata timestamp default current_timestamp comment '入学日期',
s_telephone char(11), #联系电话
s_address varchar(30), #家庭住址
c_id char(10), #班级编号,
constraint fk_cid_cid
foreign key(c_id) references class(c_id)
)engine=innodb default charset=utf8;

 

 

s_c(选课表)

字段名

数据类型

约  束

说明

s_id

char(10)

与课程号组合做主键

外键,与学生表的学号关联

学号

course_id

char(10)

外键,与课程表的课程号关联

课程号

grade

decimal(4,1)

取值范围在0-100之间,默认值为0

成绩

 

 

 

 

 

 

 

 

 

 1 #选课表
 2 create table if not exists s_c
 3 (
 4 s_id char(10) comment '学号',
 5 course_id char(10) comment '课程号',
 6 grade decimal(4,1) comment '成绩',
 7 primary key(s_id,course_id),
 8 constraint fk_courseId_courseID
 9 foreign key(course_id) references course(course_id)
10 )engine=innodb default charset=utf8;

 

t_c(授课表)

字段名

数据类型

约  束

说明

t_id

char(10)

与课程号组合做主键

外键,与教师表的教师编号关联

教师编号

course_id

char(10)

外键,与课程表的课程号关联

课程号

term

tinyint

正整数

开课学期

 

 1 #授课表
 2 create table if not exists t_c
 3 (
 4 t_id char(10) comment '教师编号',
 5 course_id char(10) comment '课程号',
 6 term tinyint unsigned comment '开课学期',
 7 primary key(t_id,course_id),
 8 constraint fk_tID_tID 
 9 foreign key(t_id) references teachar(t_id),
10 constraint fk_courseID_course_id 
11 foreign key(course_id) references course(course_id) 
12 )engine=innodb default charset=utf8;

 

完整代码如下

DROP DATABASE
IF
    EXISTS studentmanager;
CREATE DATABASE
IF
    NOT EXISTS studentmanager;
SHOW DATABASES;
USE studentmanager;#系部表
DROP TABLE
IF
    EXISTS department;
CREATE TABLE
IF
    NOT EXISTS department (
        dep_id CHAR ( 10 ) KEY COMMENT '系部编号',
        dep_name VARCHAR ( 20 ) NOT NULL UNIQUE COMMENT '系部名称',
        dep_head VARCHAR ( 10 ) COMMENT '系部主任' 
    ) ENGINE = INNODB DEFAULT CHARSET = utf8;
SHOW TABLES;
DESC department;
DROP TABLE
IF
    EXISTS teachar;#教师表
CREATE TABLE
IF
    NOT EXISTS teachar (
        t_id CHAR ( 10 ) KEY COMMENT '教师编号',
        t_name VARCHAR ( 10 ) NOT NULL COMMENT '教师名字',
        t_sex ENUM ( '', '' ) COMMENT '性别',
        t_entrydata TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',
        t_professor VARCHAR ( 10 ) COMMENT '职称',
        t_salary DECIMAL ( 10, 2 ) UNSIGNED COMMENT '基本工资',
        dep_id CHAR ( 10 ) COMMENT '系部编号',
        CONSTRAINT fk_t_id_dep_id FOREIGN KEY ( t_id ) REFERENCES department ( dep_id ) 
    ) ENGINE = INNODB DEFAULT CHARSET = utf8;
SHOW TABLES;
DESC teachar;
DROP TABLE
IF
    EXISTS course;#课程表
CREATE TABLE
IF
    NOT EXISTS course (
        course_id CHAR ( 10 ) KEY COMMENT '课程号',
        course_name VARCHAR ( 20 ) UNIQUE COMMENT '课程名称',
        course_credit TINYINT COMMENT '学分',
        course_type CHAR ( 10 ) COMMENT '课程类型' 
    ) ENGINE = INNODB DEFAULT CHARSET = utf8;
SHOW TABLES;
DESC course;
DROP TABLE
IF
    EXISTS class;#班级表
CREATE TABLE
IF
    NOT EXISTS class (
        c_id CHAR ( 10 ) KEY COMMENT '班级编号',
        c_name VARCHAR ( 20 ) NOT NULL COMMENT '班级名称',
        c_mentor VARCHAR ( 10 ) COMMENT '班主任',
        dep_id CHAR ( 10 ) COMMENT '系部编号',
        CONSTRAINT fk_id_id FOREIGN KEY ( dep_id ) REFERENCES department ( dep_id ) 
    ) ENGINE = INNODB DEFAULT charset = utf8;
SHOW TABLES;
DESC class;
DROP TABLE
IF
    EXISTS student;#学生表
CREATE TABLE
IF
    NOT EXISTS student (
        s_id CHAR ( 10 ) KEY,#学号
        s_name VARCHAR ( 10 ) NOT NULL,#姓名
        s_sex CHAR ( 2 ),
        s_borndate TIMESTAMP,#出生日期
        s_enrolldata TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '入学日期',
        s_telephone CHAR ( 11 ),#联系电话
        s_address VARCHAR ( 30 ),#家庭住址
        c_id CHAR ( 10 ),#班级编号,
        CONSTRAINT fk_cid_cid FOREIGN KEY ( c_id ) REFERENCES class ( c_id ) 
    ) ENGINE = INNODB DEFAULT charset = utf8;
SHOW TABLES;
DESC student;
DROP TABLE
IF
    EXISTS s_c;#选课表
CREATE TABLE
IF
    NOT EXISTS s_c (
        s_id CHAR ( 10 ) COMMENT '学号',
        course_id CHAR ( 10 ) COMMENT '课程号',
        grade DECIMAL ( 4, 1 ) DEFAULT 0 COMMENT '成绩',
        PRIMARY KEY ( s_id, course_id ),
        CONSTRAINT fk_courseId_courseID FOREIGN KEY ( course_id ) REFERENCES course ( course_id ) 
    ) ENGINE = INNODB DEFAULT charset = utf8;
SHOW TABLES;
DESC s_c;
DROP TABLE
IF
    EXISTS t_c;#授课表
CREATE TABLE
IF
    NOT EXISTS t_c (
        t_id CHAR ( 10 ) COMMENT '教师编号',
        course_id CHAR ( 10 ) COMMENT '课程号',
        term TINYINT UNSIGNED COMMENT '开课学期',
        PRIMARY KEY ( t_id, course_id ),
        CONSTRAINT fk_tID_tID FOREIGN KEY ( t_id ) REFERENCES teachar ( t_id ),
        CONSTRAINT fk_courseID_course_id FOREIGN KEY ( course_id ) REFERENCES course ( course_id ) 
    ) ENGINE = INNODB DEFAULT charset = utf8;
SHOW TABLES;
DESC t_c;

 

posted @ 2022-09-13 21:32  Luli&  阅读(26)  评论(0)    收藏  举报