mysql 从入门到放弃— 数据库设计

之前我们已经了解了 mysql 的基本增删改查 mysql 从入门到放弃——基本约束以及语法

现在我们系统的进行一遍数据库的设计,建议收藏 ~~

直接进入主题

来个例子:下面我们将围绕这个例子来进行数据库的设计

我们就来简单的模拟 大学教务处的选课 系统 中的 选课功能

注意:简单的模拟,功能可能想到的没那么完善,不要杠我

一、概念设计

什么是概念设计呢, 简单来说就是一些 E-R 图 ,实体之间的联系

现在我们来分析一下,简易的 选课系统,有哪些主体,说人话就是有哪些对象

首先:

选课,选课 肯定有 课程信息 的 主体 ,不然选了个寂寞,主要属性 课程名称、课程号、课程类别 、学分 等等,我们这边就不列那么多了

其次

课程谁录进去?就算是批量导入也会有操作者,这里就 认为是老师自己录进去的了,那就有一个 主体是老师信息,其属性有:教工号、姓名、性别、职称

再者

选课应该是学生去选课,这就有了学生信息这个主体,其属性有:学号、姓名、性别、年龄、专业班级

品一品他们之间的关系,E-R图 就出来了

1. 老师跟课程的关系是什么?

一般情况来说,一个老师可以上多门课程,一门课程只能让一个老师上,不要说 (不同班,都是 名字是 微积分 的课程,但是是 两个老师在上) ,其实这里只是课程同名,他们的id 不同,是两个不同的对象

所以老师跟课程的关系 为 1对多

2. 学生跟课程的关系是什么?

一个学生可以选择多门课程,一个课程也可以被多名学生选择,因此,这边学生 跟 课程的关系是 多对多

3. 学生跟老师有没有关系呢?

当然有,但并不是主要的,毕竟我们是选课功能,主要选的是课程,并不是选老师、(还没到研究生选导师环节)我们这边可以根据课程信息进行间接关联起来

E-R图:

mysql 从入门到放弃— 数据库设计_第1张图片

二、逻辑结构设计

所谓的逻辑结构设计,就是将E-R关系模型进行 表结构的转换

E-R 关系模型 -----------------> 表结构

我们先要了解 三个关系概念在mysql 表中是怎么处理的

1对1

在任意一端加入对方的主键作为外键的存在

1对多

在多端加入一端的 主键作为外键存在

多对多

生成新的表,该表至少包含双方主键作为外键存在

所以:

在课程信息表 这个多端加入 教师id 进行 教师——课程 1对多 关联

课程信息表(course_info):

字段:id(主键)、teacher_id(教师id 主键)、course_name(课程名称)、course_code(课程号)、course_type(课程类别)、course_score(学分) 、create_id(创建人)、create_time(创建时间) 、update_id (修改人) 、update_time(修改时间)

教师表(teacher_info):

字段:id(主键)、code(工号)、name(姓名)、sex(性别)、professional(职称)、create_id(创建人)、create_time(创建时间) 、update_id (修改人) 、update_time(修改时间)

学生表(student_info):

字段:id(主键)、code(学号)、name(姓名)、sex(性别)、age(年龄)、class_name(专业班级)、create_id(创建人)、create_time(创建时间) 、update_id (修改人) 、update_time(修改时间)

学生课程关联表(student_course_info):

字段:id(主键)、stu_id(学生id)、cou_id(课程id)、socre(成绩)、create_id(创建人)、create_time(创建时间) 、update_id (修改人) 、update_time(修改时间)

三、物理结构设计

物理结构设计就是在mysql 数据库中建库,建表了
mysql 从入门到放弃— 数据库设计_第2张图片
代码建库建表这边就不在再过多赘述了 参考文章 mysql从入门到放弃— 初步认识
mysql 从入门到放弃— 数据库设计_第3张图片
mysql 从入门到放弃— 数据库设计_第4张图片
mysql 从入门到放弃— 数据库设计_第5张图片
mysql 从入门到放弃— 数据库设计_第6张图片
建表脚本,过长,这边就不贴出来了,有需要的同学 可以自行获取

推荐阅读

mysql 从入门到放弃——基本约束以及语法

你可能感兴趣的:(mysql,数据库,java)