• 如何设计数据库(1)?(芮)


    为什么需要设计数据库
           这里我们思考两个问题:
    修建茅屋需要设计吗?修建大厦需要设计吗?
    结论是:当数据库比较复杂(如数据量大,表较多,业务关系复杂)时,我们需要先设计数据库;
    因为,良好的数据库设计能够:
    q       节省数据的存储空间
    q       能够保证数据的完整性
    q       方便进行数据库应用系统的开发
    糟糕的数据库设计:
    q       数据冗余、存储空间浪费
    q       内存空间浪费
    q       数据更新和插入的异常
     
    软件项目开发周期
           我们再来看看软件项目的开发周期:
    •          需求分析阶段:分析客户的业务和数据处理需求;
    •          概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整;
    •          详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核;
    •          代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用;
    •          软件测试阶段:……
    •          安装部署:……
     
    设计数据库
    •          在需求分析阶段,设计数据库的一般步骤为:
    –         收集信息
    –         标识对象
    –         标识每个对象的属性
    –         标识对象之间的关系
    •          在概要设计阶段和详细设计阶段,设计数据库的步骤为:
    –         绘制E-R图
    –         将E-R图转换为表格
    –         应用三大范式规范化表格
     
    下面我们以一个BBS简易论坛的数据库设计为例来看看设计数据库的步骤:
     
    •          收集信息:
       与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务
    BBS论坛的基本功能:
    l        用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息;
    l        用户发贴,后台数据库需要存放贴子相关信息,如贴子内容、标题等;
    l        论坛版块管理:后台数据库需要存放各个版块信息,如版主、版块名称、贴子数等;
     
    •          标识对象(实体-Entity)
        标识数据库要管理的关键对象或实体
    实体一般是名词:
    l        用户:论坛普通用户、各版块的版主。
    l        用户发的主贴
    l        用户发的跟贴(回贴)
    l        版块:论坛的各个版块信息
     
    •          标识每个实体的属性(Attribute)
     
    •          标识对象之间的关系(Relationship)
    l        跟贴和主贴有主从关系:我们需要在跟贴对象中表明它是谁的跟贴;
    l        版块和用户有关系:从用户对象中可以根据版块对象查出对应的版主用户的情况;
    l        主贴和版块有主从关系:需要表明发贴是属于哪个版块的;
    l        跟贴和版块有主从关系:需要表明跟贴是属于哪个版块的;
     
    •          绘制E-R图
     
     
    •          将E-R图转化为表格
    •          将各实体转换为对应的表,将各属性转换为各表对应的列
    •          标识每个表的主键列,需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键,例如用户表中的“UID”列,版块表中添加“SID”列,发贴表和跟贴表中的“TID”列
    •          在表之间建立主外键,体现实体之间的映射关系
     
     
    这里我们绘制ER图可以使用微软的Word或VISIO以及Sybase公司的PowerDesigner,它主要用于和客户沟通交流意见,并反复修改,直到客户确认。客户确认后,再将E
    -R图转换为表。上面我们已经做好了这个工作。那接下来就是最后一步:应用三大范式对设计的多张表进行审核并规范化表的结构。
  • 相关阅读:
    Spring Boot @DeleteMapping(转)
    白天和夜晚分类
    使用HSV色彩空间遮罩绿色区域
    HSV转换
    HSV 和 HLS颜色空间
    python 处理图像出现The lower bounary is neither an array of the same size and same type as src, nor a scalar in function inRange
    读取图片上一点的像素
    python 实现A*算法
    uda 4.C++面向对象编程
    uda 3.C++二维向量
  • 原文地址:https://www.cnblogs.com/ruishuang208/p/4095220.html
Copyright © 2020-2023  润新知