说说我理解的数据库中的Schema吧
一、SQL标准对schema如何定义?
ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors)。
大部分的网上资料定义Schema如下:
schema是用来组织和管理数据的一种方式。它定义了数据库中的各种对象,如表、视图、索引等,以及它们之间的关系。schema可以看作是数据库的蓝图,它规定了数据的结构和组织方式,使得数据能够被有效地存储和检索。
听者有心说者却没有说清,所以造成很多时候都是吵来吵去,最后找答案的朋友也是一头雾水。
二、到底怎么理解合适呢?
我觉得这么理解可能更容易一些。
1、首先把Schema当做一个集合
Schema是指数据库对象的集合,包括表、视图、索引、存储过程、函数等。Schema是数据库中的逻辑结构,它定义了数据库中的所有对象及其之间的关系。
相当于一个大的描述文件,可以理解为一个xml文件,其格式简单描述如下:
<schema><table name="Albums"><field resultkey="true"><field></table><table name="Genre"><field resultkey="true"><field></table><table name="Artists"><field><field></table>
</schema>
也就是说schema是对一些表、列、视图、索引等的描述,可以理解为就是对下图结构的描述。

2、其次schema就是个标识
我们把schema就当做一个标识就好了,相当于一个逻辑标识,一个数据库里面可能有多个schema,我用下图圈一下,然后再描述一下。

每个圈里面看做一个schema,那么这个database就有两个schema了。那描述可以如下:
<schema name="schema1"><table name="film"><field resultkey="true"><field></table><table name="language"><field resultkey="true"><field></table><table name="actor"><field><field></table>
</schema>
<schema name="schema2"><table name="film"><field resultkey="true"><field></table><table name="inventory"><field resultkey="true"><field></table><table name="film_tex"><field><field></table>
</schema>
通过上面的说明是不是大概了解了。schema是一种逻辑组织方式,用来更好的描述数据关系以及进行权限控制。
三、Schema的作用
数据组织和结构化:schema定义了数据的结构,使得数据能够按照一定的方式进行组织和存储。它规定了表和列的名称、类型和约束,使得数据能够被正确地存储和检索。
数据一致性和完整性:schema可以定义数据的约束条件,如主键、外键、唯一性约束等,以确保数据的一致性和完整性。通过定义约束,schema可以限制数据的取值范围,防止不符合要求的数据被插入或更新。
数据安全性:schema可以定义访问权限和安全策略,控制用户对数据库中数据的访问和操作。通过定义权限和角色,schema可以限制用户的操作范围,保护数据的安全性。
Schema通常用于授权和访问控制,可以为不同的用户或角色分配不同的Schema权限,从而实现对数据库对象的安全控制。在一些数据库管理系统中,Schema也可以用于分离不同的业务逻辑或应用程序,以便更好地管理和维护数据库。
四、Schema的类型
在数据库中,可以存在多个schema,每个schema可以包含多个表和其他对象。不同的数据库管理系统支持不同的schema类型(这也是我们后面要说的),常见的有:
单一schema:所有的表和对象都位于同一个schema中。这是最简单的schema类型,适用于小型数据库或简单的应用程序。
多个schema:数据库中可以创建多个独立的schema,每个schema包含一组相关的表和对象。这种方式可以更好地组织和管理数据,提高数据库的可维护性和扩展性。
五、不同数据库中的Schema
不同数据库管理系统中的Schema虽然相差不大,但也有一些差异,描述如下:
1、MySQL
MySQL官方文档指出,从概念上讲,Schema是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层面上来说,Schema与数据库是同义的。你可以在MySQL的SQL语法中用关键字SCHEMA替代DATABASE,例如使用CREATE SCHEMA来代替CREATE DATABASE。在MySQL中基本认为schema和数据库相同,也就是说schema的名称和数据库的实例的名称相同,一个数据库有一个schema。
2、SQL Server
SQL Server官方文档指出,schema中包含了数据库的表,字段,数据类型以及主键和外键的名称。
3、Oracle
Oracle中的schema系统与其他数据库系统大不相同,Oracle的schema与数据库用户密切相关。Oracle官方文档指出,schema是数据或模式对象的逻辑结构的集合,由数据库用户拥有,并且与该用户具有相同的名称,也就是说每个用户拥有一个独立的schema。
4、PostgreSQL
在PostgreSQL中,可以创建一个数据库,然后在数据库中,创建不同的schema,每个schema又有着一些各自的表,索引等。

