MySQL规范数据库设计及三范式
1.为什么需要设计数据库/h3>
简单的数据库可能不需要设计,当数据库比较复杂的时候,我们就需要设计了,同时,设计良好的数据库对于将来维护和使用都有好处
2.糟糕的数据库设计和良好数据库设计对比
糟糕的数据库设计 :
- 数据冗余,存储空间浪费,比如:多张表出现相同的字段
- 数据插入、更新、删除都会产生异常或者过程比较繁琐比如:使用物理外键,尽量避免使用物理外键
- 程序性能差
良好的数据库设计 :
- 节省数据的存储空间
- 能够保证数据的完整性
- 方便进行数据库应用系统的开发
3.软件项目开发中,关于数据库设计 :
- 分析需求:分析业务逻辑和需要处理的数据库的需求
- 概要设计:实际关系图(E-R图)
设计数据库步骤(个人博客)
- 收集信息,分析需求
- 用户表(用户登录注销,用户的个人信息,写博客,创建分类)
- 分类表(文章分类,谁创建的)
- 文章表(文章的信息)
- 评论表
- 友链表(友链信息)
- 自定义表(系统信息,某个关键字,或者一些主字段)key:value
- 标识实体(把需求落地到每个字段)
- 标识每个实体需要存储的详细信息[Attribute]
- 标识实体之间的关系[Relationship
- 写博客:user→blog
- 创建分类:user→category
- 关注:user→user
- 友链接:links
- 评论:user→user→blog
4.绘制E-R图
概念 | 符 |
---|---|
实体,一般是名词 | 长方形) |
属性,一般是名词 | O(椭圆) |
联系,一般是动词 | 菱形) |
绘制数据库模型图的步骤 :
- 新建数据库模型图
- 添加实体
- 添加数据列及相应的属性
- 添加实体之间的映射关系
5.三大范式
想要通俗易懂且深刻了解三大方式,请点击如下链接:https://www.cnblogs.com/wsg25/p/9615100.html
第一范式(1NF)
- 要求数据库表的每一列都是不可分割的原子数据项。
第二范式(2NF)
- 前提:满足第一范式
- 确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)
第三范式(3NF)
- 前提:满足第一范式、第二范式
- 确保数据表中的每一列数据都和主键直接相关,而不能间接相关
6.为什么需要数据表规范化
不规范的表设计:信息重复,更新异常,插入异常(无法正确表示信息),删除异常(容易丢失有效信息)
7规范化和性能的关系
-
规范化,表越多,查询等操作就会很慢,效率低下
-
为满足某种商业目标 , 数据库性能比规范化数据库更重要,在数据规范化的同时 , 要综合考虑数据库的性能,
- 通过在给定的表中添加额外的字段,以大量减少需要从多张表中搜索信息所需的时间(从多表查询变成单表查询)
- 通过在给定的表中增加插入计算列,从大数据量降低到小数据量查询,以方便查询,速度更快
- 通过在给定的表中增加索引(不推荐使用)
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树SQL高级技巧CTE和递归查询31268 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!