首页 > 数据库 >数据库系统------三级模式架构

数据库系统------三级模式架构

时间:2024-08-30 22:52:19浏览次数:13  
标签:逻辑 概念模式 架构 数据库 视图 模式 ------ 数据库系统 数据

分层设计

主要分为3个层级

物理层

物理层就是描述 数据库如何存储记录,即 数据的实际存储方式,是 how

逻辑层

逻辑层就是描述 数据库中存储数据的结构以及它们之间的关系,即 存储了什么样的数据,是 what

视图层

视图层就是描述 数据的呈现方式,即 哪些数据应该被哪些用户看到,换句话说,不同的用户能够访问不同的数据,是 which

分层设计 如下:

1

这种设计就是数据库系统 抽象业务数据的方法,各层级之间相互影响小,也就是说改动的影响只局限在被改动的层级,而不会影响其他层级

这样做的好处是,我们可以隐藏数据库系统实现的细节,让用户访问他们能访问的,方便了以后系统功能的扩展等等

三级模式架构

模式

数据库的逻辑结构,其实就有点像是编程语言中的结构体、类这些,主要就是定义数据的结构(类型、关系等等)

三级模式

三级模式其实就对应着三个层级

  • 物理模式(内模式)

    数据库在 物理层 的设计

  • 逻辑模式(概念模式)

    数据库在 逻辑层 的设计

  • 子模式(外模式)

    数据库在 视图层 的设计,即 不同的视图

两级映射

  • 概念模式到内模式之间的映射

    可以想象一下,我们有一张表,表里记载了很多数据,我们编程或者访问这张表,其实访问的是逻辑层,然后通过概念模式到内模式之间的映射,实际获取到存储在数据库中的数据

    换句话说,逻辑层提供给我们访问的是 逻辑上连续 的数据,而实际上的数据可能是很分散的,这主要由物理层的设计决定

    总结就是,确保逻辑结构与物理存储之间的一致性,处理数据如何实际存储和访问

  • 外模式到概念模式之间的映射

    这个映射将用户视图(外模式)与数据库的概念结构(概念模式)关联起来

    它定义了用户如何通过其视图访问数据库中的数据,并确保视图中的数据正确映射到概念模式中的数据

三级模式架构图

2

数据独立性

  • 物理数据独立性

    物理层的修改不会影响或者说对逻辑层的影响小

  • 逻辑数据独立性

    逻辑层的修改不会影响或者说对视图层的影响小

三级模式架构的一个例子

3

我们可以看到,逻辑模式中,有各种各样的表,表中有各种各样的字段(即列),这些表之间可以通过相同的字段(即列)联系起来,比如说我们可以通过一个学生的姓名得到他的家长的名字,这就需要学生信息表和家属信息表(由学号联系起来)

在看到外模式,该模式下有各种各样的视图,针对不同的用户,可以看到这里也有学生信息表,但对比逻辑层中的学生信息表,我们发现少了几个字段,这就是一种视图(不让该用户看到学生的家庭电话等)

最后看到内模式,这个我也不知道咋讲,总之,它的存储方式并不是我们所设想的那样 有序就是了,我们通过概念模式到内模式的映射才能够访问这些 无序 的数据

标签:逻辑,概念模式,架构,数据库,视图,模式,------,数据库系统,数据
From: https://www.cnblogs.com/winter-z/p/18389598

相关文章

  • 探索异步之美:aiohttp库的魔力与奥秘
    文章目录探索异步之美:aiohttp库的魔力与奥秘背景:为何选择aiohttp?什么是aiohttp?如何安装aiohttp?简单函数使用方法场景应用常见Bug及解决方案总结探索异步之美:aiohttp库的魔力与奥秘背景:为何选择aiohttp?在当今这个快速变化的技术世界中,效率和性能是开发人员追求的......
  • 探索Python中的拼音魔法:pypinyin库的奇妙之旅
    文章目录探索Python中的拼音魔法:pypinyin库的奇妙之旅背景:为何选择pypinyin?库简介:pypinyin是什么?安装指南:如何将pypinyin纳入你的项目?功能探索:pypinyin的五大核心函数实战演练:pypinyin在不同场景下的应用常见问题:使用pypinyin时的三个常见bug及解决方案总结:pypinyin-你......
  • Go 语言生产服务故障案例精析
            大多数Go开发者都停留在简单的增删改查层面,对Go语言本身掌握程度不够,对常用依赖或者开源组件掌握不够,在开发项目过程中总会不经意间引入一些千奇百怪的问题,并且在遇到线上问题时往往束手无策。下面列举一些线上问题以及相应的解决思路,希望大家能从这些问题......
  • python办公自动化:使用`Python-PPTX`创建和操作表格
    表格是演示文稿中用于组织和显示数据的重要工具。使用Python-PPTX库,您可以在幻灯片中创建和自定义表格,包括设置表格的大小、格式和内容。本节将介绍如何使用Python-PPTX库创建表格并进行各种操作。1创建基本表格在Python-PPTX中,表格是通过add_table()方法创建的。您需要......
  • Python数据分析的数据导入和导出
    数据分析的数据的导入和导出前言一、导入数据导入Excel表格数据read_excel示例导入CSV格式数据read_csv()示例导入JSON格式数据JSON简介pandas导入JSON数据read_json()导入txt文件read_table示例导入(爬取)网络数据read_html()示例二、输出数据CSV格式数据输出to_csv示......
  • [js] 页面可见性API 监测用户切屏
    PageVisibilityAPI在做考试系统或者网课系统的时候,通常需要监测用户是否隐藏了当前标签页在看其它页面。PageVisibilityAPI提供了一个事件和两个状态来监测页面可见性,可以用它来判断用户是否切屏。visibilitychange这个事件会在页面可见性变化时触发。(隐藏时、打开时)//......
  • “从手动到自动:探索Cursor编辑器和Claude-3.5-Sonnet的AI编程工具“
    Cursor情况简介AI大神AndrejKarpathy都被震惊了!他最近在试用VSCodeCursor+ClaudeSonnet3.5,结果发现这玩意儿比GitHubCopilot还好用!Cursor在短短时间内迅速成为程序员群体的顶流神器,其背后的原因在于其默认使用OpenAI投资的Claude-3.5-Sonnet模型,这一举动不仅改变......
  • 【智能算法应用】基于融合改进A星-麻雀搜索算法求解六边形栅格地图路径规划
    目录1.算法原理2.结果展示3.参考文献4.代码获取1.算法原理【智能算法】麻雀搜索算法(SSA)原理及实现六边形栅格地图分析一下地图:六边形栅格地图上移动可以看做6领域运动,偶数列与奇数列移动方式有所差异,将六边形栅格地图与二维栅格地图做映射可以发现:偶数列移动......
  • 一个linux服务器安装多个java版本,如何选择指定的 java版本去执行
    linux中有时候可能你由于不同的项目需要使用不同版本的javajdk部署,你就需要在你的linux服务中安装很多个版本的javajdk,那么在linux中如何安装和使用不同版本的javajdk呢?1.安装第一个javajdk版本:到java官网下载一个javajdk版本,并解压,然后配置环境变量。javajdk地址:wge......
  • 转载知乎作者分享的下载工具CrazeCat,持所有BT种子/磁力链接
    CrazeCat是一款免费,可以实现一键加速的下载软件。安全,简便地在PC上安装下载。支持所有BT种子/磁力链接。具体用途不再赘述。注意事项:打开CrazeCat注册账户,注册才能加速官网获取>>>:CrazeCat官网下载注册账号安装完成并打开界面软件启动界面前往注册填写注册信息......