1.层次模型
层次模型是数据库系统中最早使用的模型,它的数据结构类似一颗倒置的树,每个节点表示一个记录类型,记录之间的联系是一对多的联系,基本特征是:
* 一定有一个,并且只有一个位于树根的节点,称为根节点;
* 一个节点下面可以没有节点,即向下没有分支,那么该节点称为叶节点;
* 一个节点可以有一个或多个节点,前者称为父节点,后者称为子节点;
* 同一父节点的子节点称为兄弟节点。
* 除根节点外,其他任何节点有且只有一个父节点;
图11.7是一个层次模型的例子。
层次模型中,每个记录类型可以包含多个字段,不同记录类型之间、同一记录类型的不同字段之间不能同名。如果要存取某一类型的记录,就要从根节点开始,按照树的层次逐层向下查找,查找路径就是存取路径。如图11.8所示。
层次模型结构简单,容易实现,对于某些特定的应用系统效率很高,但如果需要动态访问数据(如增加或修改记录类型)时,效率并不高。另外,对于一些非层次性结构(如多对多联系),层次模型表达起来比较繁琐和不直观。
2.网状模型
网状模型可以看作是层次模型的一种扩展。它采用网状结构表示实体及其之间的联系。网状结构的每一个节点代表一个记录类型,记录类型可包含若干字段,联系用链接指针表示,去掉了层次模型的限制。网状模型的特征是:
1. 允许一个以上的节点没有父节点;
2. 一个节点可以有多于一个的父节点;
例如,图11.9(a)和图11.9(b)都是网状模型的例子。图11.9(a)中节点3有两个父节点,即节点1和节点2;图11.9(b)中节点4有三个父节点,即节点1,节点2和节点3。
由于网状模型比较复杂,一般实际的网状数据库管理系统对网状都有一些具体的限制。在使用网状数据库时有时候需要一些转换。例如,如图11.10所示。
网状模型与层次模型相比,提供了更大的灵活性,能更直接地描述现实世界,性能和效率也比较好。网状模型的缺点是结构复杂,用户不易掌握,记录类型联系变动后涉及链接指针的调整,扩充和维护都比较复杂。
3.关系模型
关系模型是目前应用最多、也最为重要的一种数据模型。关系模型建立在严格的数学概念基础上,采用二维表格结构来表示实体和实体之间的联系。二维表由行和列组成。下面以教师信息表和课程表为例,说明关系模型中的一些常用术语:
表11.1 教师信息表(表名为:tea_info)
TNO(教师编号)
NAME(姓名)
GENDER(性别)
TITLE(职称)
DEPT(系别)
805
李奇
女
讲师
基础部
856
薛智永
男
教授
信息学院
表11.2 课程表(表名为:cur_info)
CNO(课程编号)
DESCP(课程名称)
PERIOD(学时)
TNO(主讲老师编号)
005067
微机基础
40
805
005132
数据结构
64
856
1. 关系(或表):一个关系就是一个表,如上面的教师信息表和课程表。
2. 元组:表中的一行为一个元组(不包括表头)。
3. 属性:表中的一列为一个属性。
4. 主码(或关键字):可以唯一确定一个元组和其他元组不同的属性组。
5. 域:属性的取值范围。
6. 分量:元组中的一个属性值。
7. 关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,... ...,属性n)。
关系模型中没有层次模型中的链接指针,记录之间的联系是通过不同关系中的同名属性来实现的。 关系模型的基本特征是:
1. 建立在关系数据理论之上,有可靠的数据基础;
2. 可以描述一对一,一对多和多对多的联系。
3. 表示的一致性。实体本身和实体间联系都使用关系描述。
4. 关系的每个分量的不可分性,也就是不允许表中表。
关系模型概念清晰,结构简单,实体、实体联系和查询结果都采用关系表示,用户比较容易理解。另外,关系模型的存取路径对用户是透明的,程序员不用关心具体的存取过程,减轻了程序员的工作负担,具有较好的数据独立性和安全保密性。
关系模型也有一些缺点,在某些实际应用中,关系模型的查询效率有时不如层次和网状模型。为了提高查询的效率,有时需要对查询进行一些特别的优化