·

数据库中的Schema是什么?

发布时间:2024-08-18 00:31:51阅读量:237
转载请注明来源

在数据库中,schema( [ˈskimə],发音 “skee-muh” 或者“skee-mah”,(计划或理论的)提要,纲要;网络模式;图式;架构。中文叫模式)是数据库的组织和结构schemasschemata都可以作为复数形式。模式中包含了schema对象,可以是(table)、(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。数据库模式可以用一个可视化的图来表示,它显示了数据库对象及其相互之间的关系。

以上是模式图的一个简单例子,显示了三个表及其数据类型、表之间的关系以及主键和外键,以下是数据库模式的一个更复杂的例子。

在这种情况下,模式图分为四个部分:

(1)Customer Data(客户数据):与客户有关的数据,如姓名,地址等

(2)Business(业务):业务所需的数据,例如员工,商店位置,付款细节等

(3)Inventory(库存):所有产品的细节。在这里,产品是电影,所以它包含电影标题,类别,演员等数据。

(4)Views(视图):关于用于评估的数据的特别观点,所以通过这些模式图,我们可以进一步创建一个数据库,实际上,MySQL Workbench允许我们直接从图中生成一个Create Table脚本,然后我们就可以直接用这个脚本去创建一个数据库,还可以直接将一个数据库转换为一个关系图表。

Schema和DataBase是否等同?

涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪里。

取决于数据库供应商

对schema(模式)产生疑惑的一部分原因是数据库系统倾向于以自己的方式处理模式

(1)MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。
(2)但是,Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是一回事。
(3)而根据这篇SQL Server技术文章SQLServer technical article,schema是数据库SQL Server内部的一个独立的实体。 所以,他们也不是一回事。

因此,取决于您使用的RDBMS,模式和数据库可能不一样。

SQL标准对schema如何定义?

ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors),如果你之前对schema的定义疑惑不解,希望看了我的这篇文章会好一些,起码不会更差。

广义上

造成疑惑的另一个原因可能是由于schema这一术语具有如此广泛的含义,因为它在不同的环境下有不同的含义,schema一词源于希腊语skhēma,意思是形态(form),轮廓(figure),形状(shape)或方案(plan)。Schema在心理学中被用来描述组织信息类别及其之间关系的有组织的思维或行为模式。我们在设计一个数据库之前,还需要看看数据中的信息种类和它们之间的关系, 在我们开始使用DBMS中的物理模式之前,我们需要创建一个概念模式。在软件开发中讨论模式时,可以讨论概念模式、物理模式、内部模式、外部模式、逻辑模式等,每一个都有其特定的含义。

DBMS的schema定义

以下是三个领先的关系数据库系统的schema定义:

MySQL

Conceptually, a schema is a set of interrelated database objects, such as tables, table columns, data types of the columns, indexes, foreign keys, and so on. These objects are connected through SQL syntax, because the columns make up the tables, the foreign keys refer to tables and columns, and so on. Ideally, they are also connected logically, working together as part of a unified application or flexible framework. For example, theINFORMATION_SCHEMA and performance_schema databases use “schema” in their names to emphasize the close relationships between the tables and columns they contain.In MySQL, physically, aschema is synonymous with adatabase. You can substitute the keywordSCHEMA instead ofDATABASE in MySQL SQL syntax, for example using CREATE SCHEMA instead of CREATE DATABASE.Some other database products draw a distinction. For example, in the Oracle Database product, aschema represents only a part of a database: the tables and other objects owned by a single user.

MySQL官方文档指出,从概念上讲,模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层面上来说,模式与数据库是同义的。你可以在MySQL的SQL语法中用关键字SCHEMA替代DATABASE,例如使用CREATE SCHEMA来代替CREATE DATABASE

参考: MySQL Glossary, MySQL 5.7 参考手册. MySQL, Retrieved 6 June 2016。

SQL Server

The names of tables, fields, data types, and primary and foreign keys of a database.

