什么是数据库的外模式和模式映像?

简介: 什么是数据库的外模式和模式映像?

在数据库设计中,外模式/模式映像(External Schema/Conceptual Schema Mapping)是指将外部模式与概念模式之间的映射关系。外部模式是指用户或应用程序对数据库的特定视图或子集的定义,而概念模式是指数据库的整体逻辑结构和组织方式。外模式/模式映像的作用是将外部模式与概念模式解耦,使得数据库系统可以同时支持多个不同的外部模式,并提供数据的独立性和灵活性。


下面我们将详细介绍外模式/模式映像的概念,并通过一个具体的示例来说明其在数据库设计中的应用。


在数据库设计中,通常采用三级模式结构:外部模式、概念模式和内部模式。外部模式是用户或应用程序对数据库的可见部分,它定义了用户能够看到和操作的数据和操作方式。概念模式是数据库的整体逻辑结构和组织方式,它是数据库管理员(DBA)定义的全局模式,表示数据库的总体视图。内部模式是数据库在存储介质上的物理表示,它定义了数据的存储方式和访问路径。


外模式/模式映像将外部模式与概念模式之间的映射关系定义了用户视图与全局视图之间的转换方式。它允许数据库系统支持多个不同的外部模式,并提供了以下几个重要的优势:


  1. 数据的独立性:通过外模式/模式映像,数据库系统可以在概念模式的基础上定义不同的外部模式,使得用户能够根据自己的需求定义和操作数据。这种数据独立性使得数据库系统更加灵活,可以适应不同用户和应用程序的需求。
  2. 安全性和隐私保护:外模式/模式映像可以限制外部模式对数据库的访问权限,确保只有授权的用户可以访问和操作数据。通过定义适当的映射关系,可以实现数据的隐私保护和安全控制。
  3. 简化系统维护:外模式/模式映像将外部模式与概念模式解耦,使得对数据库结构的更改和调整可以在不影响外部模式的情况下进行。这简化了系统的维护工作,减少了对外部模式的影响。


现在,我们将通过一个具体的示例来说明外模式/模式映像的应用。


假设我们有一个在线商城的数据库系统,包含了用户信息、商品信息和订单信息等。我们需要为不同类型


的用户提供不同的界面和功能,例如管理员界面、顾客界面和供应商界面。每种用户类型都有不同的数据需求和操作权限。


首先,我们定义了概念模式,表示数据库的整体结构和组织方式。概念模式包括了用户信息、商品信息和订单信息等实体和它们之间的关系。

CREATE TABLE User (
    UserId INT PRIMARY KEY,
    UserName VARCHAR(50),
    UserType VARCHAR(20),
    ...
);
CREATE TABLE Product (
    ProductId INT PRIMARY KEY,
    ProductName VARCHAR(100),
    Price DECIMAL(10, 2),
    ...
);
CREATE TABLE Order (
    OrderId INT PRIMARY KEY,
    UserId INT,
    ProductId INT,
    OrderDate DATE,
    ...
);

然后,我们根据不同类型的用户需求,定义了相应的外部模式。管理员界面需要管理用户信息和商品信息,顾客界面需要浏览和下单,供应商界面需要管理商品信息和订单信息。

管理员界面的外部模式定义:

CREATE VIEW AdminView AS
SELECT UserId, UserName
FROM User;
CREATE VIEW ProductManagementView AS
SELECT ProductId, ProductName, Price
FROM Product;

顾客界面的外部模式定义:

CREATE VIEW CustomerView AS
SELECT UserId, UserName
FROM User;
CREATE VIEW ProductView AS
SELECT ProductId, ProductName, Price
FROM Product;
CREATE VIEW OrderView AS
SELECT OrderId, ProductId, OrderDate
FROM Order
WHERE UserId = :UserId;

供应商界面的外部模式定义:

CREATE VIEW SupplierView AS
SELECT UserId, UserName
FROM User;
CREATE VIEW ProductManagementView AS
SELECT ProductId, ProductName, Price
FROM Product;
CREATE VIEW OrderManagementView AS
SELECT OrderId, UserId, OrderDate
FROM Order
WHERE ProductId IN (SELECT ProductId FROM Product WHERE UserId = :UserId);


