当前位置: 首页 > news >正文

数据库的三级模式结构与两级映像

三级模式结构与两级映像

  • 什么是数据库的三级模式结构?
  • 1. 模式(Conceptual Schema,概念模式)
    • 定义
    • 特点
    • 作用
    • 示例
  • 2. 外模式(External Schema,外部模式)
    • 定义
    • 特点
    • 作用
    • 举例
  • 3. 内模式(Internal Schema,内部模式)
    • 定义
    • 特点
    • 作用
    • 举例
  • 三级模式结构的关系和映射
    • 1. 外模式与模式的映射
      • 外模式与模式的关系
      • 映射机制
      • 举例
        • 电商系统中的用户视图与模式
        • 权限控制:
      • 映射的意义
    • 2. 模式与内模式的映射
      • 模式与内模式的关系
      • 映射机制
      • 举例
        • 电商系统中的存储优化
        • 映射逻辑:
      • 映射的意义
    • 3. 外模式与内模式的间接关系
    • 总结:映射在三级模式结构中的作用
    • 扩展:三级模式映射的类比
  • 三级模式的作用总结
  • 举例
    • 假设我们有一个图书馆系统:
  • 三级模式的优点

什么是数据库的三级模式结构?

三级模式结构是数据库系统架构的基础,用来管理和组织数据的视图和存储。它把数据库的整体结构划分为外模式模式内模式三个层次。
这种结构的目的是为了实现数据的抽象化管理,让用户不用关心复杂的底层存储方式,也可以根据不同需求灵活定义数据的呈现方式,同时保障数据的安全性和一致性。

数据库的三级模式结构就像一栋大楼:

  • 外模式:用户看到的房间样子,每个人只能进到他有钥匙的房间。
  • 模式(概念模式):大楼的总体设计图,包括房间布局、水电线路等。
  • 内模式:大楼的建筑材料(钢筋、水泥)以及具体的施工方式。

1. 模式(Conceptual Schema,概念模式)

定义

  • 模式是数据库的核心层,描述了整个数据库的逻辑结构。它定义了数据库中有哪些数据、数据之间的关系,以及如何保证数据的一致性和完整性。

特点

  1. 全局视图:描述的是数据库的整体结构,是所有用户和应用共享的。
  2. 逻辑层面:关注数据的逻辑组织方式,而不是物理存储方式。
  3. 保证一致性:它负责维护数据的完整性约束和一致性(如主键约束、外键约束等)。

作用

  • 为数据库定义一个统一的数据结构。
  • 屏蔽数据的存储细节,使得应用程序和用户不用关心数据是如何存储的。
  • 确保当数据库底层存储方式(内模式)变化时,逻辑结构保持不变(物理数据独立性)。

示例

在一个电商系统中:

  • 用户表:包含用户ID、姓名、邮箱等字段。
  • 商品表:包含商品ID、名称、价格、库存等字段。
  • 订单表:包含订单ID、用户ID、商品ID、下单时间等字段。
  • 数据关系:订单表中的用户ID是用户表的外键,商品ID是商品表的外键。

这些数据表和关系在概念模式中被定义。

2. 外模式(External Schema,外部模式)

定义

  • 外模式是数据库的用户视图,为不同用户或应用程序提供不同的数据子集和访问方式。

特点

  1. 个性化视图:每个用户或应用程序可以有自己的数据视图,只能看到需要的数据,其他数据被屏蔽。
  2. 安全性:通过外模式控制用户的访问权限,保障数据安全。
  3. 多样性:允许不同用户同时访问数据库,而彼此的视图可以完全不同。

作用

  • 让用户只看到他们需要的数据,屏蔽不必要的复杂性。
  • 实现逻辑数据独立性:当概念模式(数据结构)变化时,用户视图可以保持不变。

举例

在一个电商系统中:

  • 买家视图:只看到商品列表(商品名称、价格)和自己的订单信息。
  • 卖家视图:可以看到商品库存、销售情况。
  • 管理员视图:可以查看和修改所有数据。

比如:
买家只需要知道“我买了什么,花了多少钱”,而卖家需要知道“商品库存还剩多少”。这两个用户的需求不同,数据库通过外模式给他们提供了不同的数据视图。

3. 内模式(Internal Schema,内部模式)

定义

  • 内模式描述了数据在数据库中的物理存储方式,包括存储结构、索引方式、文件组织等。

特点

  1. 与硬件相关:关注数据的底层物理存储,具体到硬盘上的存储文件、索引等。
  2. 存储优化:为了提升性能,内模式需要选择合适的数据结构(如B+树索引、哈希索引)和存储方式(如压缩、分区)。
  3. 不可见性:用户和应用程序无法直接接触到内模式。

