• 数据库设计规范(三范式、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 个或多个表。

  • 相关阅读:
    国产自主可控C++工业软件可视化图形架构源码
    【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
    php mb_strpos() 函数详解
    微信小程序日期增加时间完成订单失效倒计时(有效果图)
    React JSX常用语法总结
    Effective C++条款22——将成员变置声明为private(设计与声明)
    Vue 入门
    软考-软件设计师
    【safetensor】介绍和基础代码
    STM32G0开发笔记-Platformio+libopencm3-串口中断
  • 原文地址:https://blog.csdn.net/weixin_43837268/article/details/127856114