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产品包括AccessSQL ServerFoxProOracle等。

1.2.3  表的特点

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

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

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

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

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

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

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

 

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

豫公网安备 41010502002439号