作用

  • 定义数据的存储方式和存取路径。
  • 屏蔽硬件存储的细节,为上层提供统一的逻辑数据结构。

举例

在电商系统中:

  • 用户表的实际存储可能是一个以用户ID为索引的B+树。
  • 商品表的数据可能分区存储在不同的硬盘上。
  • 日志数据可能存储在压缩文件中。

三级模式结构的关系和映射

在三级模式结构中,外模式、模式和内模式之间通过映射来建立联系。这些映射的作用是屏蔽层级之间的变化,实现数据的独立性和灵活性。

映射机制分为两种:

  1. 外模式与模式的映射:负责连接用户的视图(外模式)和数据库的逻辑结构(模式)。
  2. 模式与内模式的映射:负责连接逻辑结构(模式)和数据的物理存储(内模式)。

1. 外模式与模式的映射

外模式与模式的关系

  • 外模式是从 模式中派生出来的,它是用户或应用程序需要的数据子集。
  • 映射用来描述外模式和模式之间的数据对应关系
  • 它的作用是将用户的视图翻译为数据库的逻辑结构,并保证当模式发生变化时,外模式不受影响(逻辑数据独立性)。

映射机制

  1. 用户视图到模式的映射
    • 外模式的字段(列)如何对应到模式中的字段。
    • 外模式可能只包含模式中的部分字段,甚至会对字段重命名或计算处理。
  2. 权限控制
    • 映射过程还会对用户的权限进行限制,比如用户无法看到某些敏感字段。
  3. 数据转换
    • 如果外模式中的字段与模式中的字段格式不同,映射会对数据进行转换(如单位换算、日期格式化等)。

举例

电商系统中的用户视图与模式

假设一个电商数据库的模式中定义了如下表结构:

  • 用户表(User):用户ID姓名邮箱密码手机号余额
  • 商品表(Product):商品ID名称库存价格

外模式的需求:

  1. 普通买家视图(外模式1):需要看到“用户姓名、邮箱、手机号、余额”。
  2. 管理员视图(外模式2):需要看到所有字段,包括用户密码。

映射逻辑:

  • 外模式1:从用户表中筛选姓名邮箱手机号余额四个字段。
  • 外模式2:直接对用户表提供完整的字段视图。
权限控制:
  • 普通买家不能访问“密码”字段,这就是通过外模式与模式的映射实现的权限屏蔽。

映射的意义

  • 数据定制化:每个用户或应用只需要关心自己使用的数据。
  • 屏蔽逻辑变化:当模式(比如新增了一个字段)发生变化时,通过调整映射,用户的视图可以保持不变。
  • 数据安全:映射可以通过控制外模式来限制用户访问敏感数据。

2. 模式与内模式的映射

模式与内模式的关系

  • 模式描述数据库的逻辑结构,如表结构、字段属性和数据关系。
  • 内模式描述数据在存储设备上的组织方式,如文件结构、索引、分区方式等。
  • 映射用来描述逻辑结构如何对应到物理存储结构
  • 它的作用是当存储方式发生变化时,不影响模式(概念模式),从而实现物理数据独立性

映射机制

  1. 逻辑结构到存储结构的映射
    • 模式中的表、字段如何对应到物理存储的文件、块。
  2. 存储优化
    • 映射过程会选择最佳的存储方式(如索引、压缩)。
  3. 数据存取路径
    • 定义如何通过索引、哈希等方式快速检索数据。

举例

电商系统中的存储优化

假设电商数据库的模式定义了如下逻辑表结构:

  • 商品表(Product):商品ID名称库存价格

在内模式中,该逻辑表可能以不同方式存储:

  1. 对于频繁查询商品价格的场景:
    • 内模式中使用B+树索引按价格排序存储,以加快检索速度。
  2. 对于库存数据非常大的商品表:
    • 内模式中将商品表按照库存进行分区,低库存商品存储在SSD上,高库存商品存储在机械硬盘上。
  3. 如果需要减少存储占用:
    • 内模式中使用压缩存储库存字段。
映射逻辑:
  • 商品表的逻辑结构与存储结构之间的映射定义了:
    1. 哪个字段作为主键存储。
    2. 索引的类型和范围。
    3. 存储文件的组织方式(如分区)。

映射的意义

  • 存储优化:根据数据访问特点,选择最优的存储结构。
  • 屏蔽存储细节:即使底层的存储方式发生变化(比如从B+树改成哈希索引),概念模式和外模式都不需要改变。
  • 提高性能:通过索引、分区等优化存取路径,加快数据访问速度。

3. 外模式与内模式的间接关系

