在数据库设计中,外模式 / 模式映像(External Schema/Conceptual Schema Mapping)是指将内部模式与概念模式之间的映射关系。内部模式是指用户或应用程序对数据库的特定视图或子集的定义,而概念模式是指数据库的整体逻辑构造和组织形式。外模式 / 模式映像的作用是将内部模式与概念模式解耦,使得数据库系统能够同时反对多个不同的内部模式,并提供数据的独立性和灵活性。
上面咱们将具体介绍外模式 / 模式映像的概念,并通过一个具体的示例来阐明其在数据库设计中的利用。
在数据库设计中,通常采纳三级模式构造:内部模式、概念模式和外部模式。内部模式是用户或应用程序对数据库的可见局部,它定义了用户可能看到和操作的数据和操作形式。概念模式是数据库的整体逻辑构造和组织形式,它是数据库管理员(DBA)定义的全局模式,示意数据库的总体视图。外部模式是数据库在存储介质上的物理示意,它定义了数据的存储形式和拜访门路。
外模式 / 模式映像将内部模式与概念模式之间的映射关系定义了用户视图与全局视图之间的转换形式。它容许数据库系统反对多个不同的内部模式,并提供了以下几个重要的劣势:
- 数据的独立性:通过外模式 / 模式映像,数据库系统能够在概念模式的根底上定义不同的内部模式,使得用户可能依据本人的需要定义和操作数据。这种数据独立性使得数据库系统更加灵便,能够适应不同用户和应用程序的需要。
- 安全性和隐衷爱护:外模式 / 模式映像能够限度内部模式对数据库的拜访权限,确保只有受权的用户能够拜访和操作数据。通过定义适当的映射关系,能够实现数据的隐衷爱护和安全控制。
- 简化系统维护:外模式 / 模式映像将内部模式与概念模式解耦,使得对数据库构造的更改和调整能够在不影响内部模式的状况下进行。这简化了零碎的保护工作,缩小了对外部模式的影响。
当初,咱们将通过一个具体的示例来阐明外模式 / 模式映像的利用。
假如咱们有一个在线商城的数据库系统,蕴含了用户信息、商品信息和订单信息等。咱们须要为不同类型
的用户提供不同的界面和性能,例如管理员界面、顾客界面和供应商界面。每种用户类型都有不同的数据需要和操作权限。
首先,咱们定义了概念模式,示意数据库的整体构造和组织形式。概念模式包含了用户信息、商品信息和订单信息等实体和它们之间的关系。
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),每个视图只蕴含用户所需的特定数据。外模式 / 模式映像通过视图的定义和相应的查问语句,将内部模式与概念模式之间建设了映射关系。
在理论利用中,当用户应用不同的界面登录到数据库系统时,零碎依据用户的身份和权限,提供相应的内部模式视图进行数据的展现和操作。例如,管理员登录时,零碎显示管理员界面,并依据 AdminView
和ProductManagementView
视图提供相干的用户信息和商品信息管理性能。顾客登录时,零碎显示顾客界面,并依据 CustomerView
、ProductView
和OrderView
视图提供相干的商品浏览和下单功能。供应商登录时,零碎显示供应商界面,并依据 SupplierView
、ProductManagementView
和OrderManagementView
视图提供相干的商品和订单治理性能。
通过外模式 / 模式映像,咱们实现了不同用户类型的数据独立性和灵活性。每个用户只
能拜访和操作与其权限相符的数据,保障了数据的安全性和隐衷爱护。同时,外模式 / 模式映像还简化了零碎的保护工作,容许在不影响内部模式的状况下对数据库构造进行调整和优化。
总结来说,外模式 / 模式映像是将内部模式与概念模式之间的映射关系,它实现了数据库系统的数据独立性和灵活性。通过定义不同的内部模式视图,每个用户类型能够拜访和操作与其权限相符的数据,实现了数据的安全性和隐衷爱护。外模式 / 模式映像还简化了零碎的保护工作,容许在不影响内部模式的状况下对数据库构造进行调整和优化。