数据库设计

数据库设计

1.软件开发周期

需求分析阶段:分析客户的业务和数据处理需求;
概要设计阶段:设计数据库的E-R模型图(概念模型),确认需求信息的正确和完整;
详细设计阶段:将E-R图转换为多张表(物理模型),进行逻辑设计,并应用数据库设计的三大范式进行审核;
代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用;
软件测试阶段:……
安装部署:……


1 需求分析阶段(非常粗略东西 作为开发人员非常茫然 不知道如何入手)(需求规格说明书)
        弄清项目客户需要什么东西 什么时候完成  达到什么质量
 2 概要设计阶段(将客户需要东西 转换成图形的格式(ER图) 开发人员慢慢理解需要开发东西 )
        【数据库设计人员(DBA)|开发人员】将ER图转换成 概念模型图(表) 【架构设计人员(架构设计师)|开发人员】(使用的技术+如何实现技术+原型)


2.数据库设计

 1 会使用工具设计概念模型图
          E (Entity) 对象-(数据 - 属性 - 列)
          R  (RelationShip)
                       对象和对象之间的关系
                               1-多 (1用户 发表多篇文章  某篇文章只能属于一个用户 )  1-1 (1个人 1个身份证)  多-多(1用户-多个权限 ,某个权限-多个权限)


          如何确定双方实体的关系
            主表 + 从表 
              1对1  主表中的任意一条数据 只能在从表中 存在一条数据对应  从表中的任意一条数据也只能在主表中找到一条数据对应
              1对多 主表中的任意一条数据 可以在从表中找到多条数据对应 但是从表中任意一条数据只能 在主表中找到一条数据对应
              多对多 主表中的任意一条数据 可以在从表中找到多条数据对应 从表中任意一条数据只能 在主表中找到多条数据对应


             分析员工表和部门表的关系
              员工表 主表 部门表 从表   多对一

3.如何确定多方实体关系

主表+从表

1对1  主表中的任意一条数据  只能在从表中  存在数据对应  从表中的任意一条数据也只能在主表中找到一条数据对应

1对多   主表中的任意一条可以在从表中找到多条数据对应但是从表中找到一天数据对应

多对多  主表中的任意一条数据 可以在从表中找到多条数据对应从表中注意一条数据只能在主表中找到多条数据对应

4.powerdesigner应该注意的

 1 oracle关键字 默认带有双引号 必须去除
         选中物理模型图 --数据库- edit current dbms  -  script -sql - format -case sensitivity usingquote 勾选no


      在表中体现关系
        1对1 
          在任何一张表中添加对方的主键作为外键 并且在外键列上加上唯一约束
        1对多
          在多的一方的表中添加对方的主键作为外键 
        多对多
          产生一张新表 新表中存在两个字段 这两个字段就是两张表的主键(联合组件)

5.ER不同的设计体现

概念模型

数据根据概念模型生成

设计的是表 列主外键关系+约束

直接设计数据库的表必须满足某些条件

6.数据库设计范式

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

第二范式:如果一个关系满足1NF,并且除主键以外的其他列,都依赖该主键,则满足第二范式

第二范式要求每一张表只描述一件事

第三范式:如果一个关系满足2NF,并且非主键列都不传递依赖于主键列则满足第三范式(3NF)

第三范式要求一个表中不能包含在其他表中已定义的主键列

三范式只作为数据库设计时的参考,实践中可能会违反它

数据库设计时要考虑表之间的关联查询越少越好


数据库设计中,将ER图转换成关系数据图模型的过程属于逻辑设计阶段

数据库的完整性分为:实体完整性,域完整性,参照完整性,和用户自定义完整性

数据库管理系统 DBMS属于系统软件


生成sql时去掉双引:生成物理图 Database->Edit Current DBMS->script->sql->casesensitiyityUsingQuote

生成物理模型图:Tools->Generatephysical DateModel (ctrl+shift+p)->选择数据(DBMS)

生成脚本:Database->GenerateDatabase(ctrl+G)->Generationtype script generation(√)   check model(×)  

在dosc中执行sql生成表  :source  c:\my.sql


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值