DBMS 中的数据独立性:物理和逻辑及示例
什么是 DBMS 的数据独立性?
数据独立性被定义为 DBMS 的一项属性,它有助于在不要求更改数据库系统下一级模式的情况下更改数据库系统某个级别上的数据库模式。数据独立性有助于将数据与使用它的所有程序分离。
您可以使用此存储的数据进行计算和演示。在许多系统中,数据独立性是系统组件的一项重要功能。
数据独立性类型
在DBMS 中,数据独立性有两种类型:
- 物理数据独立性
- 逻辑数据独立性。
数据库级别
在学习数据独立性之前,复习数据库级别很重要。数据库有 3 个级别,如下图所示:
- 物理/内部
- 概念
- 外部
考虑一个大学数据库的例子。在不同级别,实现如下所示:
模式类型 | 实施 |
---|---|
外部模式 |
视图 1:课程信息(cid:int,cname:string) 视图 2:学生信息(id:int. name:string) |
概念模式 |
Students(id: int, name: string, login: string, age: integer) Courses(id: int, cname:string, credits:integer) Enrolled(id: int, grade:string) |
物理模式 |
|
物理数据独立性
物理数据独立性有助于将概念级别与内部/物理级别分离。它允许您提供数据库的逻辑描述,而无需指定物理结构。与逻辑独立性相比,实现物理数据独立性很容易。
通过物理独立性,您可以轻松更改物理存储结构或设备,而不会影响概念模式。任何更改都将被概念级别和内部级别之间的映射所吸收。物理数据独立性是通过数据库的内部级别的存在,然后从数据库的概念级别到内部级别的转换来实现的。
物理数据独立性下的更改示例
由于物理独立性,以下任何更改都不会影响概念层。
- 使用新的存储设备,如硬盘或磁带
- 修改数据库中的文件组织技术
- 切换到不同的数据结构。
- 更改访问方法。
- 修改索引。
- 更改压缩技术或哈希算法。
- 更改数据库位置,例如从 C 驱动器到 D 驱动器
逻辑数据独立性
逻辑数据独立性是更改概念模式而不更改的能力
- 外部视图
- 外部 API 或程序
所做的任何更改都将被外部级别和概念级别之间的映射所吸收。
与物理数据独立性相比,实现逻辑数据独立性具有挑战性。
逻辑数据独立性下的更改示例
由于逻辑独立性,以下任何更改都不会影响外部层。
- 添加/修改/删除新属性、实体或关系,而无需重写现有应用程序
- 将两个记录合并为一个
- 将现有记录分解为两个或多个记录
物理数据独立性与逻辑数据独立性之间的区别
逻辑数据独立性 | 物理数据独立性 |
---|---|
逻辑数据独立性主要涉及结构或更改数据定义。 | 主要涉及数据的存储。 |
这很困难,因为数据的检索主要取决于数据的逻辑结构。 | 检索很容易。 |
与逻辑物理独立性相比,实现逻辑数据独立性很难。 | 与逻辑独立性相比,实现物理数据独立性很容易。 |
如果数据库中添加或删除了新字段,您需要对应用程序程序进行更改。 | 物理级别的更改通常不需要更改应用程序程序级别。 |
当数据库的逻辑结构发生变化时,逻辑级别的修改很重要。 | 内部级别的修改可能需要也可能不需要,以提高结构性能。 |
涉及概念模式 | 涉及内部模式 |
示例:添加/修改/删除新属性 | 示例:更改压缩技术、哈希算法、存储设备等 |
数据独立性的重要性
- 有助于提高数据质量
- 数据库系统维护变得经济实惠
- 强制执行标准并提高数据库安全性
- 您无需更改应用程序中的数据结构
- 允许开发人员专注于数据库的整体结构,而不是担心内部实现
- 它允许您改进未损坏或未分割的状态
- 数据库不一致性大大降低。
- 可以轻松进行物理级别的修改以提高系统性能。
摘要
- 数据独立性是 DBMS 的一项属性,它有助于在数据库系统某个级别更改数据库模式,而无需更改下一级上的模式。
- 数据独立性有两个级别:1)物理和 2)逻辑
- 物理数据独立性有助于您将概念级别与内部/物理级别分离
- 逻辑数据独立性是更改概念模式而不更改的能力
- 与物理数据独立性相比,实现逻辑数据独立性具有挑战性
- 数据独立性有助于提高数据质量