- 11
- 0
- 约4.36万字
- 约 27页
- 2018-06-09 发布于福建
- 举报
v512工作室张利国Java高端培训系列教材Oracle实用教程08章数据库的设计
工作 室
第八章 数据库设计
8.1 数据库设计概述
要将现实世界中客观存在的事物以数据的形式存储到计算机中并进行处理,就需要对其进行
分析、抽象,进而确定数据的结构以及数据间的内在联系,这一过程称为数据库设计。在中小型
规模的实际开发中,数据库设计并不困难,但是却非常重要。如果数据库设计的不好,很容易出
现数据冗余、效率低下以及数据库系统不可靠等问题。而且,客户端应用程序是依赖于数据库设
计的,一旦数据库设计上存在问题将来补救起来通常会很困难。
数据建模
具体来说,在设计数据库时,设计者必须首先规划好要在数据库中存储关于哪些事物的信息,
以及要保存关于其中各种事物哪些方面的信息,此外,还需要确定这些事物内部或其之间的相互
关系。比如,在学校的教学管理系统中,需要保存关于学生和课程的信息;其中,关于学生需要
记录其学号、姓名、性别、出生日期共四方面信息,关于课程要记录其课程编号、课程名称、课
时数共三方面的信息;此外,学生的学号不允许出现重复,课程名称不能为空,学生可以选修课
程,且多个学生可以选修同一门课程、而一个学生也可以同时学习多门课程、并且要记录其考试
成绩相关相关信息(学号、课程编号和考试成绩)。上述过程也称为“数据建模”(Data Modeling ),
即根据应用开发的需要建立数据模型的过程。
在数据库设计中,设计者建立的数据模型应满足三个方面要求:
- 数据模型应能够比较真实地模拟现实世界
- 数据模型应容易为人所理解
- 数据模型应便于在计算机中实现
数据模型三要素
在进一步讲解之前,我们先分析一下数据模型的三个组成要素:
- 数据结构
数据结构描述的是客观事物的静态特性,比如关于学生信息包括学号、姓名、性别和出生日
期四个属性组成,当然具体记录哪些事物的哪些方面的属性要根据实际应用的需要,这很类似于
面向对象编程时类中的属性定义。
需要强调的是,这里的所谓“客观事物”可以是具体的“物”(如人、兽、鸟),也可以是
抽象的“事”(事件、现象或行为,如潮起潮落、云卷云舒)。学生选修某一门课程,严格说这
是一种事件,但根据应用的需要,我们也可以记录其相关信息,比如哪个人选了哪门课、以及其
考试成绩等。
- 数据操作
数据操作描述的是事物的动态特性,比如人的姓名是可以修改的、考试成绩可以被录入、更
1
工作 室
改和删除。这些操作类似于 Java 面向对象编程语言中,类里面定义的成员方法,比如最常见的提
供属性值存取操作的 setter/getter 方法。不同的是,在数据库中对数据的操作并不体现在数据表结
构中,而是以在 DBMS 层面运行 DML 指令的方式来实现。
- 完整性约束
完整性约束描述的是事物内部和事物间的约束性关系,引入完整性约束是为了确保数据模型
能够满足实际应用的需要。比如应用业务逻辑要求学生的学号必须是唯一的、图书的定价不不允
许为负值、工资表中出现的员工编号取值必须在员工信息表中出现过等等。完整性约束主要分为
域完整性约束、实体完整性约束和参照完整性约束三种,这些我们前面已接触过(参见第 7.2.6 节),
也可以根据需要由用户自行定义。
三个世界
数据建模过程实际上就是根据应用业务逻辑的需要,将现实世界中的信息进行分析、抽象、
提取并转换为与计算机和 DBMS 相关的数据模型的过程。在整个数据建模过程中,信息的状态(也
可以说是数据模型的状态)可抽象归纳为现实世界、概念世界和机器世界三个层次,如图 8-1 所示。
图 8-1
原创力文档

文档评论(0)