Mysql系列——数据库设计(5)——实例讲解

今天是中秋佳节,老家称为小过年。愿大家团圆、幸福、安康。

今天来讲解本系列博客最后一节,用一个实例讲解下关系数据库设计。

数据库设计在传统的软件设计流程中属于详细设计之中。实际上,现在到处都讲究风口,如果按照传统的瀑布流程,也许等系统开发出来,风的中心就转移到别的位置了。现在大多数的软件公司在软件设计的时候都没有数据库设计这一步,直接划分模块,让程序员自己设计数据库。其实,前边省下的力气后边要加倍奉还。先看一下数据库设计的基本流程

Created with Raphaël 2.2.0 开始 整理需求 汇总实体关系,画出ER图 丰富实体的属性信息,设计真实数据表 结束

需求介绍

设计一套学生公选课定课系统,其中内容包含课程编辑、讲师资料编辑、学生资料编辑、学生选课、考试成绩登记、成绩公示等模块。其他要求,要求进行权限最小化划分。

在此,以学生资料编辑这个子模块进行设计。

详细需求整理:学生资料包含学号、姓名、性别、身份证号、籍贯、所学专业、所属院系、辅导员、所属宿舍信息。

学生信息选取:只是选取与选课系统核心相关的信息,去掉籍贯、辅导员、所属宿舍信息。学生资料剩余:
学生信息(学号、姓名、性别、身份证号、所学专业、所属院系)。
确定下学生信息中属性分类,分类为本身自有属性与其他实体关联属性:
学号、姓名、性别、身份证号:自有属性。
所学专业、所属院系:关联性属性。

将自由属性不变,将关联性属性变为关联实体的id:
所学专业id、所属院系id:关联性实体id。

确定是否作为直接关联属性id。

确定是否属于直接关联属性的时候可以根据前面讲解的设计范式,也可以按照级别最接近的原则来选取:学生属于某个专业,专业属于某个学院。因此,学生信息只剩下所属专业id这个直接关联实体id。
最终确定学生的属性如下:

学生:学号、姓名、性别、身份证号、所学专业id。

同样对专业信息与学院信息操作如下:

专业信息:专业编号、专业名称、所属学院id。

学院信息:学院编号、学院名称。

汇总实体关系,画出ER图

学生、专业、学院三个实体之间的关系分析如下:

学生与专业之间,一个学生属于一个专业,主语关系1:1,一个专业包含多个学生,主语关系1:N。因此学生与专业之间的关系为N:1的关系。同样专业与学院之间的关系也是N:1的关系。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MGWxhy6o-1605337819702)(http://respam.qiniudn.com/blog/db/student.png)]

由于学生属于某个专业,专业属于某个学院都是一种相对固定的关系,因此通过在N(多)端设置对方id的方式进行表示这种关系。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOigCGyT-1605337819704)(http://respam.qiniudn.com/blog/db/student-s.png)]

整理为详细的数据表结构

学生信息表

序号列名数据类型(长度)是否主键是否外键说明
1idint(8)YesNoPrimary key
2学号char(8)NoNo逻辑主键,设计表时使用,Unique key
3身份证号char(18)NoNo
4姓名varchar(20)NoNo长度不定,使用varchar
5性别smallint(1)NoNo只有两种状态,可以用bool表示
6所属专业idint(8)NoYes逻辑外键,操作时有可能会使用事务

专业信息表

序号列名数据类型(长度)是否主键是否外键说明
1idint(8)YesNoPrimary key
2专业编号char(4)NoNo逻辑主键,设计表时使用,Unique key
3专业名称varchar(20)NoNo长度不定,使用varchar
4所属院系idint(8)NoYes逻辑主键,操作时有可能会使用事务

学院信息表

序号列名数据类型(长度)是否主键是否外键说明
1idint(8)YesNoPrimary key
2学院编号char(4)NoNo逻辑主键,设计表时使用,Unique key
3学院名称varchar(20)NoNo长度不定,使用varchar
  • 10
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
好的,我可以为您解答这个问题。下面是关于MySQL数据库设计和一个数据库设计实例的简介: MySQL是一种流行的开源关系型数据库管理系统。它被广泛应用于Web应用程序和其他类型的软件开发项目。MySQL数据库设计是指开发一个适合特定应用程序的数据库结构和模式。 一个成功的MySQL数据库设计应该包括以下几个步骤: 1. 确定数据库需求和目标:首先需要确定应用程序需要存储哪些数据,以及数据如何被组织和使用。这涉及到对业务需求的深入理解。 2. 设计数据库架构:在确定需求之后,需要设计数据库的架构。这包括确定、字段、索引、关系等。 3. 规划数据存储:在设计数据库架构之后,需要确定数据如何存储和访问。这包括了选择存储引擎、分配存储空间等。 4. 编写SQL代码:最后,需要编写SQL代码来创建数据库,以及实现数据的插入、更新、删除和查询等操作。 下面是一个数据库设计实例,假设我们需要设计一个学生管理系统,包括以下实体: 1. 学生 2. 课程 3. 成绩 根据以上实体,我们可以设计以下: 1. 学生(student):包括学生ID、姓名、性别、年龄等字段。 2. 课程(course):包括课程ID、课程名、学分等字段。 3. 成绩(score):包括学生ID、课程ID、成绩等字段。 其中,学生和课程之间是多对多的关系,需要使用中间示。中间可以命名为student_course,包括学生ID和课程ID两个字段。 以上是一个简单的MySQL数据库设计实例,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值