博客
关于我
【数据库】了解设计数据库的步骤
阅读量:320 次
发布时间:2019-03-04

本文共 2368 字,大约阅读时间需要 7 分钟。

一、了解设计数据库的步骤(数据库生命周期较软件长)

Why  设计数据库 ?         *节省数据空间   ---> (数据冗余---数据重复的现象)                                                |                                                |                                          减少冗余的方法:分类         * 保证数据完整性 --->  (数据的准确性)【存在不正确、不准确的数据,数据库失去了完整性】                                                       |                                                       |                                               各种约束(主键、check)          *方便数据库应用系统的开发现实世界(抽取相同实体的数据) ---> 信息世界 ---> 数据库模型图 ---> 数据库                                (建模)    (规范化--范式)==需求分析==:分析客户业务和数据处理需求==概要设计==:设计数据库的E-R模型图,确认数据需求的正确和完整==详细设计==:应用三大范式审核数据库结构==代码编译==:物理实现数据库,代码编译实现应用(运行脚本初始化)==软件测试==:.....==安装部署==:.....(根据日志定点将数据库数据备份恢复)

收集信息 — 标识实体 — 绘制E-R图(E-R概念图转化为关系模型)—

1.收集信息:交谈了解客户需求

2.标识实体:标识数据库要管理的关键对象

标识实体的各自属性
标识实体之间的关系(客房和客人之间由主从对应关系)

3.绘制E-R图

实体— 长方形、(Visio) 关联关系—菱形、属性—椭圆

映射基数关系:一对一、一对多、多对多、(多对一)E-R概念图转化为关系模型:   一对一:1.实体A中主关键字加入到B实体中对应的关系中,若联系有属性一并加入           2.实体B中主关键字加入到A实体中对应的关系中,若联系有属性一并加入           3.建立第三个关系,关系中包含两个实体集的主关键字,若联系有属性一并加入(当关系也有属性时必选)      一对多:1.可以将一的一方实体的主键放入多的一方实体中作为“外键”   多对多:1.必须建立“联系”的单独关系,用来联系双方实体,该关系属性中至少包含两个实体的关键字。   *关系数据库源于关系代数   *外键---波浪线,主键---下划直线

4.数据规范化(范式):

仅有好的RDBMS不足以避免数据冗余,必须建立好的表结构!!!          范式是具有最小冗余的表结构~,依赖函数~          第一范式(1st NF -First Normal Form)                  确保每列的原子性(每一列不可再分的最小数据单元
<最小的原子单元 1nf>
),数据库中的每个表格必须满足的!!! 例:中国北京市 ----> 中国 + 北京 第二范式(2st NF -S.... Normal Form) 在第一范式的基础上,并除主键以外的其他列都依赖于该主键。并且要求每个表只描述一件事。(主键针对分成的表) 例: 房间号 客房状态编号 客房状态 ---> 客房状态名称 客房类型 床位数 客房类型编号 入住人数 ---> 客房类型名称 价格 第三范式(3st NF -T.... Normal Form) 在第二范式基础上,并除主键以外的其他列都不传递依赖于主键。 例: 房间号 客房状态ID 客房状态 ---> 客房状态名称 入住人数 客房类型 床位数 客房类型ID 入住人数 ---> 客房类型名称 价格 价格 床位数 处理数据冗余异常: 更新异常 添加异常 删除异常

5.规范化和性能的关系

通过给定表中添加额外字段,以减少搜索信息的时间
通过给定表中添加计算列,以方便查阅


转载地址:http://crhq.baihongyu.com/

你可能感兴趣的文章
MySQL中auto_increment有什么作用?(IT枫斗者)
查看>>
MySQL中B+Tree索引原理
查看>>
mysql中cast() 和convert()的用法讲解
查看>>
mysql中datetime与timestamp类型有什么区别
查看>>
MySQL中DQL语言的执行顺序
查看>>
mysql中floor函数的作用是什么?
查看>>
MySQL中group by 与 order by 一起使用排序问题
查看>>
mysql中having的用法
查看>>
MySQL中interactive_timeout和wait_timeout的区别
查看>>
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
查看>>
mysql中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>
mysql中like % %模糊查询
查看>>
MySql中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>