SQL Server官方文档指出,schema中包含了数据库的表,字段,数据类型以及主键和外键的名称。参考:SQL Server Glossary. SQL Server 2016 Technical Documentation. Microsoft Developer Network. Retrieved 6 June 2016.

Oracle Database

Oracle中的schema系统与其他数据库系统大不相同,Oracle的schema与数据库用户密切相关。

A schema is a collection of logical structures of data, or schema objects. A schema is owned by a database user and has the same name as that user. Each user owns a single schema.

Oracle官方文档指出,schema是数据或模式对象的逻辑结构的集合,由数据库用户拥有,并且与该用户具有相同的名称,也就是说每个用户拥有一个独立的schema。

参考: Oracle Database Objects. Oracle Database Online Documentation 12c Release 1 (12.1). Oracle Help Center. Retrieved 6 June 2016.

如果想了解更多关于schema的内容,可以参考这篇文章schema definitions by DBMS.

创建Schema

尽管上述三个DBMS在定义schema方面有所不同,还是有一个共同点,就是每一个都支持CREATE SCHEMA语句。

MySQL

在MySQL中,CREATE SCHEMA创建了一个数据库,这是因为CREATE SCHEMACREATE DATABASE的同义词。 换句话说,你可以使用CREATE SCHEMA或者CREATE DATABASE来创建一个数据库。

Oracle Database

在Oracle中,CREATE SCHEMA语句实际上并不创建一个模式,这是因为已经为在创建用户时,数据库用户就已经创建了一个模式,也就是说在ORACLE中CREATE USER就创建了一个schema,CREATE SCHEMA语句允许你将schema同表和视图关联起来,并在这些对象上授权,从而不必在多个事务中发出多个SQL语句。

SQL Server

在SQL Server中,CREATE SCHEMA将按照名称创建一个模式,与MySQL不同,CREATE SCHEMA语句创建了一个单独定义到数据库的模式。和ORACLE也不同,CREATE SCHEMA语句实际创建了一个模式(前面说到这个语句在ORACLE中不创建一个模式),在SQL Server中,一旦创建了模式,就可以往模式中添加用户和对象。

总结

schema这个词可以用在很多不同的环境中,在特定数据库管理系统创建一个schema时,您需要使用DBMS特定定义模式,当你切换到一个新的数据库管理系统时,一定要查看该系统是如何定义schema的。


中文翻译转自:数据库中的Schema是什么?_我是蚁人的博客-CSDN博客_schema

英文原文转换语言可见。

0 人喜欢

评论区

暂无评论,来发布第一条评论吧!

弦圈热门内容

同调代数入门教材GTM 4: A Course in Homological Algebra 2nd ed.

这是本同调代数方面的入门教材,我高中的时候就是看这本教材入门同调代数的,同时期也有一位高中的朋友是看这本书学同调代数的,因此我认为这本书挺适合萌新小白入门的。需要注意的是,同调代数本身有一定的门槛,这本教材应该是几本同调代数中相对较好的一本了,即便是这本,当初我看一些部分的时候也是一知半解。这本书先从同调代数的根本代数结构——模开始讲起,接着逐步深入到范畴的定义。并没有一上来就给你抽象的定义,而是先来些具体的东西。范畴的概念非常的一般且普适,几乎所有数学领域都能应用到范畴的思想,它将数学对象抽象到只剩下它本身以及他们之间的关系,因此对于初学者而言刚开始并不太好理解。我初三的时候被范畴的概念所吸引,尝试去理解范畴的定义,最后表面上觉得自己看懂了定义,其实也只是明白个表面。学代数几何的人学习同调代数,除了可以看这本书以外,还有一份Grothendieck亲自写的note不得不看Grothendick经典同调代数文章:Some aspects of homological algebra。虽然我知道现在很多都有GTM全系列了,但我还是分享一下给有需要的人,GTM全系列上百本书,也不是每个人都 ...

