DBMNG数据库管理与应用

所谓独创的能力,就是经过深思的模仿。

关系模型理论

1.2.1  实体、属性与联系

1.实体、属性

客观世界的万事万物在数据库领域内被称为实体(entity)。实体可以是实实在在的客观存在,例如工人、学生、商店、医院;也可以是一些抽象的概念或地理名词,如哮喘病、上海市。实体的特征(外在表现)称为属性(attribute),属性的差异能使我们区分同类实体。如一个人可以具备下列属性:姓名、年龄、性别、身高、肤色、发式、穿着等,根据这些属性我们能在熙熙攘攘的人群中一眼认出所熟悉的人。

实体本身并不能被装进数据库,要保存客观世界的信息,必须将描述事物外在特征的属性保存在数据库中。例如,要管理学生信息,可以储存每一位学生的学号、姓名、性别、出生年月、出生地、家庭住址、各科成绩等,其中学号是人为添加的一个属性,用于区分两个或多个因巧合而属性完全相同的学生。在数据库理论中,这些学生属性的集合被称为实体集(entity set),在数据库应用中,实体集以数据表的形式呈现。

2.联系

客观事物往往不是孤立存在的,相关事物之间保持着各种形式的联系方式。在数据库理论中,实体(集)之间同样也保持着联系,这些联系同时也制约着实体属性的取值方式与范围。下面以“系”表和“导师”表为例进行说明,如表1.1和表1.2所示。

             表1.1  “系”表                              表1.2  “导师”表

表1.1  “系”表

导师编号

姓名

性别

职称

系编号

系编号

系名

电话

101

陈平林

男

教授

D02

D01

计算机系

34358750

102

李向明

男

副教授

D01

D02

社科系

76853212

103

马大可

女

研究员

D03

D03

生物系

86238931

104

李小严

女

副教授

D02

假如问及李小严在哪个系任教,可以检索“导师”表的“姓名”属性,得到李小严的系编号是“D02”。至于“D02”究竟是何系,就必须再查阅“系”表,得知“D02”代表社科系。这个例子说明,实体集(数据表)之间是有联系的,“导师”表依赖于“系”表,“系编号”是联系两个实体集的纽带,离开了“系”表,则导师的信息不完整。在数据库技术术语中,两个实体集共有的属性称为公共属性。

3.实体的联系方式

实体的联系方式通常有3种:一对多、多对多和一对一。

(1)一对多

这是关系型数据库系统中最基本的联系形式,上面例子中的“系”表与“导师”表这两个实体的联系方式就属于“一对多”关系,即一个系可以有多名导师,但一名导师只能属于一个系。如果一个公司管理数据库中有“部门”表和“职工”表两个实体集,则两个表之间的关系也是“一对多”,也就是一名职工只能隶属于一个部门,而一个部门则可以有许多名职工。

(2)多对多

“多对多”联系类型是客观世界中事物间联系的最普遍形式,实际生活中“多对多”联系的实例可以说俯拾即是,例如:在一个学期中,一名学生要学若干门课程,而一门课程要让若干名学生来修;一名顾客要逛若干家商店才能买到称心的商品,而一家商店必须有许多顾客光顾才得以维持;一个建筑工地需要若干名电工协同工作才能完成任务,反之一名电工一生中需要到许多个工地工作等。上述的例子中,学生与课程之间、顾客与商店之间、电工与建筑工地之间的关系均为“多对多”联系。

在数据库应用中,“多对多”联系形式无法直接表达,必须通过第3个实体(亦称复合实体)实现。例如,要说明每位电工在各个工地的工作量,必须涉及“职工”表、“工地”表和“工作量”表,分别如表1.3、表1.4和表1.5所示。

    表1.3  “职工”表                 表1.4  “工地”表            表1.5  “工作量”表 

表1.4  “工地”表

职工号

工地编号

工作量

表1.3  “职工”表

工地编号

名称

位置

…

M01

HK03

 80

职工号

姓名

工种

…

HK03

临江花园

虹口

…

M01

PT17

 73

M01

柳成荫

