说说我理解的数据库中的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对中小企业来说,一次的勒索事件有可能造成致命的伤害

勒索攻击越来越频繁 去年的勒索事件数据呈现出显著的增长趋势。具体来说&#xff0c;全球范围内的勒索软件攻击活动愈演愈烈&#xff0c;受害者数量创下历史新高&#xff0c;同比增长了46%。 例如&#xff0c;2023年伊始&#xff0c;英国皇家邮政成为了勒索团伙LockBit的大型…

QT 使用redis ,连接并使用

一.redis安装 链接&#xff1a;https://pan.baidu.com/s/17fXKOj5M4VIypR0y5_xtHw 提取码&#xff1a;1234 1.下载得到文件夹如图 course_redis为安装包。 2.启动Redis服务 把安装包解压到某个路径下即可。 打开cmd窗口&#xff0c;切换到Redis安装路径&#xff0c;输入 r…

LLM激活稀疏性加速

相关工作 Deja vu Contextual sparsity for efficient llms at inference time LLM in a flash Efficient Large Language Model Inference with Limited Memory ReLU Strikes Back Exploiting Activation Sparsity in Large Language Models ReLU2 Wins: Discovering Effi…

量子飞跃:从根本上改变复杂问题的解决方式

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨王珩 编译/排版丨沛贤 深度好文&#xff1a;1000字丨5分钟阅读 利用多功能量子比特的量子计算机已处于解决复杂优化问题的最前沿&#xff0c;例如旅行商问题&#xff0c;这是一个典型的…

10、【代理模式】通过引入一个代理对象来控制对原始对象的访问的方式。

你好&#xff0c;我是程序员雪球。 今天我们了解代理模式的原理、静态代理和动态代理的区别、Spring AOP 和动态代理的关系、代理模式的使用场景&#xff0c;以及用 Java 实现一个动态代理示例 一、代理模式的原理 代理模式是一种设计模式&#xff0c;它提供了一种通过引入一个…

手把手带你搞懂电压跌落测试DIP

针对很多入门小白不懂元器件&#xff0c;一些老工程师上班很多年有的也不懂得总结知识点&#xff0c;以及想学习不知道怎么系统学习的这一类人群&#xff0c;前方知识点来袭&#xff0c;请君放心食用~ 一&#xff0c;项目背景介绍 最近做项目过程中&#xff0c;客户要求要做电…

wps使用Latex编辑公式没有Latex formula

wps使用Latex编辑公式没有Latex formula 1. 下载CTEX2. 下载LaTeXEE3. 配置Miktex4. 配置latexee5. 用管理员权限运行latexeqedit.exe6. wps插入latex公式 1. 下载CTEX 下载CTEX网址&#xff0c;我下载的下图这个&#xff0c;下载完了之后运行exe文件安装ctex。 2. 下载LaTe…

【Entity Framework】你要知道EF中功能序列与值转换

【Entity Framework】你要知道EF中功能序列与值转换 文章目录 【Entity Framework】你要知道EF中功能序列与值转换一、序列1.1 基本用法1.2 配置序列设置 二、值转换2.1 配置值转换器2.2 批量配置值转换器2.3 预定义的转换2.4 ValueConverter类2.5 内置转换器 三、应用3.1 简单…

Java中的TCP通信

TCP通信 TCP通信Socket客户端ServerSocket服务端 例子&#xff1a;一发一收例子&#xff1a;多发多收异常捕获 例子&#xff1a;服务器与多个客户端同时通信多客户端通信架构服务端代码ServerReaderThread 服务端读数据线程 TCP通信 特点&#xff1a;面向连接、可靠通信 通信双…

动态数据源实现分表走shardingsphere,不分表走其他

shardingsphere从4.1.1升级到5.2.1但是还没有完结&#xff0c;因为在执行存储过程的时候&#xff0c;系统提示错误如下。shardingsphere是不支持存储过程呢&#xff0c;但项目中不能避免使用存储过程&#xff0c;因为有大量的数据需要初始化&#xff0c;这种情况该如何应对&…

