• 数据库设计规范(三范式、ER模型、提高性能策略)


    一、三范式:

    第一范式:数据表中所有字段都是不可拆分的基本数据项。

    第二范式:在满足第一范式的基础上,数据表中所有非主键字段,必须完全依赖全部主键字段,不能存在部分依赖主键字段的字段。

    第三范式:在满足第二范式的基础上,数据表中不能存在可以被其他非主键字段派生出来的字段,或者说,不能存在依赖于非主键字段的字段。遵循范式的要求,可以减少冗余,结合外键约束,可以防止添加、删除、修改数据时产生数据的不一致问题。

    二、ER模型:

    要素

    1、实体,可以看做是数据对象,往往对应于现实生活中

    (1)强实体:不依赖于其他实体的实体的真实存在的个体
    (2)弱实体:对另一个实体有很强的依赖关系的实体
    2、属性,则是指实体的特性
    3、关系,则是指实体之间的联系

    (1)1对1:指实体之间的关系是一一对应的
    (2)1对多:指一边的实体通过关系,可以对应多个另外一边的实体。相反,另外一边的实体通过这个关系,则只能对应唯一的一边的实体

    (3)多对多:只关系两边的实体,通过关系,都可以对应多个对方的实体
    4、区分实体和属性的原则 :

             从系统整体的角度出发,可以独立存在的是实体,不可再分的是属性 

    把ER模型转换成具体的数据表的原则:
    1、一个实体通常转换成一个数据表
    2、一个多对多的关系,通常也转换成一个数据表
    3、一个1对1,或者1对多的关系,往往通过表的外键来表达 而不是设计一个新的数据表
    4、属性转换成表的字段

    三、优化策略

    1、添加索引

            索引是提升查询执行速度的关键,创建的原则是:所有的数据表都要创建索引;有可能作为筛选条件的字段,都要用来创建索引。

    2、修改数据类型以节省存储空间;

    3、在利大于弊的情况下增加冗余字段;

    4、把大表中查询频率高的字段和查询频率低的字段拆分成不同的表;

    5、尽量使用非空约束。

    6、垂直分表所谓垂直分表,就是把一个有很多字段的表,按照使用频率的不同,拆分成 2 个或多个表。

  • 相关阅读:
    51单片机 数码管操作
    【Spring内容进阶 | 第三篇】AOP进阶内容
    认证学习4 - Bearer认证(Token认证)讲解、代码实现、演示
    RabbitMQ 常用模式
    Nginx源码分析--内存池
    Kubernetes 的 NameSpace 无法删除应该怎么办?
    CSS3 如何实现飘动的云朵动画
    PIC12F510作为PMBus主机
    MySQL掉落榜首?全新开发者调查报告已出炉
    Flutter高仿微信-第53篇-群聊-删除并退出
  • 原文地址:https://blog.csdn.net/weixin_43837268/article/details/127856114