MySQL(14)数据库的设计
2023-09-14 09:12:49 时间
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
- 对于非重要数据,可以进行物理删除,至于是否为重要数据,需要根据业务的具体情况来考虑
相关文章
- MySQL数据库原理学习(四十六)
- MySQL数据库开发:编写有规范的代码(mysql数据库开发规范)
- MySQL 中插入图片路径的方法(mysql插入图片路径)
- MySQL数据库:如何创建数据库(mysql数据库创建数据库)
- 深入探索:MySQL如何选择最佳数据库(mysql如何选择数据库)
- 从MySQL数据库到新行:架构改变你的事业(mysql数据库换行)
- MySQL索引: 驱动数据库性能的前缀之道(mysql索引前缀)
- MySQL指定数据库引擎使用指南(mysql指定引擎)
- 重装MySQL,电脑重获活力(电脑重装mysql)
- MySQL判断空值的技巧(mysql判断空值)
- 如何在MySQL中为列添加默认值?(mysql给列添加默认值)
- 使用MySQL端口转发访问数据库(mysql端口转发)
- 使用EA连接MySQL数据库(ea连接mysql)
- 式处理MySQL实现的不等式查询处理技术(mysql 不等)
- 查看MySQL用户名:详解步骤(查看mysql 用户名)
- MySQL中最佳实践:设计合理的字段名(mysql 字段名)
- MySQL优化,让你的数据库效率更高(mysql中优化)
- MySQL事务概述保证数据的原子性一致性及隔离性(mysql中事务的含义)
- Mysql 中的 TODO探索未来的数据库开发方向(mysql中todo)
- 爆炸效果bomb后台与MySQL的结合(bomb后台与mysql)
- MySQL与Xenon 数据库和处理器的完美组合(mysql xenon)
- 简单高效Mysql数据库管理,不分库分表(mysql不分库分表)
- MySQL新版本上线,引领数据库领域技术进步(mysql上线版本)
- MySQL 数据库的上个月份统计报告(mysql 上个月份)
- 解决方法调整MySQL的字符集和字段属性设置(mysql不显示字段宽度)
- 自动恢复MySQL数据库的日志文件思路分享及解决方案