1、 数据库设计:将数据库中的数据实体及这些数据实体之间的关系进行规划和结构化的过程;
良好的数据库设计: 节省数据的存储空间 能够保证数据的完整性 方便进行数据库应用系统的开发 | 糟糕的数据库设计: 数据冗余、存储空间浪费 内存空间浪费 数据更新和插入的异常 |
2、 数据库设计的步骤:
1、 需求分析阶段:分析客户的业务和数据处理需求 |
2、概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整 |
3、 详细设计阶段:将E-R图转换为多张表,进行逻辑设计,确认各表的主外键,并应用三大范式审核数据库结构 |
4、 代码编写阶段:物理实现数据库,编码实现应用 |
5、软件测试阶段:…… |
6、 安装部署:…… |
3、 数据库分析的步骤:
1、 收集信息:与该系统有关人员进行交流、座谈,充分了解用户需求,理解数据库需要完成的任务 |
2、 标识实体(Entity):标识数据库要管理的关键对象或实体,实体一般是名词,一个实体只描述一件事,不能出现含义相同的实体 |
3、 标识每个实体需要存储的详细信息;标识每个实体的属性(Attribute),在进行实体属性分解时,含义相同的成员信息不能重复出现。 |
4、 标识实体之间的关系(Relationship):关系型数据库有一项非常强大的功能,即它能够关联数据库中各个项目的相关信息; |
4、E-R图:
符号 | 含义 |
| 实体(集),一般是名词 |
| 属性(集),一般是名词 |
| 联系(集),一般是动词 |
| 用来连接属性和实体集,也用来连接实体集和联系集 (直线是可以有方向的(在末端有一个箭头),用来表示联系集的映射基数) |
●实体:现实世界中具有区分其他事物的特征或属性并于其他事物有联系的事物;
●属性:实体的特征;
●联系:两个或多个实体之间的联系;
●映射基数:一对一,一对多,多对一,多对多;
●实体关系图;
5、关系数据库模式:用二维表的形式表示实体和实体间联系的数据模型即关系模式;
●关系数据库模式是对关系数据结构的描述;
◆形式:R(U) 或 R(A,B)
★R 表示属性集合,A,B分别表示U在中的属性;
●E-R图转换为关系模式的步骤:
1. 把每个实体都转化为关系模式R(U) 或 R(A,B)形式
2. 建立实体间联系的转换;
6、 数据规范化:
●不合规范的表设计
信息重复
更新异常
插入异常(无法正确表示某些信息)
删除异常(丢失有效信息)
7、使用三大范式规范数据库表的设计:(Normal Formate)
◆第一范式 (Normal Formate ,1NF):
★第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF);
◆第二范式 (Normal Formate ,2NF):第二范式要求每个表只描述一件事情;
★目标:确保表中的每列都和主键相关,如果一个关系满足第一范式(2NF),并且除了主键以外的其他列全都依赖于该主键;
◆第三范式 (Normal Formate ,3NF):
★目标:确保每列都和主键直接相关联,而不是间接相关联,如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式(3NF);
8、规范化和性能的关系:
● 为满足某种商业目标,数据库性能比规范化数据库更重要
1、通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间
2、通过在给定的表中插入计算列(如成绩总分),以方便查询
• 在数据规范化同时,要综合考虑数据库的性能
9、 数据库的完整性:数据库完整性(Database Integrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。
数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。
数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。
通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计(本文主要讨论前者)。
10、数据库完整性的作用:
1.数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。
2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性。
3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能。比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。
4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。