参考资料:
https://blog.csdn.net/xiaokanfuchen86/article/details/113052362
https://www.jianshu.com/p/3ff42cb84f3e
https://blog.csdn.net/hpulfc/article/details/79564790
https://cloud.tencent.com/developer/article/2084855
https://www.jianshu.com/p/3ff42cb84f3e
https://zhidao.baidu.com/question/635700125562783284.html
https://cloud.tencent.com/developer/article/2084855
相关文章:
说说我理解的数据库中的Schema吧
一、SQL标准对schema如何定义? ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors)。 大部分的网上资料定义Schema如下: schema是用来组织和管理数据的一种方式。它…...
nginx 如何对用户屏蔽网站首页但是对蜘蛛开放
使用 Nginx 的 if 指令结合 $http_user_agent 变量来实现条件判断。不过,请注意,Nginx 官方文档通常建议避免在配置中过度使用 if 指令,因为它可能会导致不可预测的行为,尤其是在复杂的配置中。然而,对于简单的用例&am…...
【vue】ref 和 reactive 对比
ref:存储单个数据,如数值,字符串reactive:存储复杂数据,如对象,数组 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vie…...
爬虫现在还有那么吃香嘛?
Python 作为一种广泛应用的编程语言,在 Web 开发、大数据开发、人工智能开发和嵌入式开发等领域都有着重要的应用。 Python 的易学性、清晰性和可移植性等特点使它得到很多技术人士的喜爱。对于数据科学和机器学习领域的程序员来说,Python 提供了强大的…...
MobaXterm无法登陆oracle cloud的问题
问题 我在oracle cloud上创建实例的时候,只能使用密钥的方式登陆,当时下载了私钥文件。实例创建好以后,在mobaxterm上使用这个私钥文件无法登陆 排查 尝试使用mobaxterm的keygen,把私钥文件转成ppk格式,还是不行。…...
VLL: a lock manager redesign for main memory database systems阅读
为何要有VLL?VLL旨在解决什么问题? 在数据库系统中,锁是广泛使用的并发控制机制。然而对于内存数据库系统,锁管理器却成为了性能瓶颈所在。 一项研究说明内存数据库中有16%~25%的时间用于与锁管理器的交互 在传统的锁…...
REST API实战演练之JavaScript使用Rest API
咱们前面讲了一下如何创建REST API 假期别闲着:REST API实战演练之创建Rest API-CSDN博客 又讲了java客户端如何使用REST API 假期别闲着:REST API实战演练之客户端使用Rest API-CSDN博客 接下来咱们看看JavaScript怎么使用REST API。 一、新建一个…...
期货量化交易软件:MQL5 中的范畴论 (第 15 部分)函子与图论
概述 在上一篇文章中,我们目睹了前期文章中涵盖的概念(如线性序)如何视作范畴,以及为什么它们的“态射”在与其它范畴相关时即构成函子。在本文中,我们赫兹量化软件将阐述来自前期文章中的概括,即通过查看…...
2024妈妈杯数学建模B题思路-甲骨文智能识别中原始拓片单字自动分割与识别研究
# 1 赛题 B 题 甲骨文智能识别中原始拓片单字自动分割与识别研究 甲骨文是我国目前已知的最早成熟的文字系统,它是一种刻在龟甲或 兽骨上的古老文字。甲骨文具有极其重要的研究价值,不仅对中国文明的 起源具有重要意义,也对世界文明的研究有着…...
sql 之 索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 1. 什么是索引 官方上面说索引是帮助MySQL高效获取数据的数据结构,通俗点来说,数据库索引就像是是一本书的目录,可以直接根据页码…...
创建基于Node的WebSocket服务
一:安装nodejs与npm apt-get install nodejs npm 但这种方法安装的版本可能偏低,影响后续的 npm install ws wscat。 按照 How to Install Node.js and npm on Ubuntu 18.04 | Linuxize里的步骤安装: 1、curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash …...
Flask快速搭建文件上传服务与接口
说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、需求背景 前端通过浏览器,访问后端服务器地址,将目标文件进行上传。 访问地址:http://127.0.0…...
AI算力报告:算力大时代,AI算力产业链全景梳理
今天分享的是AI算力专题系列深度研究报告:《算力大时代,AI算力产业链全景梳理》。 (报告出品方:中信建投证券) 报告共计:98页 核心观点 生成式 AI取得突破,我们对生成式 A 带来的算力需求做…...
点击上传文件
一、页面样式: (1)点击前: (2)点击后: 设计:①自定义elementPlus图标;②使用Tooltip实现鼠标悬浮按钮上出现文字提示;③上传与更换的切换样式;…...
文件上传【2】--靶场通关
1.前端禁用js绕过 上传文件,进行抓包,没有抓到,说明这里的验证是前端js验证跳出的弹窗 禁用js后,php文件上传成功。 2.文件上传.htaccess 上传png木马后连接不上 代码中存在.htaccess,判断此时应该就是需要用到.htac…...
uniapp请求后端接口
新建文件夹utils const request (config) > {// 拼接完整的接口路径config.url http://mm.test.cn config.url;//这里拼接的是访问后端接口的地址,http://mm.test.cn/prod-api/testconsole.log(config.url)//判断是都携带参数if(!config.data){config.data …...
第十三章 OpenGL ES-RGB、HSV、HSL模型介绍
第十三章 OpenGL ES-RGB、HSV、HSL模型详细介绍 第一章 OpenGL ES 基础-屏幕、纹理、顶点坐标 第二章 OpenGL ES 基础-GLSL语法简单总结 第三章 OpenGL ES 基础-GLSL渲染纹理 第四章 OpenGL ES 基础-位移、缩放、旋转原理 第五章 OpenGL ES 基础-透视投影矩阵与正交投影矩阵…...
微软卡内基梅隆大学:无外部干预,GPT4等大语言模型难以自主探索
目录 引言:LLMs在强化学习中的探索能力探究 研究背景:LLMs的在情境中学习能力及其重要性 实验设计:多臂老虎机环境中的LLMs探索行为 实验结果概览:LLMs在探索任务中的普遍失败 成功案例分析:Gpt-4在特定配置下的探…...
探索设计模式的魅力:简单工厂模式
个人主页: danci_ 🔥系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章:探索设计模式的魅力:简单工厂模式 简单工厂模式&#x…...
【数据结构】-----双链表(小白必看!!!)
c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
