数据库中的Schema是什么?「建议收藏」

数据库中的Schema是什么?「建议收藏」参考:http://database.guide/what-is-a-database-schema/在数据库中,schema(发音“skee-muh”或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemasandschemata都可以作为复数形式。模式中包含了schema对象,可以是表(table)、列(column)、数据类型(datatype)、视图(view)…

大家好,又见面了,我是你们的朋友全栈君。

参考:http://database.guide/what-is-a-database-schema/

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

数据库中的Schema是什么?「建议收藏」

 

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

 

数据库中的Schema是什么?「建议收藏」

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

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

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

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

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

Schema和DataBase是否等同?

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

取决于数据库供应商

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

1MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。

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的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146061.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php://input allow_url_include,php allow_url_include的应用和解释_PHP教程

    php://input allow_url_include,php allow_url_include的应用和解释_PHP教程因为这个原因,许多安全研究人员建议在php.ini配置中禁用指向allow_url_fopen。不幸的是,许多推荐这种方法的人,并没有意识到,这样会破坏很多的应用并且并不能保证100%的解决remoteURLincludes以及他带来的不安全性。通常,用户要求在他们使用其他的文件系统函数的时候,php允许禁止URL包含和请求声明支持。因为这个原因,计划在PHP6中提供allow_url_inc…

    2022年7月21日
    20
  • 模式先行全新解读微商分销系统

    模式先行全新解读微商分销系统在微商迅速发展的时代下,微商分销系统的需求也日渐上升,这对微商分销系统也有着更高的要求。一款好的微商分销系统需要具备“快速搭建、功能强大、顺畅分销、管理有序,支付便捷,扩展性强”等条件,模式先行,分销模式也是恒量分销系统的一个非常重要的指标。微商分销系统通常为一级/二级/三级分销模式,即品牌商可以发展一级/二级/三级分销商,每一级分销商均可以往下再发展一级/二级分销商。我们以三级分销模式为例解读A…

    2022年5月17日
    40
  • 【spring】Spring事件监听器ApplicationListener的使用与源码分析

    【spring】Spring事件监听器ApplicationListener的使用与源码分析ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已。Spring提供的内置事件:ContextRefreshedEvent:容器刷新事件ContextStartedEvent:容器启动事件ContextStoppedEvent:容器停止事件ContextClo

    2025年6月30日
    3
  • 连接ftp服务器 JDK 1.7

    连接ftp服务器 JDK 1.7

    2021年6月30日
    103
  • JS隐式转换_隐式转换是什么

    JS隐式转换_隐式转换是什么在什么条件下会触发隐式转换机制?在进行比较运算,或者进行四则运算时,常常会触发JS中的隐式转换机制。首先要记住JS设计者的初衷是美好的,他希望==是美好的操作选择,但是在美好的希望也是希望。小案例为什么[]==false?类型不同比较时,需要先做类型转换,==比较时有布尔值参与时,需要比较双方均转为数字,[]是非原值,需要转换为原值二者才能进行比较,大部分对象转换为…

    2022年10月11日
    5
  • 【Electronics】数字电路实验——交通灯设计

    【Electronics】数字电路实验——交通灯设计数字电路实验——交通灯设计1.内容摘要2.设计任务及要求3.方案比较方案一:方案二:4.单元电路的工作原理4.1单位时间模块4.2二分频信号产生4.3交通灯控制电路模块4.4倒计时数码管显示模块5.拓展部分:手动设置单位时间模块5.1手动设置二、三分频切换模块5.2手动设置数码管倒计时电路相应的切换6.注意事项7.元器件清单8.参考文献1.内容摘要  &nbsp…

    2022年7月12日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号