由于外模式和内模式之间没有直接的映射关系,它们的联系必须通过模式(概念模式)来建立:

  • 外模式定义了用户对数据的需求。
  • 模式(概念模式)充当中介,把外模式的需求翻译成具体的逻辑结构。
  • 内模式负责根据逻辑结构组织数据的存储。

这个分层的设计非常重要:

  1. 外模式与内模式隔离:用户不需要关心数据的存储细节,只需通过外模式操作逻辑结构。
  2. 统一管理:概念模式统一管理数据库的逻辑结构和数据关系,保障数据的一致性。

总结:映射在三级模式结构中的作用

映射类型作用实现的数据独立性
外模式与模式的映射将用户的视图映射到概念模式,控制用户能访问的数据子集。逻辑数据独立性
模式与内模式的映射将概念模式映射到物理存储结构,优化数据存储方式和访问路径。物理数据独立性

扩展:三级模式映射的类比

我们可以把三级模式映射比喻成一个大图书馆的管理流程:

  1. 外模式与模式的映射
    用户(比如学生、老师)只想借某些类型的书籍(比如小说、教科书),而图书管理员根据用户需求(外模式)从图书馆系统(模式)里筛选出对应的书籍。
  2. 模式与内模式的映射
    图书馆里有很多书架,书的摆放方式可能按照类别、作者姓名或编号排列。管理员只关心书架编号(内模式),不需要重新设计书的逻辑分类(模式)。

三级模式的作用总结

层次作用面向对象
外模式提供个性化视图,保障数据安全性,屏蔽数据库逻辑和存储的复杂性用户和应用程序
模式统一数据库逻辑结构,确保数据的一致性,屏蔽存储的物理细节数据库的全局逻辑视图
内模式定义数据的物理存储方式,优化存储和访问性能,屏蔽硬件和存储细节数据存储(硬件相关)

举例

假设我们有一个图书馆系统:

  1. 模式:图书馆的管理系统描述了所有书籍的信息(如书名、作者、ISBN号)、借阅记录、书籍的分类关系。
  2. 外模式
    • 普通读者视图:只能看到有哪些书,可以借哪些书。
    • 管理员视图:可以查看书籍的库存、借阅情况,还能新增或删除书籍。
  3. 内模式:书籍信息在数据库中以何种方式存储,比如使用B+树索引存储书名,ISBN号为主键,借阅记录分区存储等。

三级模式的优点

  1. 逻辑独立性:用户的视图不会因为数据结构的变化而改变。
  2. 物理独立性:数据的存储方式可以改变,不影响上层逻辑。
  3. 安全性:不同用户可以定义不同视图,保障数据访问安全。
  4. 灵活性:多用户、多应用同时访问时,能够提供不同的外模式视图。

相关文章:

数据库的三级模式结构与两级映像

