基于 ‌MySQL 数据库‌对三级视图(用户视图、DBA视图、内部视图)的详细解释

news/2025/3/4 6:24:15/

基于 ‌MySQL 数据库‌对三级视图(用户视图、DBA视图、内部视图)的详细解释,结合理论与实际操作说明:

一、三级视图核心概念

数据库的三级视图是 ANSI/SPARC 体系结构的核心思想,MySQL 的实现逻辑如下:

层级别称核心内容MySQL 中的体现
用户视图外模式/子模式用户看到的数据逻辑结构用户权限内的表、视图、可操作字段
DBA视图概念模式/逻辑模式全局逻辑结构、表关系、约束information_schemamysql 系统库元数据
内部视图内模式/存储模式物理存储结构、索引、文件组织方式InnoDB/MyISAM 存储引擎的物理文件、缓存机制


二、用户视图(外模式)

1. 定义

用户视角下可见的数据集合,‌权限隔离‌是核心特性。

2. MySQL 实现
‌权限控制‌:通过 GRANT/REVOKE 限制用户对表、字段的访问。
‌操作示例‌:

-- 创建用户并限制访问权限
CREATE USER 'user1'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON db1.employee TO 'user1'@'%';  -- 仅允许查询 employee 表-- 用户登录后只能看到授权对象
SHOW DATABASES;       -- 仅显示有权限的数据库
SELECT * FROM salary; -- 无权访问时报错:ERROR 1142 (42000)

三、DBA视图(概念模式)

1. 定义

DBA 或开发者看到的‌全局逻辑结构‌,包括所有表、字段、约束、用户权限等。

2. MySQL 实现
‌系统库 information_schema‌:存储元数据(表、列、索引等)。
‌操作示例‌:

-- 查看所有数据库中的表
SELECT table_name, table_type 
FROM information_schema.tables 
WHERE table_schema = 'db1';-- 查看用户权限
SELECT * FROM mysql.user WHERE user = 'user1';  -- 用户密码、权限字段

四、内部视图(内模式)

1. 定义

数据在磁盘的‌物理存储形式‌,由存储引擎(如 InnoDB)实现。

2. MySQL 实现
‌物理文件结构‌:
.frm:表结构定义文件(MySQL 8.0 后移除,元数据存于系统表)
.ibd:InnoDB 表的数据和索引文件(独立表空间模式)
‌操作示例‌:

-- 查看数据存储路径
SHOW VARIABLES LIKE 'datadir';  -- 输出如 /var/lib/mysql/-- 查看 InnoDB 存储细节
SHOW ENGINE INNODB STATUS;      -- 事务、锁、缓冲池状态

五、三级视图关系总结

graph TBA[用户视图] -->|通过外模式-模式映射| B[DBA视图]B -->|通过模式-内模式映射| C[内部视图]C -->|存储引擎解析| D[物理文件]


‌关键点‌:

‌用户无需关心物理存储‌,只需通过 SQL 操作逻辑表。
‌DBA 维护映射规则‌,如通过 ALTER TABLE 修改存储引擎而不影响用户视图。
‌存储引擎透明性‌:InnoDB 的 B+树索引、MyISAM 的堆表结构对用户不可见。


http://www.ppmy.cn/news/1576476.html

相关文章

0301 leetcode - 1502.判断是否能形成等差数列、 682.棒球比赛、657.机器人能否返回原点

1502.判断是否能形成等差数列 题目 给你一个数字数组 arr 。 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false…

Spring Boot 使用过滤器filter

执行流程 在Spring Boot项目中,过滤器(Filter)的执行流程遵循Servlet规范。具体来说,过滤器是在请求到达目标资源之前和响应返回给客户端之前执行的一系列操作。下面是详细的过滤器执行流程: 初始化阶段: 当Web应用启…

SQL Server2019安装步骤+使用+解决部分报错+卸载(超详细 附下载链接)

1、下载安装SQL Server2019 第一步:官网下载安装包SQL Server 2019 - 定价 | Microsoft 【以下内容图片借用SQL Server2019安装步骤(超详细 附下载链接) - 掘金中内容】 第二步:打开安装包,并选择基本. 第三步&#…

三次握手内部实现原理

socket()创建一个新的套接字 int socket(int domain, int type, int protocol); 参数: domain:地址族,如 AF_INET(IPv4),AF_INET6(IPv6) type:套接字类型&…

【CSS—前端快速入门】CSS 常用样式

CSS 常用 CSS 样式 1. 前端样式查询网站: MDN Web Docs (mozilla.org) w3school 2. border 2.1 借助 MDN 了解 border 我们借助 MDN 网站来学习 border 样式的使用: 2.2 border 常见属性 保存代码,打开页面: 对于标签不同样式的…

内网渗透测试-Vulnerable Docker靶场

靶场来源: Vulnerable Docker: 1 ~ VulnHub 描述:Down By The Docker 有没有想过在容器中玩 docker 错误配置、权限提升等? 下载此 VM,拿出您的渗透测试帽并开始使用 我们有 2 种模式: - HARD:这需要您将 d…

数据库基础四

创建数据表(创建mysql数据表需要以下信息:表名、表字段名、定义每个表字段) 一个关系型数据库,一般以表的形式显示 创建数据表(创建mysql数据表需要以下信息:表名、表字段名、定义每个表字段) CREATE TABLE 表名 (属性名 数据类型 完整性约束条件, 属性名 数据类型 完…

MySQL—授权与权限回收

1、查看某个用户的权限 --查看某个用户的权限 show grants; --查看root用户的权限 show grants for stc1; --查看stc1用户的权限 2、授权stc用户远程登录test库,并授予所有的执行权限 grant all privileges on stc.* to stc% identified by ppp; 3、授予stc1用户…