一、程序介绍
- 数据库需要表达的信息有以下:
- 学生信息;
- 课程表信息;
- 教师信息;
- 学生课程视图信息;
- 操作日志信息;
该项目根据学生选课,学生信息,教师,课表之间关系,建立一个简单的数据库系统,允许基本增删改查操作,存储过程建立,主键外键约束等等,同时提供ER模型,逻辑设计表等。
E-R模型如下 :
【逻辑设计】
通过E-R模型到关系模型的转换,可以得到如下关系模式:
- Course(C_id,C_name,C_num)
- Students(S_id,S_name,S_sex,S_birthdate,S_class,S_course1,S_course2,S_courses3)
- log (users,time,actiontype,action_id)
- Teachers (T_id,T_name,T_sex,T_class)
说明:
- 每门课程只有一个课程号,每个学生和教师只有一个学号或职工号,学生可以选课或退课多门,教师只能修改本班学生的信息。
- 由于课程号与学生选课的返回结果一致,当教师更新课程号时,对应学生课程
信息也应同步更新。学生,教师,课程联系为1:1:p一位教师可更新多门课程信息,同时教师可对本班学生进行换课,此时联系1:2:n。
- 学生与教师对课程表和个人信息等进行更新,插入等操作返回日志,每次操作可返回多条日志,学生,教师,日志之间联系为1:1:j。
【物理设计】
为了提高在表中搜索元组速度,应该建立索引,下面是索引表项:
Students-S_id_idx(S_id)
Course_C_id_idx(C_id)
Teachers_T_id_idx(T_id)
二、功能展示
Course表
Students表
Teachers表
视图
另外一键添加学生,用户,教师只能修改本班学生信息,选课人数上限等这里不一一展示看下图
三、部分代码
代码文件sql格式,这里无法上传
-- 日志表
CREATE TABLE IF NOT EXISTS log(
users VARCHAR(50),
time VARCHAR(50),
actiontype VARCHAR(50),
action_id VARCHAR(50)
);
-- 课程表
CREATE TABLE IF NOT EXISTS Course (
C_id CHAR(3) PRIMARY KEY NOT NULL,
C_name VARCHAR(50) NOT NULL,
C_num CHAR(2) NOT NULL
);
-- 学生表
CREATE TABLE IF NOT EXISTS Students (
S_id CHAR(10) PRIMARY KEY NOT NULL,
S_name VARCHAR(50) NOT NULL,
S_sex CHAR(1) NOT NULL,
S_birthdate VARCHAR(10) NOT NULL,
S_class VARCHAR(3) NOT NULL,
S_course1 VARCHAR(3),
S_course2 VARCHAR(3),
S_course3 VARCHAR(3),
FOREIGN KEY (S_course1) REFERENCES Course (C_id) ON UPDATE CASCADE,
FOREIGN KEY (S_course2) REFERENCES Course (C_id) ON UPDATE CASCADE,
FOREIGN KEY (S_course3) REFERENCES Course (C_id) ON UPDATE CASCADE
);
-- 教师表
CREATE TABLE IF NOT EXISTS Teachers (
T_id CHAR(3) PRIMARY KEY NOT NULL,
T_name VARCHAR(50) NOT NULL,
T_sex CHAR(1) NOT NULL,
T_class VARCHAR(3) NOT NULL
);
-- 学生课表视图
CREATE VIEW Student_Courses_View AS
SELECT S.S_id, C1.C_name AS 课程1, C2.C_name AS 课程2, C3.C_name AS 课程3
FROM
Students S
LEFT OUTER JOIN Course C1 ON S.S_course1 = C1.C_id
LEFT OUTER JOIN Course C2 ON S.S_course2 = C2.C_id
LEFT OUTER JOIN Course C3 ON S.S_course3 = C3.C_id;
-- 索引
CREATE INDEX Students_S_id_idx ON Students (S_id);
CREATE INDEX Course_C_id_idx ON Course (C_id);
CREATE INDEX Teachers_T_id_idx ON Teachers (T_id);
需要完整代码可私信或评论区联系我!!!