MySQL(14)数据库的设计

  • Post author:
  • Post category:mysql





MySQL(1)CentOS彻底卸载MySQL




MySQL(2-1)CentOS安装MySQL详细操作




MySQL(2-2)CentOS7系统使用Docker安装mysql数据库




MySQL(3)MySQL中的数据类型和约束




MySQL(4)数据库常见操作命令详解




MySQL(5)数据表常见的操作命令详解




MySQL(6)数据表中数据的增删改查




MySQL(7)常用的基本查询命令详解




MySQL(8)常用的条件查询命令详解




MySQL(9)查询并排序详细用法




MySQL(10)聚合查询、分组查询、分页查询




MySQL(11)连接查询




MySQL(12)自关联(以省市县数据实例详解)




MySQL(13)子查询




MySQL(14)数据库的设计




MySQL(15)视图




MySQL(16)事务




MySQL(17)索引




MySQL(18)账户管理



1、数据库设计范式:

  • 第一范式:强调的是列的原子性,即列不能够再分成其他几列

    如下,为未遵守第一范式的例子:

在这里插入图片描述

经过拆分,如下,即符合第一范式

在这里插入图片描述

  • 第二范式:首先是第一范式,另外包含两部分:一是表必须有一个主键,二是没有包含在主键中的列必须完全依赖主键,而不能只依赖主键的一部分

如下为未遵守第二范式:

在这里插入图片描述

经过拆分之后,如下即为遵守了第二范式

在这里插入图片描述

  • 第三范式:首先是第二范式,另外非主键列必须直接依赖主键,不能存在传递依赖,即不能存在非主键列A依赖非主键列B,非主键列B依赖主键列的情况

    如下:为未遵守第三范式

    在这里插入图片描述

    经过拆分如下,即满足第三范式

    在这里插入图片描述



2、E-R模型

  • E:Entry,实体,实际实体就像定义一个类一样,指定从哪些方面描述对象,一个实体转换为数据库中的一个表
  • R:Relationship,关系,关系描述两个实体之间的对应规则,关系的类型包括一对一,一对多,多对多
  • 关系也是一种数据,需要通过一个字段存储在表中
  • 实体A对实体B为1对1时,则在表A或表B中创建一个字段,存储另一个表的主键
  • 实体A对实体B为1对多时,在表B中创建一个字段,存储A的主键值(即1对多的时候必须在多的表中增加一个字段)
  • 实体A对实体B为多对多时,此时需要一张新表C,这个表只有两个字段,一个用于存储A的主键,一个用于存储B的主键



3、逻辑删除

  • 对于重要数据,并不希望物理删除,一旦删除,数据无法找回
  • 删除方案:设置isDelete的列,类型为bit,表示逻辑删除,默认值为0
  • 对于非重要数据,可以进行物理删除,至于是否为重要数据,需要根据业务的具体情况来考虑



版权声明:本文为redrose2100原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。