一.概论
设计概述
成功的设计需要什么呢?
- 具有扎实的计算机科学基础(拥有基础知识)
- 全面深入地理解应用背景(理解应用环境)
- 一定的开发经验(了解如何开发)
- 规范的开发方法(具有开发的方法)
- 团结合作的开发团队(团队很重要)
什么是数据库设计:
指对于一个给定的应用环境,构造最优的数据库模式(什么叫数据库模式),建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。它是数据库在应用领域的主要研究课题。
什么是数据库应用系统:
使用数据库的各类系统统称为数据库应用系统。
信息系统和数据库的区别(大雾):
从使用者的角度来说,
信息系统是提供信息、辅助人们对环境进行控制和进行决策的系统。
数据库是信息系统的核心和基础。
两者是包含与被包含的关系。
从事数据库设计的专业人员需要以下技术和知识:
- 数据库的基本知识和数据库设计技术(知道怎么设计数据库)
- 计算机科学的基础知识和程序设计的方法和技巧(深刻理解计算机,懂得软硬件的知识,同时对于编程语言有一定的掌握)
- 软件工程的原理和方法(了解一个成功的应用软件应该如何实现)
- 应用领域的知识(理解数据库在应用中具体如何实现)
数据库设计的特点
数据库设计是硬件、软件和干件的结合。
数据库设计应该和应用系统功能设计相结合。整个设计过程中要把结构设计和行为设计密切结合起来。
早期的设计致力于数据模型和建模方法研究,着重结构而忽视行为设计,两者是分离的,如何将两者相结合,许多学者和专家进行了探讨和实践。(如何考虑行为设计呢?行为是什么呢)
数据库设计方法
十余年来人们努力探索,提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计法:
-
新奥尔良方法
将设计分为四个阶段:- 需求
- 概念
- 逻辑
- 物理设计
-
基于E-R模型的数据库设计方法
-
基于3NF的设计方法
-
ODL(对象定义语言)设计方法
数据库设计基本步骤
数据库设计是在DBMS支持下设计数据库应用系统(如管理信息系统)的过程。
以概念结构设计、逻辑数据库设计和物理数据库设计为核心,一般分为如下六个阶段:
- 需求分析
- 概念结构设计(构造ER模型)
- 逻辑结构设计(生成一组关系模式)
- 物理结构设计(设计具体DBMS下的表、视图、索引 这里不是很懂)
- 数据库实施
- 数据库运行和维护
二.需求分析
概述
这里不做重点介绍,主要有以下几点:
- 任务:
- 调查信息要求、处理要求和完整性(安全性)要求。
- 调查内容和步骤
- 调查组织机构,各部门业务活动,明确用户对新系统的要求,确定新系统边界。
- 调查方法:
- 跟班作业,开调查会,请专人介绍,询问,设计调查表请用户填写,查阅相关数据记录(???这么麻烦的吗)
- 分析和表达方法:
- SADT(结构分析与设计技术,数据流图DFD和数据字典DD)
数据流图和数据字典
数据流图
数据字典
数据字典DD
数据字典,即描述数据的数据,是各类数据描述的集合,是进行详细的数据收集和数据分析所得的主要结果。
DD将数据流图中的每个对象进行具体详尽的描述。包括数据结构,数据项,数据流,数据存储和处理过程描述。它为后续阶段提供了数据和处理的依据。(xml算吗?不懂就问)
三.概念结构设计(重点)
3.1 概论
什么是概念结构设计:
概念结构设计能产生整体数据库的概念结构(概念模型),它是整个组织的各个用户关心的信息结构,也是数据库设计的关键。
概念结构是各种数据模型的共同基础(各种概念模型详解有吗?),它比数据模型更独立于机器,抽象程度更高,因此更加稳定。
概念模型的特点:
- 是对现实世界抽象的一个真实模型。
- 易于理解。
- 易于更改和扩充。
- 易于向关系等各种数据模型转换。
3.2 概念模型的基本概念(复习)
概念模型有以下等概念:
- 实体(强实体、弱实体)
- 属性(简答属性/复合属性,单值属性/多值属性,导出属性)
- 码
- 域
- 实体集
- 实体型
- 联系:
- 基数约束(一对一,一对多,多对多)
- 参与性约束(全参与,部分参与)
实体:
客观存在并可以相互区别的事物称为实体。不仅可以是具体的人、事、物,还可以是抽象的概念和联系(?有例子吗)
属性:
实体由若干属性刻画
- 弱实体:没有独立标识,依赖于其它实体,需要从其所依赖的强实体借码来标识自己
码:
唯一标识实体的属性集称为码。可以不唯一。(候选码)
域:
属性的取值范围。
实体型:
具有相同属性的实体具有共性。用实体名以及其属性名集合来刻画同类实体,称为实体型(类比C++,实质实体就是一个对象,实体型就是类)
实体集:
同一实体型实体的集合。
联系:
主要研究不同实体集之间的联系,即他们之间的关系有哪些性质(例如老师和学生的师生关系是可以1对多,学生全参与)
基数约束(cardinality ratio):
- 一个特定联系中一个实体可参与的联系数
- 包括1:2,1:M,M:N
参与性约束(participation):
- 实体型的实体是否都参与了联系
- 分为全参与和部分参与
E-R方法
E-R方法:Entity-Relationship实体-联系方法,该方法用E-R图来描述现实世界的概念模型,是建立概念模型的有用工具。
E-R图提供了表示实体型、属性和联系的方法:
- 实体型:客观世界具体的事物,用矩形框表示。
- 属性:实体型的特性。用椭圆形表示,并用连线与实体连接起来。
- 实体间的联系:实体集之间的联系,用菱形框表示,框内标联系名称。
如图则表示了一个学生与研究生、本科生的ER图
ER模型记号
数据库概念设计步骤
- 确定实体集
- 确定联系集
- 确定实体和联系的属性
- 确定属性的域(忽略)
- 如果需要,使用特点/泛化等ER表示(忽略)
- 检查、消除冗余
概念结构设计的方法和步骤
- 自顶向下
- 自底向上
- 逐步扩张
- 混合策略
其中常用的是自底向上方法。先用自顶向下进行需求分析,然后再自底向上地设计概念结构。一般又分成两步:
- 抽象数据并设计局部视图;
- 集成局部视图,得到全局的概念结构。