数据库DBMS(大学期末课设)——学生管理系统数据库设计

一、程序介绍

  •    数据库需要表达的信息有以下:
  • 学生信息;
  • 课程表信息;
  • 教师信息;
  • 学生课程视图信息;
  • 操作日志信息; 

该项目根据学生选课,学生信息,教师,课表之间关系,建立一个简单的数据库系统,允许基本增删改查操作,存储过程建立,主键外键约束等等,同时提供ER模型,逻辑设计表等。  

E-R模型如下 :

逻辑设计

通过E-R模型到关系模型的转换,可以得到如下关系模式:

  1. Course(C_id,C_name,C_num)
  2. Students(S_id,S_name,S_sex,S_birthdate,S_class,S_course1,S_course2,S_courses3)
  3. log (users,time,actiontype,action_id)
  4. Teachers (T_id,T_name,T_sex,T_class

说明:

  1. 每门课程只有一个课程号,每个学生和教师只有一个学号或职工号,学生可以选课或退课多门,教师只能修改本班学生的信息。
  2. 由于课程号与学生选课的返回结果一致,当教师更新课程号时,对应学生课程

信息也应同步更新。学生,教师,课程联系为11p一位教师可更新多门课程信息,同时教师可对本班学生进行换课,此时联系12n

  1. 学生与教师对课程表和个人信息等进行更新,插入等操作返回日志,每次操作可返回多条日志,学生,教师,日志之间联系为11j

【物理设计】

为了提高在表中搜索元组速度,应该建立索引,下面是索引表项:

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);

需要完整代码可私信或评论区联系我!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值