AI绘梦师新项目歪门邪道2.0游戏玩法,仅需拷贝,一键生成,单日盈利500

我们今天要介绍的项目是“AI绘梦师新项目歪门邪道2.0游戏玩法”。这个项目的核心是利用AI技术帮助企业将用户的梦境转化为美术作品。操作起来非常简单&#xff0c;只需复制用户描述的梦境内容&#xff0c;然后将其输入到AI绘画软件中&#xff0c;软件就能自动生成相应的画作。 …

APP开发突增20倍!安卓和鸿蒙你站哪边?

随着科技的快速发展&#xff0c;智能设备已经成为我们生活中不可或缺的一部分。 根据不少业内人士爆料&#xff0c;今年9月华为将发布mate70系列&#xff0c;而同时华为自己也官宣了"鸿蒙星河版"&#xff0c;也就是原生鸿蒙系统&#xff0c;将于今年4季度商用。这很…

顶顶通呼叫中心中间件-SIP分机安全(mod_cti基于FreeSWITCH)

介绍 运行在公网的FreeSWITCH服务器&#xff0c;每天都会接收到很多恶意的呼叫请求和注册请求&#xff0c;尝试盗打电话。合理的配置可以防止电话给倒打&#xff0c;但是每天大量的攻击&#xff0c;会让FS产生很多日志&#xff0c;降低FreeSWITCH的处理能力&#xff0c;cti模块…

Python实现时间序列ARIMA模型(附带超详细理论知识和完整代码实现)

文章目录 0 结果1 介绍2 建模2.1 预备知识2.1.1 ADF检验结果&#xff08;单位根检验统计量&#xff09;2.1.2 差分序列的白噪声检验&#xff08;这里使用Ljung-Box检验&#xff09;2.1.3 ARIMA模型&#xff08;差分整合移动平均自回归模型&#xff09;的三个参数:p&#xff0c;…

《系统分析与设计》实验-----需求规格说明书 哈尔滨理工大学

文章目录 需求规格说明书1&#xff0e;引言1.1编写目的1.2项目背景1.3定义1.4参考资料 2&#xff0e;任务概述2.1目标2.2运行环境2.3条件与限制 3&#xff0e;数据描述3.1静态数据3.2动态数据3.3数据库介绍3.4数据词典3.5数据采集 4&#xff0e;功能需求4.1功能划分4.2功能描述…

(一)C++自制植物大战僵尸集成开发环境安装

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/uzrnw 1、下载Visual Studio集成开发环境 首先在微软官网下载Visual Studio 2022 Community版本。Community版本是免费的&#xff0c;并且满足个人开发的各种需求。Visual Studio 2022 下载链接&#xff1a;微软官网。选…

springboot+vue全栈开发【2.前端准备工作篇】

目录 前言准备工作Vue框架介绍MVVM模式 快速入门导入vue在vscode创建一个页面 前言 hi&#xff0c;这个系列是我自学开发的笔记&#xff0c;适合具有一定编程基础&#xff08;html、css那些基础知识要会&#xff01;&#xff09;的同学&#xff0c;有问题及时指正&#xff01;…

在Windows上配置VS Code GO语言开发环境

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【代码随想录】【动态规划】完全背包:零钱兑换,组合总和

零钱兑换 零钱作为物品 &#xff0c;零钱的面额作为物品的重量 def change(self, amount, coins):""":type amount: int:type coins: List[int]:rtype: int"""dp [0]*(amount 1)dp[0] 1# 遍历物品for i in range(len(coins)):# 遍历背包for …

室内设计师怎么获取合适的3D模型?

在室内设计中&#xff0c;3D模型的使用已经变得越来越普遍。它们可以帮助设计师更好地展示他们的设计想法&#xff0c;同时也能帮助客户更好地理解他们所期待的装修效果。然而&#xff0c;如何获取合适的3D模型却是许多设计师和客户面临的挑战。那么室内设计师怎么获取合适的3D…