数据库数据库·

数据库中的Schema是什么?

投稿時間:2024-08-18 00:31:51閲覧数:52
専門記事
転載は出所を明記してください

在数据库中,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

英文原文转换语言可见。

コメント欄

まだコメントがありません。最初のコメントを投稿しましょう!

弦圈热门内容

cover

原创文章被检测为AI创作,AI检测还靠谱吗?

自从GPT火了以后,网络上的AI内容就变得泛滥了,刚开始还能轻松辨别哪些是AI的(一眼AI),哪些是人写的。现在这一两年里,随着生成式AI不断深入人心,AI内容变得更加泛滥了,并且经过这段时间技术的发展,AI生成的内容越来越真假难辨😢😤,有些AI生成的内容需要仔细辨别才能看出端倪。更可怕的是,道高一尺魔高一丈😔🙁,所谓的AI检测技术发展远远比不上AI生成技术的发展。AI生成的内容跟人越来越像,甚至有时候比人写的还要好,而人写的内容呢,相对的也就越来越AI化了😅。因此目前的AI检测会出现把人写的认定为AI写的荒谬事情。这也就意味着潘多拉魔盒已经彻底打开,AI内容与人的内容的界限开始变得模糊,所有的内容都变得真假难辨,恐怕这样下去人会彻底活在虚幻的世界里😭。以下为AI检测的结果我们检测用的是为什么说外国教材好?国外教材与国内教材的区别与 Djano云服务器部署 uwsgi+nginx+https部署这两篇文章。使用GPTZero进行检测,其他检测工具就不列举说明了,感觉用哪个AI检测结果都不会有太大差别。其实是别的AI检测都太不靠谱了😄,Undetectable.ai感觉就无论给它什么结果 ...

[antd: Message] You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead.

I'm getting this error when using MessageWarning: [antd: Message] You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead.Here is my code:import { message } from 'antd'; export default function Page() { const [messageApi, contextHolder] = message.useMessage(); const res = await fetch("/api/...", { method: "POST", }); if (!res.ok) { messageApi.error("Error! Fail to login!"); } return ( <Home> ... </Home> ) }

逻辑回归算法介绍

逻辑回归是一种用于二分类和多分类任务的机器学习算法。尽管名字中包含“回归”一词,但它主要用于分类,而不是预测连续值。逻辑回归通过构建一个线性模型,并通过非线性函数将其映射到一个概率空间,从而实现分类。以下是逻辑回归的主要特点和工作原理:线性模型:逻辑回归首先构建一个线性模型。设 (x_1, x_2, \ldots, x_n) 是输入特征,(w_1, w_2, \ldots, w_n) 是权重,(b) 是偏置,那么线性组合可以表示为: [ z = w_1 \cdot x_1 + w_2 \cdot x_2 + \ldots + w_n \cdot x_n + b. ]Sigmoid函数:为了将线性模型的输出转换为概率,逻辑回归使用sigmoid函数,也称为逻辑斯蒂函数。该函数可以将任意实数映射到0和1之间,定义如下: [ \sigma(z) = \frac{1}{1 + \exp(-z)}. ]输出概率:通过sigmoid函数,线性模型的输出被转化为概率。对于二分类任务,这个概率可以解释为样本属于某个类别的概率。例如,如果我们预测输出为1的概率是0.7,那么预测输出为0的概率就是0.3。 ...

cover

浅谈《天国:拯救》中的骰子游戏

原链接: https://zhuanlan.zhihu.com/p/386924079?utm_campaign=shareopn&utm_medium=social&utm_psn=1806094671581167616&utm_source=wechat_session 正文:《天国:拯救》是由战马工作室制作的中世纪RPG游戏,根据1403年发生的真实历史改编。本作的故事发生在中世纪时,匈牙利之王与瓦茨拉夫四世内战的波西米亚,《天国:拯救》的故事是根据真实历史改编的。随着贤君查理四世驾崩,神圣罗马帝国陷入了战争、腐败与混乱。瓦次拉夫,查理四世的儿子,却沉迷荒淫之事而不理朝政。瓦茨拉夫不满的宗亲贵族最后只能求助于瓦茨拉夫的皇兄——匈牙利之王,西格斯蒙德。但西格斯蒙德最后采用了极端的方式,绑架国王,逼其退位,趁乱夺权,其率部队大举进攻波西米亚,并侵蚀国王盟友的领地。在这乱世中,铁匠之子亨利在城镇斯卡里茨和父母过着平凡而快乐的生活,但这平静生活被一群库曼人雇佣军所打乱,他们收到了西格斯蒙德的亲令,掠夺并烧毁了城镇,在这次混乱中,亨利是为数不多的逃过这场浩劫的幸存者 ...

