关系型数据库管理系统的弱点及对象存储策略
立即解锁
发布时间: 2025-08-23 00:50:26 阅读量: 2 订阅数: 16 

# 关系型数据库管理系统的弱点及对象存储策略
## 1. 数据库应用发展与关系型数据库弱点概述
随着互联网的广泛应用和技术的不断进步,企业能够触达全球近 25 亿在线消费者,未来 B2C 收入将大幅增长。同时,网站和企业间交易将处理更复杂、相互关联的数据。除了商业应用,科学和医学应用、专家系统等也需要处理复杂数据。
关系型数据库管理系统(RDBMS)虽然具有坚实的理论基础,如基于一阶谓词逻辑,支持 SQL 语言,具有简单性、适合在线事务处理(OLTP)和数据独立性等优点,但也存在一些显著的弱点,具体如下表所示:
| 弱点 | 描述 |
| --- | --- |
| 对“现实世界”实体的糟糕表示 | 规范化过程导致创建的关系与“现实世界”实体不对应,查询处理时需要大量连接操作,效率低下。 |
| 语义过载 | 关系模型仅用关系来表示数据和数据之间的关系,无法区分实体和关系,也无法区分不同类型的关系。 |
| 对完整性和企业约束的支持不足 | 许多商业系统不完全支持完整性约束,需要在应用程序中构建,可能导致重复工作和不一致性。 |
| 同质数据结构 | 关系模型假设水平和垂直同质性,结构过于严格,不适合表示复杂的“现实世界”对象。 |
| 有限的操作 | 关系模型只有固定的操作集,SQL 不允许指定新操作,难以模拟许多现实世界对象的行为。 |
| 处理递归查询困难 | 由于数据的原子性,关系模型不允许重复组,处理递归查询非常困难。 |
| 阻抗不匹配 | SQL 是声明性语言,处理数据行,而高级语言是过程性语言,一次只能处理一行数据,两者数据表示模型不同,导致编程效率低下。 |
| 其他问题 | 包括并发控制、模式更改困难和导航访问不佳等问题。 |
## 2. 关系型数据库管理系统的具体弱点分析
### 2.1 对“现实世界”实体的糟糕表示
规范化过程通常会将“现实世界”实体拆分成多个关系,物理表示反映了这种结构,导致查询处理时需要大量的连接操作。连接操作是最昂贵的操作之一,会降低查询效率。
### 2.2 语义过载
关系模型只有一个构造来表示数据和数据之间的关系,即关系。例如,要表示实体 A 和 B 之间的多对多关系,需要创建三个关系,分别表示实体 A、实体 B 和它们之间的关系。这种方式无法区分实体和关系,也无法区分不同类型的关系,如 1:* 关系可能是“拥有”、“管理”等。虽然语义数据模型试图解决这个问题,但关系模型本身也有一些语义特征,如域和键、函数依赖、多值依赖和连接依赖等。
### 2.3 对完整性和企业约束的支持不足
完整性指存储数据的有效性和一致性,通常用约束来表示。许多商业系统不完全支持实体完整性、引用完整性和域约束等,需要在应用程序中构建这些约束,这可能导致重复工作和不一致性。此外,关系模型对一般约束的支持不足,也需要在数据库管理系统或应用程序中实现。不过,SQL 标准允许在数据定义语言(DDL)中指定一些类型的约束,部分解决了这个问题。
### 2.4 同质数据结构
关系模型假设水平和垂直同质性,即每个元组必须由相同的属性组成,每列的值必须来自相同的域,并且行和列的交集必须是原子值。这种固定结构过于严格,不适合表示许多具有复杂结构的“现实世界”对象,会导致不自然的连接操作,效率低下。为了解决这个问题,研究人员提出了复杂对象或非第一范式(NF2)数据库系统。例如,在非第一范式数据库系统中,对象可以递归定义:
1. 每个原子值(如整数、浮点数、字符串)都是一个对象。
2. 如果 a1, a2, ..., an 是不同的属性名,o1, o2, ..., on 是对象,则 [a1:o1, a2:o2, ..., an:on] 是一个元组对象。
3. 如果 o1, o2, ..., on 是对象,则 S = {o1, o2, ..., on} 是一个集合对象。
以下是一些有效对象的示例:
- 原子对象:B003, John, Glasgow
- 集合:{SG37, SG14, SG5}
- 元组:[branchNo: B003, street: 163 Main St, city: Glasgow]
- 层次元组:[branchNo: B003, street: 163 Main St, city: Glasgow, staff: {SG37, SG14, SG5}]
- 元组集合:{[branchNo: B003, street: 163 Main St, city: Glasgow], [branchNo: B005, street: 22 Deer Rd, city: London]}
- 嵌套关系:{[branchNo: B003, street: 163 Main St, city: Glasgow, staff: {SG37, SG14, SG5}], [branchNo: B005, street: 22 Deer Rd, city: London, staff: {SL21, SL41}]}
许多 RDBMS 现在允许存储二进制大对象(BLOB),但 BLOB 不包含内部结构信息,无法进行查询和操作,且不能包含其他 BLOB,不能形成复合对象,还忽略了对象的行为方面。
### 2.5 有限的操作
关系模型只有固定的操作集,如集合和元组操作,SQL 不允许指定新操作,难以模拟许多现实世界对象的行为。例如,地理信息系统(GIS)应用需要处理点、线、线组和多边形
0
0
复制全文
相关推荐










