MySQL数据库作为数据存储的介质为应⽤系统提供数据存储的服务,我们如何设计出合 理的数据库、数据表以满⾜应⽤系统的数据存储需求呢?

  • ⻋库:是⽤来存放⻋辆的,⻋库都需要划分⻋位,如果不划分⻋位,⻋⼦杂乱⽆章的存放可能会导致⻋辆堵塞,同时也可能造成场地的浪费——有限的场地能够停放最多的⻋辆,同时⽅便每⼀辆⻋的出⼊。
  • 数据库:是⽤来存放数据的,我们需要设计合理的数据表——能够完成数据的存储,同时能够⽅便的提取应⽤系统所需的数据。

mysql8设置审计 mysql如何设计数据库_数据

mysql8设置审计 mysql如何设计数据库_数据_02

一、 数据库设计流程

前言:数据库是为应⽤系统服务的,数据库存储什么样的数据也是由应⽤系统来决定的。 当我们进⾏应⽤系统开发时,我们⾸先要明确应⽤系统的功能需求——软件系统的需求 分析

1. 根据应⽤系统的功能,分析数据实体(实体,就是要存储的数据对象)

比如我们喜闻乐见的电商系统它的实体通常有:商品、订单、用户......

mysql8设置审计 mysql如何设计数据库_数据库_03

mysql8设置审计 mysql如何设计数据库_数据_04

再比如我们上学时的教务管理系统:学生、课程、成绩......

2. 提取实体的数据项(数据项,就是实体的属性)

比如商品正常情况下有的实体属性:商品名称、商品信息、商品价格.....

再比如用户用户名、用户id、用户密码.....

3. 根据数据库设计三范式规范视图的数据项 检查实体的数据项是否满⾜数据库设计三范式

如果实体的数据项不满⾜三范式,可能会导致数据的冗余,从⽽引起数据维护困难、破坏数据⼀致性等问题

第⼀范式 :要求数据表中的字段(列)不可再分

第二范式 :不存在⾮关键字段对关键字段的部分依赖

第三范式 :不存在⾮关键字段之间的传递依赖

4. 绘制E-R图 (实体关系图,直观的展示实体与实体之间的关系)

实体关系图又称E-R模型图,是一种提供了实体,属性和联系的方法,用来描述现实世界的概念模型。通俗点讲就是,当我们理解了实际问题的需求之后,需要用一种方法来表示这种需求,概念模型就是用来描述这种需求。

基础元素

1) 实体 实际问题中客观存在的并且可以相互区别的事物称为实体。实体是现实世界中的对象,可以具体到人,事,物。可以是学生,教师,图书馆的书籍。

2)属性 实体所具有的某一个特性称为属性,在E-R图中属性用来描述实体。比如:可以用姓名、年龄、性别来描述人。

3) 实体集 具有相同属性的实体的集合称为实体集。例如:全体学生就是一个实体集,(200170901,爱坤,男,1999/12/12)是学生实体集中的一个实体。

4) 键 在描述实体集的所有属性中,可以唯一标识每个实体的属性称为键。键也是属于实体的属性,作为键的属性取值必须唯一且不能“空置”。

5) 实体型 具有相同的特征和性质的实体一定有相同的属性,用实体名及其属性名集合来抽象和刻画同类实体称为实体型,其表示格式为:实体名(属性1,属性2,……)

6)联系 世界上任何事物都不是孤立存在的,事物内部和事物之间都有联系的,实体之间的联系通常有3种类型:一对一联系,一对多联系,多对多联系。

事物之间的关系

1)一对一联系(1:1):

 对于实体集A中每一个实体,实体集B中最多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A和实体集B具有一对一联系。

  一般来说,一个班级只有一个正班长,且一个班长只在一个班中任职,所以我们说班长和班级之间具有一对一联系。

(2)一对多联系(1:n):

 实体集A中每一个实体,实体集B中有n个实体(n‎ ≥ 0)与之联系,反之,B中的每一个实体,实体集A中至多只有一个与之联系,则称实体集A与实体集B具有一 对多联系。

 一般来说,一个班级中有若干个学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多的联系。

(3)多对多联系(m:n):

 因该不难推测,多对多就是实体集A中每一个实体,在实体集B中有n(n ‎≥ 0)个与之联系,反正实体集B中每一个实体,A中也有m(m ‎≥ 0)个实体与之联系。我们则称A与B具有多对多联系。

 一门课程同时有若干个学生选修,一个学生一次可以选择若干门课程,所以课程与学生之间的联系属于多对多的联系。

E-R图的绘制

基本要素的表示方法: 长方形——实体 椭 圆——属性 菱 形——联系 说明:在相应的框内要写上实体名、属性名或联系名。

绘制方法: 实体与属性用直线相连 实体与联系用直线相连 联系与属性用直线相连 同时在菱形与矩形的连线上标上联系的类型。 (1:1、1:n、m:n)

mysql8设置审计 mysql如何设计数据库_sql_05

5. 数据库建模

  • 三线图进⾏数据表设计
  • PowerDesigner
  • PDManer

我平时是用PDManer,别问为什么不用PowerDesigner因为我菜还是PDManer简洁适合我这个小白

mysql8设置审计 mysql如何设计数据库_mysql8设置审计_06

 

6. 建库建表 编写SQL指令创建数据库、数据表

这个我相信各位应该非常熟练了吧!

mysql8设置审计 mysql如何设计数据库_mysql8设置审计_07

DROP TABLE IF EXISTS SIMS_COLLEGE;
CREATE TABLE SIMS_COLLEGE(
    `COLLEGE_ID` VARCHAR(32) NOT NULL   COMMENT '学院ID' ,
    `COLLEGE_NAME` VARCHAR(90)    COMMENT '学院名称' ,
    `SHORT_NAME` VARCHAR(90)    COMMENT '学院简称' ,
    `INTRO` VARCHAR(900)    COMMENT '学院介绍' ,
    `PROFESSION_NUMBER` INT    COMMENT '专业个数' ,
    `STUDENT_NUMBER` INT    COMMENT '学生人数' ,
    `PRESIDENT` VARCHAR(90)    COMMENT '院长' ,
    `TENANT_ID` VARCHAR(32)    COMMENT '租户号' ,
    `REVISION` INT    COMMENT '乐观锁' ,
    `CREATED_BY` VARCHAR(32)    COMMENT '创建人' ,
    `CREATED_TIME` DATETIME    COMMENT '创建时间' ,
    `UPDATED_BY` VARCHAR(32)    COMMENT '更新人' ,
    `UPDATED_TIME` DATETIME    COMMENT '更新时间' ,
    PRIMARY KEY (COLLEGE_ID)
)  COMMENT = '学院';

7. 添加测试数据SQL测试

太多太长了我懒得写,大家脑补一下。

mysql8设置审计 mysql如何设计数据库_sql_08