zoukankan      html  css  js  c++  java
  • MySQL-教学系统数据库设计

    根据大学教学系统的原型,我构建出如下ER关系图,来学习搭建数据库:

    上面共有五个实体,分别是学生,教师,课程,院系,行政班级:

    1、其中学生和课程的关系是多对多,即一个学生可以选择多门课程,而一个课程又有多个学生选择。每个学生的每门课程都有一个成绩,所以选课表中应该有成绩字段。

    2、课程和教师是多对一关系,即一个教师只教一门课程,而一个课程又由多位老师教授。

    3、教师和院系是一对多的关系,即一个教师只属于一个院系,而一个院系可以聘请多位老师。

    4、行政班级和院系是多对一的关系,即一个院系有多个行政班级,而一个行政班级只属于一个院系。

    5、学生和行政班级是多对一的关系,即一个行政班级有多个学生,而一个学生只属于一个行政班级。

    根据以上分析建立数据库:

    1、在桌面上新建文本文件,重命名为create.sql,然后图标自动变成如下图:

     双击自动使用MySQL Workbench打开,然后编辑如下代码:

      1 #########################
      2 #CREATED BY jiwangbujiu##
      3 #########################
      4 
      5 
      6 
      7 
      8 
      9 #########################
     10 ########创建数据库#######
     11 #########################
     12 CREATE DATABASE education;
     13 
     14 
     15 #########################
     16 ########使用数据库#######
     17 #########################
     18 USE education;
     19 
     20 
     21 #########################
     22 ########新建学生表#######
     23 #########################
     24 CREATE TABLE students
     25 (
     26 stu_id        int       NOT NULL    AUTO_INCREMENT,
     27 stu_name      char(50)  NOT NULL,
     28 stu_grade     char(2)   NULL,
     29 stu_sex       char(2)   NULL,
     30 cls_id        int       NULL,  ##外键
     31 stu_birthday  date      NULL,
     32 PRIMARY KEY  (stu_id)
     33 )ENGINE = InnoDB;
     34 
     35 
     36 #########################
     37 ########新建课程表#######
     38 #########################
     39 CREATE TABLE courses
     40 (
     41 cou_id        int       NOT NULL    AUTO_INCREMENT,
     42 cou_name      char(50)  NOT NULL,
     43 cou_score     char(2)   NULL,
     44 cou_introduce text      NULL,
     45 cou_limit     int       NULL,
     46 PRIMARY KEY  (cou_id)
     47 )ENGINE = InnoDB;
     48 
     49 
     50 #########################
     51 ########新建选课表#######
     52 #########################
     53 CREATE TABLE pick_courses
     54 (
     55 stu_id         int      NOT NULL,
     56 cou_id         int      NOT NULL,  ##外键
     57 stu_cou_score  int      NULL,
     58 PRIMARY KEY  (stu_id,cou_id)
     59 )ENGINE = InnoDB;
     60 
     61 
     62 #########################
     63 ########新建教师表#######
     64 #########################
     65 CREATE TABLE teachers
     66 (
     67 tec_id        int       NOT NULL    AUTO_INCREMENT,
     68 tec_name      char(50)  NOT NULL,
     69 dep_id        int       NULL,  ##外键
     70 PRIMARY KEY  (tec_id)
     71 )ENGINE = InnoDB;
     72 
     73 
     74 ##########################
     75 ########新建院系表########
     76 ##########################
     77 CREATE TABLE departments
     78 (
     79 dep_id        int       NOT NULL    AUTO_INCREMENT,
     80 dep_name      char(50)  NOT NULL,
     81 dep_introduce text      NULL,
     82 PRIMARY KEY  (dep_id)
     83 )ENGINE = InnoDB;
     84 
     85 
     86 #########################
     87 ######新建行政班级表#####
     88 #########################
     89 CREATE TABLE classes
     90 (
     91 cls_id        int       NOT NULL    AUTO_INCREMENT,
     92 dep_id        int       NULL,   ##外键
     93 PRIMARY KEY  (cls_id )
     94 )ENGINE = InnoDB;
     95 
     96 
     97 
     98 #########################
     99 #######添加外键关系######
    100 #########################
    101 ALTER TABLE students ADD CONSTRAINT fk_students_classes FOREIGN KEY (cls_id) REFERENCES classes (cls_id);
    102 ALTER TABLE teachers ADD CONSTRAINT fk_teacher_departments FOREIGN KEY (dep_id) REFERENCES departments (dep_id);
    103 ALTER TABLE classes ADD CONSTRAINT fk_classes_departments FOREIGN KEY (dep_id) REFERENCES departments (dep_id);
    104 ALTER TABLE pick_courses ADD CONSTRAINT fk_pick_courses_courses FOREIGN KEY (cou_id) REFERENCES courses (cou_id);
    105 ALTER TABLE pick_courses ADD CONSTRAINT fk_pick_courses_students FOREIGN KEY (stu_id) REFERENCES students (stu_id);

    这就是按照本文开始的ER关系图创建教学信息数据库的SQL代码,写完后保存关闭,然后打开软件navicat直接导入sql文件生成数据库。生成的数据库关系图如下:

    至此数据库框架就搭建好了,接下来就是往里面录入数据。

  • 相关阅读:
    c++深拷贝与浅拷贝
    c++构造函数的explicit
    c++虚函数和虚函数表
    c++重载、重写、隐藏(重定义)
    c++传值、传指针、传引用
    ASP.Net Core API 学习の中间件
    WPF中String Format的用法
    ASP.Net Core API 全局处理异常
    989. Add to Array-Form of Integer
    1014. Best Sightseeing Pair
  • 原文地址:https://www.cnblogs.com/jiwangbujiu/p/5289786.html
Copyright © 2011-2022 走看看