三级模式结构与两级映像 什么是数据库的三级模式结构?1. 模式(Conceptual Schema,概念模式)定义特点作用示例 2. 外模式(External Schema,外部模式)定义特点作用举例 3. 内模式(Inte…...

TCP断开通信前的四次挥手(为啥不是三次?)

1.四次握手的过程 客户端A发送 FIN(终止连接请求) A:我要断开连接了(FIN)。A进入FIN_WAIT_1状态,表示请求断开,等待对方确认。 服务器B回复 ACK(确认断开请求,但还未准备…...

win32汇编环境,按字节、双字等复制字符的操作

;运行效果 ;win32汇编环境,按字节、双字等复制字符的操作 ;这是汇编的优点之一。我们可以按字节、双字、四字、八字节等复制或挨个检查字符。 ;有时候,在接收到的一串信息中,比如访问网站时,返回的字串里,有很多0值存在&#xff0…...

.net 项目引用与 .NET Framework 项目引用之间的区别和相同

在 .NET 和 .NET Framework 项目中,引用其他库或项目的方式有一些区别和相同之处。以下是详细的对比: 相同点 引用目的: 目的:无论是 .NET 还是 .NET Framework 项目,引用其他库或项目的主要目的是为了使用这些库或项…...

RabbitMQ--延迟队列

(一)延迟队列 1.概念 延迟队列是一种特殊的队列,消息被发送后,消费者并不会立刻拿到消息,而是等待一段时间后,消费者才可以从这个队列中拿到消息进行消费 2.应用场景 延迟队列的应用场景很多,…...

使用pyboard、micropython和tja1050进行can通信

单片机和can收发器之间tx、rx不需要交叉接线!!! tja1050的rx接Y3、tx接Y4 from pyb import CANcan CAN(1) can.init(modecan.NORMAL, prescaler6, sjw1, bs14, bs22, auto_restartTrue) # 1Mbps的配置,本文使用的micropython1.…...

JS学习之JavaScript模块化规范进化论

前言 JavaScript 语言诞生至今,模块规范化之路曲曲折折。 前言 JavaScript 语言诞生至今,模块规范化之路曲曲折折。社区先后出现了各种解决方案,包括 AMD、CMD、CommonJS 等,而后 ECMA 组织在 JavaScript 语言标准层面&#xff0…...

亚博microros小车-原生ubuntu支持系列:7-脸部检测

背景知识 官网介绍: Face Mesh - mediapipe mpFaceMesh.FaceMesh() 类的参数有:self.staticMode, self.maxFaces, self.minDetectionCon, self.minTrackCon staticMode:是否将每帧图像作为静态图像处理。如果为 True,每帧都会进行人脸检测…...

第二届国赛铁三wp

第二届国赛 缺东西去我blog找👇 第二届长城杯/铁三 | DDLS BLOG web Safe_Proxy 源码题目 from flask import Flask, request, render_template_stringimport socketimport threadingimport htmlapp Flask(__name__)app.route(/, methods"GET"])de…...

缓存商品、购物车(day07)

缓存菜品 问题说明 问题说明:用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。 结果: 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据,减少数据库查询…...

4【编程语言的鄙视链原因解析】

在编程行业中,是存在鄙视链的,技术越好的圈子越不明显,技术越差的圈子越明显,很多时候为新人营造了错误的观点,我们来针对此类现象为新人们讲解原因 ①心里落差:比如你是学厨师的 你经过过年努力练…...

美团一面面经

第一个问题:介绍一下最近做的项目 第二个问题:我对你项目有个地方比较感兴趣啊。就是你用的那个二级缓存,你的吞吐量有多大啊,为什么需要使用二级缓存? 答: 在二级缓存策略下,笔记详情接口的吞…...

什么是报文的大端和小端,有没有什么记忆口诀?

在计算机科学中,**大端(Big-Endian)和小端(Little-Endian)**是两种不同的字节序(即多字节数据在内存中的存储顺序)。理解这两种字节序对于网络通信、文件格式解析以及跨平台编程等非常重要。 1…...

Spring中BeanFactory和ApplicationContext的区别

目录 一、功能范围 二、Bean的加载时机 三、国际化支持 四、事件发布 五、资源加载 六、使用场景说明 在Spring框架中,BeanFactory和ApplicationContext是两种常见的容器实现方式,它们在功能和使用场景上存在一些显著的差异。本文将详细解析这两种容…...

期货行业专题|基于超融合实现 IT 基础设施现代化与国产化转型实践合集

SmartX 期货行业重要进展 帮助近 60 家期货用户部署 730 超融合节点,含 230 信创节点。 深入 5 大应用场景: 核心生产资源池 主席灾备资源池 信创云资源池 云原生存储与容器资源池 分布式存储资源池 更多超融合金融核心生产业务场景实践&#xf…...

AI新玩法:Flux.1图像生成结合内网穿透远程生图的解决方案

文章目录 前言1. 本地部署ComfyUI2. 下载 Flux.1 模型3. 下载CLIP模型4. 下载 VAE 模型5. 演示文生图6. 公网使用 Flux.1 大模型6.1 创建远程连接公网地址 7. 固定远程访问公网地址 前言 在这个AI技术日新月异的时代,图像生成模型已经成为了创意工作者和开发者手中…...

Jenkins-pipeline Jenkinsfile说明

一. 简介: Jenkinsfile 是一个文本文件,通常保存在项目的源代码仓库中,用于定义 Jenkins Pipeline 的行为。使用 Jenkinsfile 可以使 CI/CD 流程版本化,并且易于共享和审核。 二. 关于jenkinsfile: jenkins的pipeline…...

vue3中为什么引入setup,引入setup是为了解决什么问题,setup的执行时机是什么?返回值是什么

在 Vue 3 中,引入 setup 函数是为了提供一种更加简洁、灵活、逻辑分离和可维护的方式来组织组件的逻辑。setup 使得 Vue 3 在构建应用时,能够更加有效地支持组合式 API(Composition API),解决了 Vue 2 中一些组件逻辑组…...

Ubuntu 安装 docker 配置环境及其常用命令

Docker 安装与配置指南 本文介绍如何在 Ubuntu 系统上安装 Docker,解决权限问题,配置 Docker Compose,代理端口转发,容器内部代理问题等并进行相关的优化设置。参考官方文档:Docker 官方安装指南 一、安装 Docker 1…...

自动化01

测试用例的万能公式:功能测试界面测试性能测试易用性测试安全性测试兼容性测试 自动化的主要目的就是用来进行回归测试 新产品--第一个版本 (具备丰富的功能),将产品的整体进行测试,人工创造一个自动化测试用例,在n个版本的时候…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...