Grothendieck著名求职信:一个纲领的提纲(Esquisse d'un Programme)

在之前分享EGA的帖子代数几何教皇Grothendieck经典著作:代数几何原理EGA法语原版全系列中,我说过会把Grothendieck的其他著作都分享出来,包括《一个纲领的提纲》。一个纲领的提纲,法语原标题为Esquisse d'un Programme,翻译成英文即Sketch of a Programme。这是Grothendieck于1984年提交给CNRS的求职信。 关于该信更详细的背景可见遥远的声音。在这封信中,Grothendieck提出了一个宏伟的理论——远阿贝尔几何(anabelian geometry),即考虑任意代数簇的平展基本群“远离阿贝尔”的部分。可惜Grothendieck直到最后也没能将自己的构想实现,他在该领域留下了冗长且晦涩的《伽罗华长征》(之后我会分享自己收藏的长征节选)。但是远阿贝尔几何的思想却延续了下去,其与Langlands program并列为后Grothendieck时代代数几何的几大方向之一。正是基于Grothendieck的这些思想,才有了之后望月新一在远阿贝尔几何方面的研究成果把加法与乘法结构拆掉再复原?望月新一如何引发代数几何变革 ...

Zariski交换代数经典教材Commutative Algebra系列(pdf可复制版)

Zariski的名字估计学代数几何的人都耳熟能详,先是入门时期的交换代数教材,然后就是深入研究时期随处可见的Zariski拓扑。本帖我们分享的便是著名的Zariski交换代数教材。Oscar Zariski & Pierre Samuel写的交换代数经典教材Commutative Algebra,该教材也是学习代数几何的经典入门前置教材之一,用于补充交换代数相关的前置知识。毕竟众所周知,代数几何的基础是抽象代数,尤其是交换代数,因此想要学习代数几何,就必须要有交换代数方面的扎实基础。交换代数方面的经典教材不少,包括Atiyah的那本Introduction To Commutative Algebra,那本书篇幅较小,更为简略感觉更加适合新人小白。而Zariski的Commutative Algebra则内容更加完备、更为系统性,该教材分为两本,基本上把代数几何相关的交换代数内容全都梳理了一遍。因此,Zariski的这本教材不仅可以作为初学者的交换代数入门教材,还能作为交换代数的词典用于查阅交换代数相关的知识。Zariski的这本教材,我记得当年网络上能找到的只是Commuta ...

代数几何教皇Grothendieck经典著作:代数几何原理EGA英译版全系列

在之前的帖子中代数几何教皇Grothendieck经典著作:代数几何原理EGA法语原版全系列(1),我分享了Grothendieck经典的EGA法语原本全系列。当时就有人反应说想要英译版,不是中文也行。之后在Grothendieck经典著作:代数几何原理EGA 1(1971第二版)法语+英译中,我分享了EGA 1第二版的法语版和英译版,后来发现,该英译版其实是EGA全系列的不完整英译版。现在EGA全系列完整的英译版终于来啦😇!如今好几年过去了,我发现EGA的英译版也翻译完整了。怀着激动的心情,我马上将大家期待已久的(包括我)EGA完整英译版分享出来😀。PS:附件就只有一个pdf版,大小接近3MB,确定是EGA完整版英译。不得不说用Latex重写一遍EGA居然这么轻量级,我还以为至少得几十MB呢。更新:这个英译版虽然涵盖了全系列,但是还是有部分内容缺失没反应完。感谢评论区的纠正,我其实没怎么看过英译版,都是直接看法语的😂。法语跟英语其实还是很像的,而且数学法语会比较简单,如果你英语比较熟练,完全可以依葫芦画瓢的学法语。更新:作者不再提供文件下载。。

Loring W Tu微分几何经典入门教材:An Introduction to Manifolds

Loring W Tu的微分几何入门教材An Introduction to Manifolds,中译名为《流形导论》。这本教材十分适合对微分几何感兴趣的萌新小白作为入门教材,想当年高二的时候,我就是因为看Jürgen Jost的Riemannian Geometry and Analysis看不懂,转而看Loring W Tu的An Introduction to Manifolds补充基础。Loring W Tu的书可以说非常对我胃口,这本书首先内容完备,把微分几何所有重要的基础概念给你讲一遍,而且语言简洁明了、思路清晰、通俗易懂。初三到高中时期,我看过不少微分几何的教材,包括陈省身的《微分几何讲义》,最后还是Loring W Tu的An Introduction to Manifolds让我真正学懂了微分几何😄。本教材从最基础的欧几里得空间光滑函数开始讲起,并不需要太多的前置知识即可开啃😁,只需要有大学本科数分高代的一些基础即可。而且其中的数学英文也并不需要太高的水平,因此也适合初步开始读英文文献的小白用于锻炼自己的英文数学阅读能力。Loring W Tu除了这本流形导论,还有一 ...

Atiyah交换代数经典入门教材:Introduction to Commutative Algebra

在上帖中,我分享了Zariski的交换代数教材:Zariski交换代数经典教材Commutative Algebra系列(pdf可复制版)。其实交换代数方面,除了Zariski的教材,还有Atiyah的Introduction to Commutative Algebra,以及Matsumura的Commutative Ring Theory可以作为交换代数的入门教材。Atiyah的教材是这三本教材中最简单的,Zariski的教材虽然很完备,但是篇幅过长,而且内容太过经典了,没有Atiyah的教材那样更加贴近新时代。而Matsumura的教材篇幅要比Atiyah的长一些,而且似乎感觉Atiyah的表达更加通俗易懂一些,毕竟Atiyah是众所周知的大师级人物。下面我们来回忆一下Atiyah的一些人物轶事。Atiyah作为与Serre齐名的伟大数学家,他最著名的工作即是与辛格一起证明了指标定理(Atiyah-Singer Index Theorem)。而Atiyah也与Grothendieck关系匪浅,见下图😁而Atiyah对物理也同样非常感兴趣,他与很多物理学家合作研究过,包括知名的唯一 ...

Matsumura交换代数入门教材:Commutative Ring Theory

在前面两帖Zariski交换代数经典教材Commutative Algebra系列(pdf可复制版)和 Atiyah交换代数经典入门教材:Introduction to Commutative Algebra 中,我分享了Zariski和Atiyah的交换代数教材。在本帖中,我把Matsumura的教材也分享出来。在这里我重新回顾一下这三本教材的区别。首先,Zariski的教材很完备,但是篇幅过长,而且内容太过经典了,没有另外两本那么与时俱进。因此Zariski的教材更加适合作为交换代数的词典用于查阅。当然如果你不需要按部就班从头到尾的看完一本书,Zariski的教材选择性的跳着看,完全可以作为入门教材。我高中的时候就是看Zariski的教材的。Atiyah的教材是这三本教材中最简单的,也是篇幅最短的。而Matsumura的教材篇幅要比Atiyah的长一些,并且Matsumura的教材有一些Atiyah中没有的概念,因此也值得一读,不过Atiyah教材的表达要更加通俗易懂一些。因此,我的建议是三本教材都读一读,但没必要全部看完,把需要掌握的基础概念都掌握了就行。读文献时有些术语找不到, ...

记录一下知乎问题《你的编程能力从什么时候开始突飞猛进?》

自从我为了完成毕设而开始全栈写网站,我的编程能力就跟打了鸡血一样,我做梦都没想到自己居然能写出一个像样的网站 弦圈 - 找到属于你的圈子 (manitori.xyz)(不喜勿喷)。原本我是个对编程一窍不通的人,我只对数学感兴趣,对编程可谓是不屑一顾,每次上编程课,我都在下面摸鱼看数学的内容。课后作业以及大作业,要么是CV缝合弄好的,要么就是等别的同学写完直接拿一份抄来应付的。直到后来,我得知毕业的时候只能写毕业设计,不能写纯数学方面的毕业论文,我感觉天都塌了。在距离答辩还有一年的时间里,我某天突然突发奇想的想找些项目来写写玩玩,于是就是梦开始的地方。我第一次接触到了开发网站这个东西(虽然这玩意已经存在很多年了),知道了Vue.js,接着知道了用Python可以做后端,然后就开始上手写个前后端分离的网站。刚开始我也只是随便写写,能应付得了毕设就得了。可是写着写着,我发现自己对编程越来越感兴趣,同时也越写越顺手、越熟练。然后我就开始没日没夜的写,最后经过六个月的开发,第一个网站 弦圈 - 找到属于你的圈子 (manitori.xyz) 于今年4月4日终于上线了。关于编程,我感觉是只有你真正 ...

我们的宇宙并不是由纯数学构成的

在理论物理学的前沿,许多最流行的想法都有一个共同点:它们都从一个数学框架开始,这个框架试图解释比我们目前流行的理论更多的东西。我们目前的广义相对论和量子场论框架在它们所做的事情上很出色,但它们并不是万能的。它们从根本上是不相容的,不能充分解释暗物质、暗能量,也不能充分解释为什么我们的宇宙充满了物质而不是反物质,以及其他谜题。数学确实使我们能够定量地描述宇宙,如果应用得当,它是一种非常有用的工具。但宇宙是一个物理实体,而不是数学实体,两者之间有很大区别。这就是为什么单靠数学,我们永远不足以得出万物的基本理论的原因。16 世纪最大的谜团之一是行星如何以逆行的方式运动。这可以通过托勒密的地心模型(左)或哥白尼的日心模型(右)来解释。然而,要获得任意精度的细节需要我们在理解观察到的现象背后的规则方面取得理论进展,这导致了开普勒定律和牛顿的万有引力理论。大约 400 年前,一场关于宇宙本质的争论正在展开。几千年来,天文学家一直使用地心模型准确描述行星的轨道,在这个模型中,地球是静止的,其他所有物体都围绕着它旋转。借助几何数学和精确的天文观测——包括圆、等距圆、均轮和本轮等工具,天体轨道的精确数学 ...

为什么可能没有体积的量子所组成的物质却有体积?

当你测量和观察周围的宇宙时,有一件事是可以肯定的:你看到、触摸到并以其他方式与之互动的物理对象都占据了一定的空间体积。无论是固体、液体、气体还是物质的任何其他形态,它都需要消耗能量来减少任何有形物质所占的体积。然而,看似矛盾的是,作为物质的基本成分,标准模型的粒子却根本没有可测量的体积;它们只是点粒子。那么,由无体积实体组成的物质如何占据空间,创造出我们所观察到的世界和宇宙呢?让我们从我们熟悉的事物开始,一步步分解,直到我们深入到支撑我们存在的量子规则。最后,我们可以从那里开始逐步向上。上图显示了对应于电磁波谱各个部分的尺寸、波长和温度/能量尺度。你必须使用更高的能量和更短的波长来探测最小的尺度。紫外线足以使原子电离,但随着宇宙的膨胀,光会系统地转移到更低的温度和更长的波长。如果你想了解体积,那么你必须了解我们测量物体大小的方式。确定宏观实体大小的方式通常是将其与已知大小的参考标准进行比较,例如尺子或其他测量棒。或者测量弹簧(或类似弹簧的物体)因该物体而位移的力、测量光穿过物体跨度所需的传播时间,甚至通过用特定波长的粒子或光子撞击物体的实验反馈来进行确定。正如光具有由其能量定义的量子力 ...

波尔兹曼大脑:宇宙中漂浮着至少7万5千亿亿亿个意识体

在这个广袤无垠的宇宙中,我们总爱幻想自己独一无二,是万物之灵。但你知道吗?根据某个奇妙的科学理论,你、我,甚至整个地球,可能都只是宇宙中随机“涨落”出来的一个意识体——没错,这就是让人脑洞大开的“玻尔兹曼大脑”假说!熵增定律:宇宙为何越来越“乱”?你的房间如果不打扫,是不是会越来越乱?这就是“熵增定律”在生活中的体现。简单来说,熵就是系统混乱程度的量度,而熵增定律则告诉我们,一个孤立系统的熵总是趋向于增加,直到达到最大化,也就是系统变得最混乱。宇宙,作为一个巨大的孤立系统,按理说也应该遵循这一法则。但奇怪的是,我们观测到的宇宙,似乎是从一个极其有序、熵极低的状态开始的。这,是为什么呢?玻尔兹曼的“脑洞”:宇宙其实是个“随机播放器”?这时,奥地利物理学家路德维希·玻尔兹曼登场了。他提出,熵增定律其实是统计性的,就像抛硬币,虽然正面朝上的概率是50%,但在无限次抛掷中,正面和反面出现的次数会趋于相等。同样,宇宙在大部分时间处于高熵态,但无限的时间尺度上,偶尔也会有“小概率事件”发生,即熵的随机涨落导致低熵态的出现。换句话说,我们现在所看到的这个有序、低熵的宇宙,可能只是一次“宇宙级”的随机 ...

Jürgen Jost黎曼几何与几何分析教材:Riemannian Geometry and Geometric Analysis

这本书是几何分析方面的入门教材,该教材先从最基本的黎曼流形讲起,然后逐步深入到李群和向量丛,接着到联络与曲率,基本上覆盖了几何分析很多重要的基础概念。这本书需要有一定的微分几何基础以及分析、李群等相关领域的基础,初学者谨慎使用。我高中的时候,就是对这本书的内容感兴趣,想要尝试理解,结果看到测地线就不懂了,接着后面看了点李群和向量丛就没再看了。建议先读Loring W Tu的两本微分几何教材Loring W Tu微分几何经典入门教材:An Introduction to Manifolds和Loring W Tu微分几何教材:Differential Geometry Connections, Curvature, and Characteristic Classes,有了一定的基础再专研Jürgen Jost的这本教材。我毕竟不是做微分几何的,所以关于这方面的就不说太多了。PS:作者不再提供附件下载。

Loring W Tu微分几何教材:Differential Geometry Connections, Curvature, and Characteristic Classes

在上帖Loring W Tu微分几何经典入门教材:An Introduction to Manifolds中,我提到高中时期,我为了看懂Jürgen Jost的几何分析教材Riemannian Geometry and Analysis,转而看Loring W Tu的An Introduction to Manifolds以及Differential Geometry Connections, Curvature, and Characteristic Classes。这本教材可以说是An Introduction to Manifolds的后续,建议先看一下An Introduction to Manifolds有了流形的基础,再看这本Connections, Curvature, and Characteristic Classes。本书开始就直接先从黎曼流形开始讲起,接着就讲曲率、联络这些微分几何进阶的重要基本概念。这也是为什么当初我会选择看这本书,因为这些内容刚好有助于我理解Riemannian Geometry and Analysis这本教材的内容(记得当时看到测地线就看不 ...

素数在整数整环中还是素的吗?

我的提问:一个整环$R$中的元素$p$是素的,如果$p$不是零或者一个单元,并且$p|ab$意味着$p|a$或者$p|b$(等价的$ab\in Rp$意味着$a \in Rp$或者$b\in Rp$)。一个整环$R$的元素$q$是不可约的,当$q$不是零或者一个单元,并且$q = ab$意味着$a$或$b$是一个单元。那么素数在整数整环中是素的吗?然后素数都是不可约的吗?回答1:这两个问题的都是对的。根据基础数论的事实,$\pm 1$是唯一可逆的整数,除$\pm 1$以外的整数可以唯一地表示为不同素数的乘积加上$\pm$,每个素数的幂都是正整数,这两个结果都很容易得到。回答2:素数在整数整环中既是素的,也是不可约的。根据定义,它们就是不可约的。为了证明它们是素的,请回顾一下欧几里得算法,该算法用于找到两个整数的GCD(并同时证明任意两个整数都有一个在等价意义下唯一的GCD,其中并不涉及素数的分解)。根据欧几里德算法可以得出,如果$d=\gcd(a,b)$对两个整数$a,b\in\mathbb Z$,则存在整数$u,v\in\mathbb Z$使得$d=ua+vb$。(贝祖特性。)现在, ...