电工

…

ZB21

桃源新苑

闸北

…

M02

HK03

103

M02

马里

电工

…

PT17

兰亭小区

普陀

…

M02

ZB21

 98

…

…

M02

PT17

 82

在“工作量”表中,“职工号”属性来自“职工”表,“工地编号”字段来自“工地”表,两者均是公共属性。

(3)一对一

“一对一”情况较为少见,它表示某实体集中的一个实体对应另一个实体集中的一个实体,反之亦然。例如为补充系的信息,添加一个“系办”表,表示每个系的系部办公室地点。从常识得知,一个系只有一个系部办公室,反之一个系部办公室只为一个系所有,如表1.1和表1.6所示。

由于“系”表与“系办”表中的每一行是一一对应的,因此可省略“系编号”属性。实际应用中,更多的是将两表合二为一,如表1.7所示。

   表1.6  “系办”表                                   表1.7  “系”表

地  点

系编号

系  名

电  话

地  点

勤学楼301

D01

计算机系

34358750

勤学楼301

奋进楼503

D02

社科系

76853212

奋进楼503

育新苑101

D03

生物系

86238931

育新苑101

1.2.2  3种数据模型

从数据库的逻辑结构角度,可以对数据库中的实体类型、实体间关系以及数据的约束规则进行抽象,归纳出3种数据模型,分别是层次模型、网状模型和关系模型。

1.层次模型

在层次模型中,实体间的关系形同一棵根在上的倒挂树,上一层实体与下一层实体间的联系形式为一对多。现实世界中的组织机构设置、行政区划关系等都是层次结构应用的实例。基于层次模型的数据库系统存在天生的缺陷,它访问过程复杂,软件设计的工作量较大,现已较少使用。

2.网状模型

网状数据模型也称网络数据模型,它较容易实现普遍存在的“多对多”关系,数据存取方式要优于层次模型,但网状结构过于复杂,难以实现数据结构的独立,即数据结构的描述保存在程序中,改变结构就要改变程序,因此目前已不再是流行的数据模型。

3.关系模型

关系模型自1970年被提出后,迅速取代层次模型和网状模型成为流行的数据模型。它的原理比较简单,其特征是基于二维表格形式的实体集,即关系模型数据库中的数据均以表格的形式存在,其中表完全是一个逻辑结构,用户和程序员不必了解一个表的物理细节和存储方式;表的结构由数据库管理系统(DBMS)自动管理,表结构的改变一般不涉及应用程序,在数据库技术中称为数据独立性。

例如,“导师”表中“姓名”字段原来可以容纳3个字符(在Unicode编码中,一个字符既可以表示一个英文字符,也可以表示一个汉字),随着外籍教师的引进,原来的“姓名”显然无法容纳一个西文的名字,于是将其扩展到20个字符,但相应的数据库应用程序却无须作任何改动。

基于关系数据模型的数据库系统称关系数据库系统,所有的数据分散保存在若干个独立存储的表中,表与表之间通过公共属性实现“松散”的联系,当部分表的存储位置、数据内容发生变化时,表间的关系并不改变。这种联系方式可以将数据冗余(即数据的重复)降到最低。目前流行的关系数据库DBMS产品包括Access、SQL Server、FoxPro、Oracle等。

1.2.3  表的特点

在关系型数据库中,数据以表的形式保存,表有以下的特点:

(1)表由行、列组成,表中的一行数据称为记录,一列数据称为字段。

(2)每一列都有一个字段名。

(3)每个字段只能取一个值,不得放入两个或两个以上的数据。例如导师表的“姓名”字段只能放入一个人名,不应该同时放入曾用名,在确实需要使用曾用名的场合,可以添置一个“曾用名”字段。

(4)表中行的上下顺序、列的左右顺序是任意的。

(5)表中任意两行记录的内容不应相同。

(6)表中字段的取值范围称为域。同一字段的域是相同的,不同字段的域也有可能相同,例如工资表中的“基本工资”与“奖金”两个字段的取值范围都可以是10 000以内的实数。

 

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2025 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号