数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)1 数据库结构设计的步骤需求分析 全面了解产品设计的存储需求逻辑设计 设计数据的逻辑存储结构物理设计 根据所用的数据库特点进行表结构设计关系型数据库 Oracle SQLServer MySQL postgresSQL 非关系型数据库 mongo Redis Hadoop

1、数据库结构设计的步骤

需求分析:全面了解产品设计的存储需求

逻辑设计:设计数据的逻辑存储结构

物理设计:根据所用的数据库特点进行表结构设计

                  关系型数据库:Oracle、SQLServer、MySQL、postgresSQL

                  非关系型数据库:mongo、Redis、Hadoop

                  存储引擎:Innodb

维护优化:根据实际情况对索引、存储结构等进行优化

2、数据库设计范式(设计出没有数据冗余和数据维护异常的数据库结构)

数据库设计第一范式:

        1、数据库表中的所有字段都只具有单一属性

        2、单一属性的列是由基本的数据类型所构成的

        3、设计出来的表都是简单的二维表

数据库设计第二范式:

        要求一个表中只具有一个业务主键,也就是说符合第二范式的表中不能存在非主键列对只对部分主键的依赖关系

数据库设计第三范式:

        指每一个非主属性既不部分依赖于也不传递依赖于业务主键,也就是在第二范式的基础上消除了非主键属性对主键的传递依赖

数据库结构设计(逻辑设计和物理设计)

3、需求分析及逻辑设计(重点)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

4、需求分析及逻辑设计-反范式化设计

什么叫做反范式化设计?

反范式化是针对范式化而言的,在前面介绍了数据库设计的范式,所谓的反范式化就是为了性能和读取效率的考虑而适当的对数据库设计范式的要求进行违反,而允许存在少量的数据冗余,换句话来说,反范式化就是使用空间来换取时间。

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

注意:不能完全按照范式化的要求进行设计,考虑以后如何使用表

4、范式化设计和反范式化设计的优缺点

范式化设计的优点:

         1、可以尽量减少数据冗余

         2、范式化的更新操作比反范式化更快

         3、范式化的表通常比反范式化更小

范式化设计的缺点:

         1、对于查询需要对多个表进行关联   

         2、更难进行索引优化

反范式化设计的优点:

        1、可以减少表的关联

        2、可以更好的进行索引优化

反范式化设计的缺点:

        1、存在数据冗余及数据维护异常

         2、对数据的修改需要更多的成本

5、物理设计

根据所选择的关系型数据库的特点对逻辑模型进行存储结构设计

物理设计涉及的内容:

      1、定义数据库、表及字段的命名规范

              a、数据库、表及字段的命名要遵守可读性原则

              b、数据库、表及字段的命名要遵守表意性原则

              c、数据库、表及字段的命名要遵守长名原则

      2、选择合适的存储引擎

数据库结构设计(逻辑设计和物理设计)

     3、为表中的字段选择合适的数据类型

     4、建立数据库结构

6、物理设计-数据类型的选择

为表中的字段选择合适的数据类型:

        当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是日期或二进制类型,最后是字符类型。对于相同级别的数据类型,应该优先选择占用空间小的数据类型。

如何选择正确的整数类型:

数据库结构设计(逻辑设计和物理设计)

如何选择正确的实数类型:

数据库结构设计(逻辑设计和物理设计)

如何选择varchar和char类型:

  varchar类型的存储特点:

       a、varchar用于存储变长字符串,只占用必要的存储空间。

      b、列的最大长度小于255则只占用一个额外字节用于记录字符串长度

      c、列的最大长度大于255则要占用两个额外字节用于记录字符串长度

varchar长度的选择问题:

      a、使用最小的符合需求的长度

      b、varchar(5)和varchar(200)存储MySQL字符串性能不同

varchar适用场景:

    a、字符串列的最大长度比平均长度大很多

    b、字符串列很少被更新

    c、使用了多字节字符集存储字符串

    b、字符串存储在char类型的列中会自动删除末尾的空格

    c、char类型的最大宽度为255

char类型适用的场景:

   a、cahr类型适合存储长度近似的值

   b、char类型适合存储短字符串

   c、char类型适合存储经常更新的字符串列

如何存储日期类型:

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

timestamp可以自动更新:

数据库结构设计(逻辑设计和物理设计)

date类型和time类型:

   1、date类型的优点:

       a、占用的字节数比使用字符串、datetime、int存储要少,使用date类型只需要3个字节。

       b、使用date类型还可以利用日期时间函数进行日期之间的计算

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

数据库结构设计(逻辑设计和物理设计)

         

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231392.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月16日 上午11:01
下一篇 2025年12月16日 上午11:22


相关推荐

  • 推荐10个堪称神器的 Java 学习网站

    Java学习网站,有了这些,成为大牛不在话下

    2022年4月10日
    41
  • 农夫过河【数据结构实验报告】

    农夫过河【数据结构实验报告】数据结构实验报告实验名称 实验三农夫过河学号 姓名 gnosed 实验日期 2017 10 30 nbsp 一 实验目的 1 进一步掌握队列的使用 2 会使用队列进行农夫过河解的搜索 nbsp 二 实验具体内容 1 实验题目 1 1 题目经典的农夫过河问题一个农夫带着一只狼 一只羊和一颗白菜过河 从西岸到东岸 船太小 他每次过河只能携带一样东西 船只有农夫能撑 问题是狼会吃羊 羊会吃白菜 所以不能单独让狼和羊或者羊和

    2026年1月19日
    2
  • onLoad与onShow的区别

    onLoad与onShow的区别onLoad 页面加载时调用 可以获取参数 通过 options onShow 页面显示时调用 主要区别 从二级页面返回该页面时 onLoad 不会再次加载 而 onshow 会重新加载 这点很重要 1 如果加载列表页 二级页面对一级的列表页面内容有修改 则以及列表函数应该在 onShow 中加载 否则可以选择 onLoad 2 如果从一个页面携带参数跳转到另外一个页面 在另一个页面获取参数的方式 onLoad options console log options xxx 这些参数都挂在在 opti

    2026年3月16日
    3
  • linux没有lsof命令

    linux没有lsof命令root rootbin lsof i 80 bash lsof commandnotfo 执行下面命令进行安装 yuminstallls 安装过程如图

    2026年3月18日
    0
  • Pycharm专业版安装详细教程!

    Pycharm专业版安装详细教程!Pycharm 官网地址 下载 https link zhihu com target https 3A www jetbrains com pycharm download other html 有各种不同版本的 Pycharm 供下载 本文选择 Pycharm 专业版下载 建议下载 2020 1 5 版本 安装教程下载完成之后 就按照步骤开始安装了 点击 Next 我选择安装在 F 盘 因为 C 盘太占用空间了 会比较卡 点击 Next 一定要选着添加到环境变量中 不然后面还要手动配置环境变量 比较麻烦

    2026年3月18日
    2
  • linux mail发送邮件_shell传输文件

    linux mail发送邮件_shell传输文件Linux发邮件之mail命令详解发布于2017-01-0516:44:04|154次阅读|评论:0|来源:网友投递LinuxLinux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。这篇文章主要介绍了Linux发邮件之mail命令详解,详细的讲解…

    2022年10月20日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号