数据库设计基础
来源:互联网 发布:淘宝上好的纯银耳饰店 编辑:程序博客网 时间:2024/06/07 17:38
数据库设计基础
数据库设计的基本步骤:
- 需求分析阶段:需求收集和分析,得到 数据字典 和 数据流图。
- 概念结构设计阶段:对用户需求综合、归纳与抽象,形成概念模型,用 E-R图 表示。
- 逻辑结构设计阶段:将概念结构转换为某个DBMS所支持的数据模型。
- 数据库物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构。
- 数据库实施阶段:建立数据库,编制与调试应用程序,组织数据入库,程序试运行。
- 数据库运行和维护阶段:对数据库系统进行评价、调整与修改。
E-R图
E-R图也称实体-联系图(Entity Relationship Diagram),
提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
在ER图中有如下四个成分:
- 矩形框:表示实体,在框中记入实体名。
- 菱形框:表示联系,在框中记入联系名。
- 椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
- 连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。
(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M)
三范式
1.第一范式(1NF)
a.要求数据表不能存在重复的记录,即存在一个关键字。
b.要求是每个字段都不可再分,即已经分到最小,
主关键字达到下面几个条件:
- 主关键字段在表中是唯一的
- 主关键字段中没有复本
- 主关键字段不能存在空值
- 每条记录都必须有一个主关键字
- 主关键字是关键字的最小子集
2.第二范式(2NF)
a.一个关系属于1NF,
b.且所有的非主关键字段都完全地依赖于主关键字
举一个例子:
有一个库房存储的库有四个字段(零件号码,仓库号码,零件数量,仓库地址),这个库符合1NF,其中“零件号码”和“仓库号码”构成主关键字。
但是因为“仓库地址”只完全依赖与“仓库号码”,即只依赖于主关键字的一部分,所以它不符合2NF,应该分解成两个表(零件号码,仓库号码,零件数量)和(仓库号码,仓库地址)。
3.第三范式(3NF)
a.一个关系属于2NF,
b.且每个非关键字不传递依赖于主关键字,这种关系是3NF。
从2NF中消除传递依赖,就是3NF,举个例子:
比如有一个表(姓名,工资等级,工资额),其中姓名是关键字,此关系符合2NF,但是因为工资等级决定工资额,这就叫传递依赖,它不符合3NF,
我们同样可以使用投影分解的办法分解成两个表:(姓名,工资等级),(工资等级,工资额)。
总结
- 优点:规范化的优点是明显的。避免了大量的数据冗余,节省了空间,保持了数据的一致性,
- 缺点:如果完全达到3NF,你不会在超过一个地方更改同一个值。它最大的不利是,把信息放置在不同的表中,增加了操作的难度,同时把多个表连接在一起的花费也是巨大
0 0
- [读书笔记] 数据库设计基础
- 数据库设计基础
- 数据库设计基础
- 数据库设计基础原则
- ASP数据库网页设计基础
- 关系数据库应用设计基础
- 数据库表的设计基础
- 数据库设计工具PowerDesigner基础
- 数据库基础 数据库设计三大范式
- 【数据库设计】概念设计-数据库ER图基础概念
- 数据库设计基础——三范式
- 20120627db2数据库基础、设计与优化
- powerdesigner 数据库设计的几个基础概念
- 数据库设计基础——三范式
- 数据库设计以及mysql操作基础
- 优化MySchool数据库设计------Chp01基础
- (转)高性能数据库设计基础 - 设计范式
- 超大型Oracle数据库的基础设计和优化设计
- memmove 和 memcpy的区别
- http、TCP/IP协议与socket之间的区别
- Swift入门———字符串
- 解决phpredis 'RedisException' with message 'read error on connection'
- hdoj 2096 小明A+B
- 数据库设计基础
- Java中的线程池(2)
- org.springframework.beans.ConversionNotSupportedException
- java中continue,return,break的区别
- 浅谈android网络编程
- Android APP第一次使用引导界面的制作
- 用JAVA实现大文件上传及显示进度信息
- ListView下拉刷新
- 创建对于用户失败 在当前数据库存已存在