• 数据库设计详细教程上篇(数据库设计流程)


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

    • ⻋库:是⽤来存放⻋辆的,⻋库都需要划分⻋位,如果不划分⻋位,⻋⼦杂乱⽆章的存放可能会导致⻋辆堵塞,同时也可能造成场地的浪费——有限的场地能够停放最多的⻋辆,同时⽅便每⼀辆⻋的出⼊。

    • 数据库:是⽤来存放数据的,我们需要设计合理的数据表——能够完成数据的存储,同时能够⽅便的提取应⽤系统所需的数据。

    img

    一、 数据库设计流程

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

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

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

    img

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

    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)

    5. 数据库建模

    • 三线图进⾏数据表设计

    • PowerDesigner

    • PDManer

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

     

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

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

    img

    1. DROP TABLE IF EXISTS SIMS_COLLEGE;
    2. CREATE TABLE SIMS_COLLEGE(
    3.    `COLLEGE_ID` VARCHAR(32) NOT NULL   COMMENT '学院ID' ,
    4.    `COLLEGE_NAME` VARCHAR(90)    COMMENT '学院名称' ,
    5.    `SHORT_NAME` VARCHAR(90)    COMMENT '学院简称' ,
    6.    `INTRO` VARCHAR(900)    COMMENT '学院介绍' ,
    7.    `PROFESSION_NUMBER` INT    COMMENT '专业个数' ,
    8.    `STUDENT_NUMBER` INT    COMMENT '学生人数' ,
    9.    `PRESIDENT` VARCHAR(90)    COMMENT '院长' ,
    10.    `TENANT_ID` VARCHAR(32)    COMMENT '租户号' ,
    11.    `REVISION` INT    COMMENT '乐观锁' ,
    12.    `CREATED_BY` VARCHAR(32)    COMMENT '创建人' ,
    13.    `CREATED_TIME` DATETIME    COMMENT '创建时间' ,
    14.    `UPDATED_BY` VARCHAR(32)    COMMENT '更新人' ,
    15.    `UPDATED_TIME` DATETIME    COMMENT '更新时间' ,
    16.    PRIMARY KEY (COLLEGE_ID)
    17. )  COMMENT = '学院';

    7. 添加测试数据SQL测试

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

    img

  • 相关阅读:
    [附源码]Python计算机毕业设计Django葡萄酒销售管理系统论文
    算法题--重建二叉树
    12 | JAVASE高级应用-集合
    Abnova 鸡抗小鼠 IgG (H&L) 二抗(过氧化物酶)说明书
    【数学建模暑期培训】线性回归模型
    C++11 内存对齐
    c#基础0-类型、起步
    【强化学习论文合集】AAMAS-2022 | 人工智能CCF-A类会议 (附链接)
    iNFTnews | 互联网巨头「百度」的元宇宙应用场景探索
    在列表控件上显示提示信息
  • 原文地址:https://blog.csdn.net/OMGcome/article/details/127239838