美文网首页
规范化数据库设计

规范化数据库设计

作者: 奥利夫羊 | 来源:发表于2020-08-17 22:55 被阅读0次

    规范化数据库设计

    为什么需要数据库设计

    当数据库比较复杂时我们需要设计数据库

    糟糕的数据库设计 :

    • 数据冗余,存储空间浪费
    • 数据更新和插入的异常
    • 程序性能差

    良好的数据库设计 :

    • 节省数据的存储空间
    • 能够保证数据的完整性
    • 方便进行数据库应用系统的开发

    软件项目开发周期中数据库设计 :

    • 需求分析阶段: 分析客户的业务和数据处理需求
    • 概要设计阶段:设计数据库的E-R模型图 , 确认需求信息的正确和完整.

    设计数据库步骤

    • 收集信息
    • 与该系统有关人员进行交流 , 座谈 , 充分了解用户需求 , 理解数据库需要完成的任务.
    • 标识实体[Entity]
    • 标识数据库要管理的关键对象或实体,实体一般是名词
    • 标识每个实体需要存储的详细信息[Attribute]
    • 标识实体之间的关系[Relationship]

    三大范式

    参考:https://www.cnblogs.com/wsg25/p/9615100.html

    https://blog.csdn.net/Wenco1/article/details/88077279

    问题 : 为什么需要数据规范化?

    不合规范的表设计会导致的问题:

    • 信息重复

    • 更新异常

    • 插入异常

      • 无法正确表示信息
    • 删除异常

      • 丢失有效信息

    三大范式

    第一范式 (1st NF)

    第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小数据单元,则满足第一范式

    第二范式(2nd NF)

    第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

    第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。

    第三范式(3rd NF)

    如果一个关系满足第二范式,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式.

    第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

    规范化和性能的关系

    为满足某种商业目标 , 数据库性能比规范化数据库更重要

    在数据规范化的同时 , 要综合考虑数据库的性能

    通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间

    通过在给定的表中插入计算列,以方便查询

    相关文章

      网友评论

          本文标题:规范化数据库设计

          本文链接:https://www.haomeiwen.com/subject/frozdktx.html