宇宙的最终结局会是什么?宇宙命运结局的三种假说

宇宙是如何诞生的?这个问题一直吸引着人类的好奇心。随着二十世纪六十年代,宇宙微波背景辐射的发现,科学界普遍认为,宇宙起源于大约138亿年前的一次大爆炸。然而,宇宙的最终结局又是怎样的呢?这是另一个让人类深思的问题。自人类诞生以来,人们就对死亡充满了恐惧,因为死亡意味着失去一切,无论是美好的事物,还是别的东西,全都将趋于“虚无”。虽然人类对死亡非常恐惧和厌恶,但是它似乎是宇宙中的一道铁律,目前仍然没有破解和逃脱的方法。不仅地球上所有的生物都难逃灭亡的结局,就连宇宙本身或许也不是永恒存在的,它也许会在遥远未来的某天迎来自己的终结,这已成为科学界公认的事实。关于宇宙的最终结局,科学家们提出了多种假说。其中一个是“大撕裂”理论,随着科学的发展,科学家们又提出了另外两种关于宇宙最终命运的假说:热寂和大坍缩。本期内容我们就来聊聊这个话题。1. 大撕裂假说图片来自网络宇宙的命运一直是天文学家争论不休的话题。有些人认为宇宙将永远存在,而另一些人则认为它最终会走向毁灭。如果你是一个科学家,你可能会对宇宙的未来感到担忧。因为有一种假说告诉我们,宇宙的结局可能是一场灾难性的大撕裂!大撕裂理论认为,宇宙的膨胀 ...

物理学家打造史上最难迷宫:极易碎成微粒

代达罗斯本可以从英国和瑞士的物理学家团队那里获取灵感。他们从分形几何和国际象棋的策略游戏中汲取原理,创造出了他们所说的有史以来最难的迷宫。在英国布里斯托尔大学物理学家菲利克斯·弗利克的带领下,这个研究小组在阿曼-比克尔平纹图案中产生了被称为汉密尔顿循环的路线,创造了复杂的分形迷宫。他们说,这些分形迷宫描述了一种被称为准晶体的特殊物质形态。它的灵感来自于一个骑士在棋盘上的移动。“当我们观察我们构建的线条的形状时,我们注意到它们形成了令人难以置信的复杂迷宫。随后迷宫的大小呈指数级增长,且数量无限,”弗莱克解释说。“在骑士之旅中,棋子(向前跳两个格,向右跳一个格)在回到起始方格前只访问一次棋盘的每个方格。这是‘汉密尔顿循环’的一个例子,即通过地图的循环只访问所有站点各一次。”准晶体是自然界中极其罕见的物质形态,是固体中有序和无序晶体的奇特混合。在有序的晶体中 —— 如盐、钻石或石英 —— 原子以非常整齐的模式排列,并在三维空间中重复。你可以将这个晶格的一部分叠加到另一部分上,它们就会完美地匹配。无序的或无定形的固体是指其中的原子都是乱糟糟的,包括玻璃和一些通常在地球上找不到的冰。准晶体是一种 ...

cover

地心人和外星人阴谋论

由于本文对超维度到能拨弄时间的文明是否存在这个问题持有悲观态度,因此论述条件限制在三维下。 1.1 地心文明论我们默认地心是指距离地面6000公里的地方,这个地方的特点是:4000摄 氏度以上的极高温360 GPa 的地心压力没有阳光、几乎没有水分、氧气放射性元素衰变产生的大量辐射不依靠【温室】能在这种地方活下来的生物应该具有的特点:不能 是碳基,因为蛋白质DNA细胞分子结构全都会在高温下遭到破坏生物体 结构要异常坚韧,能在极高压下维持运作能有办法直接或间接吸收地热 能量维持生物体运作,且这个过程气体和水不参与反应其生存和繁衍模式能与辐射共生我们目前探测地心的手段有:由于地球内部的密度变化会影响地球重力场,因此精确重力测量可以给出地下岩石密度变化 由于地核中的液态铁和镍会产生磁场,通过探测地球磁场变化可以分析地壳中磁性物质分布遇到液体层会减速的纵向地震波,和只在固体传播的横向地震波人类的理性只能讨论可知的部分,讨论不可知部分是无效操作,在可知的范围内,目前只有少量微生物能在深底层存活,马里亚纳海沟最深处的生物也只是距离地面11公里而已。在可知范围内,没有任何生物能在地心长期生存。在贝叶 ...