• MySQL学习第四天 数据库设计


    MySQL 数据库建模过程

                 需求分析阶段:分析客户的业务和数据处理需求

                 概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整

                 详细设计阶段:应用三大范式审核数据库结构

                 代码编写阶段:物理实现数据库,编码实现应用

                 软件测试阶段:……

                 安装部署:……

    设计数据库的步骤          

                1.了解需求 与该系统有关人员进行交流、座谈,充分了解用户需求,理解数据库需要完成的任务

                2.标识实体 (Entity) 标识数据库要管理的关键对象或实体(名词)

                3.标识每个实体的属性(Attribute)(名词)

                4.标识实体之间的关系(Relationship)(动词)

                注:在E-R图中,实体用矩形表示,属性用椭圆表示,关系用菱形表示。

    E-R图设计(映射基数)

               一对一、一对多、多对多

              例如:

             

    E-R图设计(表设计)

                 1.如果是1:1的关系:那么将实体转换成表,将任意1端实体的主键拿到另一端实体做外键。

                 2.如果是1:N的关系:那么将实体转换成表,关系不成表,将1端实体的主键拿到N端实体做外键

                 3.如果是M:N的关系:将实体转换成表,关系形成表,同时将两端实体的主键拿过来作为该表的外键,形成复合主键。

    数据库设计的三大范式

                 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。

                第一范式(确保每列保持原子性)

                        第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

                        第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如   果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式。

                第二范式(确保表中的每列都和主键相关)

                        第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。 也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

                第三范式(确保每列都和主键列直接相关,而不是间接相关)

                        例如:比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司                                  等)的字段。如下面这两个表所示的设计就是一个满足第三范式的数据库表。

                              这样在查询订单信息的时候,就可以使用客户编号来引用客户信息表中的记录,也不必在订单信息表中多次输入客户信息的内容,减小了数据冗余。

    总结

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

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

                    通过在给定的表中插入计算列(如成绩总分),以方便查询

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

  • 相关阅读:
    WSL中使用npm install报错
    在npm install时node-gyp出现错误
    Chrome禁用隐藏www和m
    Git始终忽略特定文件的某一行内容
    macOS关闭修改扩展名的提示
    解决安装Anaconda后ZSH中使用的依然是系统自带的Python
    macOS上更顺手的终端
    自用的越狱插件
    Tomcat安装后修改路径方法
    TestStack.White安装详解
  • 原文地址:https://www.cnblogs.com/Java-125/p/8587259.html
Copyright © 2020-2023  润新知