• 设计数据库


    Data Modeling

    • Understand the requirements:充分理解和分析业务需求。
    • Build a Conceptual Model:识别业务中的实体、事物或概念以及它们之间的关系。
    • Build a Logical Model:生成一个数据模型或数据结构用以存储数据。
    • Build a Physical Model:在这个模型中。你需要具备由数据库技术支持的确切的数据类型。列默认值、表主键。以及其他对象,如视图、存储过程触发器等等

    三种数据模型
    在这里插入图片描述

    Conceptual Model(概念模型)

    • 作用:表示业务中的实体、事物或概念以及它们之间的关系。

    • 可视化方法
      1.Entity Relationship(实体关系-ER)
      示意图:
      在这里插入图片描述

      2.Unified Modeling Language(标准建模语言-UML)

    Logical Model(逻辑模型)

    • 作用:逻辑模型为我们的概念模型增加了更多细节,这样我们见乎了解什么结构或什么表需要用来存储数据。
    • 示意图
      在这里插入图片描述

    Physical Model(实体模型)

    • 作用:在数据库中进行建模
      在这里插入图片描述

    Normalization(标准化)

    • 作用:审查数据库设计,防止数据重复预定义。
    • First Normal Form(第一范式):每个单元格都应该有单一值,且不能出现重复列。
      注意:关系型数据库只有“一对一”,“一对多”关系,没有“多对多”关系,如果需要实现两个表的“多对多”关系,则需要使用链接表,拆分成两段“一对多”关系。

    示意图:courses表的tags违反了第一范式,修改如下
    在这里插入图片描述

    • Second Normal Form(第二范式)
      1、满足第一范式
      2、每张表都应该有一个单一目的。换句话说,它应该只能代表一种且仅有一种实体类型,而表中的每一列都应该用来描述那个实体。

    示意图:courses表中的instructors违反了第二范式,修改如下
    在这里插入图片描述

    • Third Normal Form(第三范式)
      1、满足第二范式
      2、表中的列不应该派生自其他列

    举例:在customers表中,已经有first_name和last_name,就不能再出现full_name,违反了第三范式
    在这里插入图片描述
    Don’t jump into creating tables!

  • 相关阅读:
    LCP 55.采集果实
    Google浏览器插件推荐
    COSCon'22 论坛集锦 1+16个论坛就等你了!
    基于Spring Boot的旅游信息推荐信息系统设计与实现(源码+lw+部署+讲解)
    [Linux] 实现简单的线程池
    Java8 Lambda 表达式
    【Java】节点流和处理流(BufferedReader和BufferedWriter)
    java-php-python-基于SSM框架的企业机械设备智能管理系统的设计与实现计算机毕业设计
    Numpy的各种下标操作
    WIN32API之PIPE管道
  • 原文地址:https://blog.csdn.net/weixin_43752912/article/details/126700281