通过以上的定义,我们可以看到不同的外部模式定义了不同的视图(Views),每个视图只包含用户所需的特定数据。外模式/模式映像通过视图的定义和相应的查询语句,将外部模式与概念模式之间建立了映射关系。


在实际应用中,当用户使用不同的界面登录到数据库系统时,系统根据用户的身份和权限,提供相应的外部模式视图进行数据的展示和操作。例如,管理员登录时,系统显示管理员界面,并根据AdminViewProductManagementView视图提供相关的用户信息和商品信息管理功能。顾客登录时,系统显示顾客界面,并根据CustomerViewProductViewOrderView视图提供相关的商品浏览和下单功能。供应商登录时,系统显示供应商界面,并根据SupplierViewProductManagementViewOrderManagementView视图提供相关的商品和订单管理功能。


通过外模式/模式映像,我们实现了不同用户类型的数据独立性和灵活性。每个用户只


能访问和操作与其权限相符的数据,保证了数据的安全性和隐私保护。同时,外模式/模式映像还简化了系统的维护工作,允许在不影响外部模式的情况下对数据库结构进行调整和优化。


总结来说,外模式/模式映像是将外部模式与概念模式之间的映射关系,它实现了数据库系统的数据独立性和灵活性。通过定义不同的外部模式视图,每个用户类型可以访问和操作与其权限相符的数据,实现了数据的安全性和隐私保护。外模式/模式映像还简化了系统的维护工作,允许在不影响外部模式的情况下对数据库结构进行调整和优化。


相关文章
|
6天前
|
SQL 数据库 数据库管理
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
68 11
|
5天前
|
存储 JSON 数据库
理解数据库中的模式
【5月更文挑战第6天】这篇文章探讨了数据库模式的重要性和多种优化技巧。模式提供了一个命名空间来组织数据库对象,如表、视图和索引。通过使用模式,复杂的应用程序可以变得更容易理解和维护。文章介绍了防止日期重叠的 PostgreSQL 排除约束,用于存储树结构的物化路径方法,以及结合 NoSQL 的 JSON 列来简化数据存储。这些策略能帮助优化数据库设计和提升系统效率。
27 1
理解数据库中的模式
|
6天前
|
存储 监控 算法
什么是数据库的内模式
什么是数据库的内模式
31 5
|
6天前
|
存储 数据采集 数据管理
什么是数据库的概念模式
什么是数据库的概念模式
26 5
|
6天前
|
存储 SQL 数据库
数据库模式(Schema)
数据库模式(逻辑模式)是数据库全体数据的逻辑结构和特征描述,是公共数据视图,一个数据库只有一个。外模式(用户模式)是用户可见的局部数据逻辑结构,可有多个,提供数据安全性。内模式(存储模式)描述数据的物理结构和存储方式,一个数据库仅有一个,用于优化存储和减少冗余。
|
6天前
|
Oracle 关系型数据库 数据库
Oracle示例模式Scott:数据库世界的“小导游”
【4月更文挑战第19天】Oracle的Scott模式是数据库学习的向导,提供操作性的环境,包含表(如EMP和DEPT)、视图和索引。通过它,学习者能掌握基本语法和操作,如创建表、插入数据和编写查询。它是通往Oracle数据库世界的起点,帮助新手奠定基础,开启数据库探索之旅。
|
6天前
|
存储 Oracle 关系型数据库
Oracle的模式与模式对象:数据库的“城市规划师”
【4月更文挑战第19天】在Oracle数据库中,模式是用户对象的集合,相当于数据库的城市规划,包含表、视图、索引等模式对象。模式对象是数据存储结构,如表用于存储数据,视图提供不同查看角度,索引加速数据定位。良好的模式与模式对象设计关乎数据效率、安全和稳定性。规划时需考虑业务需求、性能、安全和可扩展性,以构建高效数据库环境,支持企业业务发展。
|
4天前
|
关系型数据库 MySQL API
实时计算 Flink版产品使用合集之可以通过mysql-cdc动态监听MySQL数据库的数据变动吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
79 0
|
6天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
60 0
|
6天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
44 0