fbpx
维基百科

綱要 (資料庫)

架构(英語:Schema,又称模式),台湾翻译为纲要,在数据库系统中是形式语言描述的一种结构,是对象的集合,[1]可包含各种对象如:字段关系模型视图索引存储过程子程序队列触发器数据类型序列物化视图英语materialized view同义词(synonym)、database link、directoryXML schema等。[2][3]

模式的益处:

  • 允许多个用户使用一个数据库而不会干扰其它用户。
  • 把数据库对象组织成逻辑组,让它们更便于管理。
  • 第三方的应用可以放在不同的模式中,不会和其它对象的名字冲突。

Oracle数据库实现 编辑

Oracle数据库中,schema object是一类逻辑数据库存储结构英语Database storage structures[4]

Oracle的數據庫會為每個在數據庫的用戶關聯一個獨立的schema。[5]

schema包括有一堆schema objects的集合。schema objects的例子包括有:

與此同時,非schema objects可能包括[6]

  • users
  • roles
  • contexts
  • directory objects

Schema objects跟磁碟上用來儲存資料的物理檔案並沒有一對一的關連。不過,Oracle数据库會將schema objects以虛擬的邏輯形式儲存在數據庫的表空间裡。每一件schema object的數據在物理上如同其他表空間的內容一樣,儲存在表空間所屬的其中一個datafile英语datafile裡。部分objects(例如:表、索引、叢集等)所佔的空間,数据库管理员可控制Oracle的RDBMS可如何在表空間的datafile內如何分配與schema object。

schemas與表空間之間沒有必然的關係:表空間可以包含來自不同schema的objects,並且單個schema的object可以位於不同的表空間中。

SQL Server数据库实现 编辑

SQL Server数据库把schema译作“架构”。架构是数据库中对象的容器。架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。默认架构DBO。访问默认架构中的对象时,不需要指定架构的名称。微软建议使用两段式对象名称:

 架構名.對象名 

创建架构的语句举例:

 CREATE SCHEMA mySchema AUTHORIZATION user1 CREATE TABLE myTable1(source int, cost int, partnumber int) GRANT SELECT TO user2 Deny SELECT TO AnotherUser3; 

上述语句创建一个架构mySchema,所有者为user1,包含表myTable1,授予user2以SELECT权限,拒绝给AnotherUser3以SELECT权限。

授予/撤销用户对架构的所有权:

GRANT INSERT ON SCHEMA ::mySchema1 To myUser2; REVOKE INSERT ON SCHEMA ::mySchema1 To myUser2; 

把对象从一个架构移动到另一个架构(必须同个数据库):

ALTER SCHEMA mySchema2 TRANSFER mySchema1.myTable1; 

删除一个架构,该架构不能包含对象:

DROP SCHEMA mySchema3; 

历史 编辑

在 SQL Server 2000 中,数据库用户和架构是隐式同一。每个数据库用户都是与该用户同名的架构的所有者。对象的所有者在功能上与包含它的架构所有者相同。因而,SQL Server 2000 中的完全限定名称的“架构”也是数据库中的用户。

SQL Server 2005 中,架构独立于创建它们的数据库用户而存在。多个用户可以共享一个默认架构进行统一的名称解析。 删除数据库用户不需要重命名该用户架构所包含的对象。完全限定的对象名称现在包含四部分:server.database.schema.object。如果未定义DEFAULT_SCHEMA 选项设置和更改默认架构,则数据库用户将把 DBO 作为其默认架构。

MySQL数据库实现 编辑

MySQL 中 Schema 等价于 数据库。[7]

CREATE SCHEMA是CREATE DATABASE的同义词。

PostgreSQL数据库实现 编辑

PostgreSQL数据库集群可以有一个或多个命名的数据库。用户和用户组在整个集群的范围内是共享的,即不能有同名用户。任何给定的客户连接(connection)都只能访问一个数据库。

一个数据库包含一个或多个命名的模式, 模式包含其它命名的对象,如表、数据类型、函数、操作符等。在不同的模式里使用同名的对象不会导致冲突。例如,schema1 和 schemaA 都可以包含叫做 mytable 的表。一个用户可以访问所连接的数据库中的任意模式中的对象,只要有这个权限。

Apache Derby数据库实现 编辑

Apache Derby数据库(即Java DB)的任何connection的当前schema,默认是对应于该用户名的一个schema。如果无用户名被提供,那么当前用户名与当前schema缺省是APP。

但即使当前schema被设置为用户名,这个schema仍然可能不存在。一个schema只能被创建:通过CREATE SCHEMA语句显式创建或者创建一个对象(例如表等)来隐式创建。

APP schema总是存在,不需要创建。

如果你的程序试图访问当前schema但该schema下没有创建任何对象,就会遇到“schema not exists”错误。[8]

SQL实现 编辑

ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors)。

创建一个schema:

create schema demo_schema; 

在指定模式里创建表:

CREATE TABLE myschema.mytable ( ... ); 

删除一个空的schema:

drop schema myschema; 

删除一个模式以及模式里面所有的对象:

drop schema MySchema CASCADE; 

默认的pulic schema:创建表时,如果没有指定schema,则会自动被归属到数据库的“public”的模式中。下面两种创建表的方式是等效的:

CREATE TABLE tableName(...); CREATE TABLE public.tableName(...); 

模式的权限 编辑

用户默认是看不到模式中不属于他们所有的对象。

模式权限:

  • USAGE 权限
  • CREATE 权限:在别人的模式里创建对象。缺省时,每个用户在 public 模式上有 CREATE 权限。撤销这个权限:REVOKE CREATE ON public FROM PUBLIC; (第一个 "public" 是模式,第二个 "public" 意思是"所有用户"。 第一句里它是个标识符,而第二句里是个关键字,所以有不同的大小写)

模式搜索路径 编辑

系统使用一个模式的列表作为搜索路径来解析一个表属于哪个模式。搜索路径中的第一个模式是当前模式;CREATE TABLE 没有声明模式名的时候,新建的表属于当前模式。

查看搜索路径:

SHOW search_path; 'PostgreSQL数据库 

设置搜索路径

SET search_path TO myschema,public; 'PostgreSQL数据库 

参考文献 编辑

  1. ^ Pottinger, P.; Berstein, P. Schema merging and mapping creation for relational sources. New York, NY: ACM. 2008: 73–84. CiteSeerX 10.1.1.405.2990 . ISBN 9781595939265. doi:10.1145/1353343.1353357.  |journal=被忽略 (帮助)
  2. ^ Rybinski, H. On First-Order-Logic Databases. ACM Transactions on Database Systems. 1987, 12 (3): 325–349. doi:10.1145/27629.27630. 
  3. ^ Imielinski, T.; Lipski, W. A systematic approach to relational database theory. New York, NY: ACM. 1982: 8–14. ISBN 978-0897910736. doi:10.1145/582353.582356.  |journal=被忽略 (帮助)
  4. ^ Ashdown, Lance; Kyte, Tom. . et al. Oracle Corporation. 2010-02 [2010-04-14]. (原始内容存档于2010-01-29). A database schema is a logical container for data structures, called schema objects. Examples of schema objects are tables and indexes. 
  5. ^ Oracle Database Concepts 10g Release 2 (10.2)Part Number B14220-02. [2012-11-26]. (原始内容于2019-05-07). 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. Schema objects can be created and manipulated with SQL.(schema是数据或模式对象的逻辑结构的集合,由数据库用户拥有,并且与该用户具有相同的名称,也就是说每个用户拥有一个独立的schema。) 
  6. ^ Ashdown, Lance; Kyte, Tom. . et al. Oracle Corporation. February 2010 [2010-04-14]. (原始内容存档于2010-01-29). Other types of objects are also stored in the database and can be created and manipulated with SQL statements but are not contained in a schema. These objects include database users, roles, contexts, and directory objects. 
  7. ^ 《MySQL 5.7 Reference Manual》,“MySQL Glossary”: 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.. [2018-08-03]. (原始内容于2021-04-13). 
  8. ^ [[Apache Derby]]数据库(即[[Java DB]]) Frequently Asked Questions 5.3. Why do I get the error 'schema does not exist'?. [2018-08-03]. (原始内容于2020-08-25). 

參看 编辑

  • 数据元
  • 數據映射英语Data mapping
  • 數據庫設計英语Database design
  • ER模型
  • 知识表示
  • Object-role modeling英语Object-role modeling
  • Schema matching英语Schema matching
  • Three-schema approach英语Three-schema approach

外部链接 编辑

  • Tip/Trick: Online Database Schema Samples Library (页面存档备份,存于互联网档案馆

綱要, 資料庫, 此條目可参照英語維基百科相應條目来扩充, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, translated, page, 标签, 架构, 英語, schema, 又称模式, 台湾翻译为纲要, 在数据库系统中是形式语. 此條目可参照英語維基百科相應條目来扩充 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 架构 英語 Schema 又称模式 台湾翻译为纲要 在数据库系统中是形式语言描述的一种结构 是对象的集合 1 可包含各种对象如 表 字段 关系模型 视图 索引 包 存储过程 子程序 队列 触发器 数据类型 序列 物化视图 英语 materialized view 同义词 synonym database link directory XML schema等 2 3 模式的益处 允许多个用户使用一个数据库而不会干扰其它用户 把数据库对象组织成逻辑组 让它们更便于管理 第三方的应用可以放在不同的模式中 不会和其它对象的名字冲突 目录 1 Oracle数据库实现 2 SQL Server数据库实现 2 1 历史 3 MySQL数据库实现 4 PostgreSQL数据库实现 5 Apache Derby数据库实现 6 SQL实现 6 1 模式的权限 6 2 模式搜索路径 7 参考文献 8 參看 9 外部链接Oracle数据库实现 编辑在Oracle数据库中 schema object是一类逻辑数据库存储结构 英语 Database storage structures 4 Oracle的數據庫會為每個在數據庫的用戶關聯一個獨立的schema 5 schema包括有一堆schema objects的集合 schema objects的例子包括有 数据库表 视图 序列 異名 英语 Synonym database 数据库索引 數據庫叢集 數據庫連結 快照 存储程序 functions packages與此同時 非schema objects可能包括 6 users roles contexts directory objectsSchema objects跟磁碟上用來儲存資料的物理檔案並沒有一對一的關連 不過 Oracle数据库會將schema objects以虛擬的邏輯形式儲存在數據庫的表空间裡 每一件schema object的數據在物理上如同其他表空間的內容一樣 儲存在表空間所屬的其中一個datafile 英语 datafile 裡 部分objects 例如 表 索引 叢集等 所佔的空間 数据库管理员可控制Oracle的RDBMS可如何在表空間的datafile內如何分配與schema object schemas與表空間之間沒有必然的關係 表空間可以包含來自不同schema的objects 並且單個schema的object可以位於不同的表空間中 SQL Server数据库实现 编辑SQL Server数据库把schema译作 架构 架构是数据库中对象的容器 架构是形成单个命名空间的数据库实体的集合 命名空间是一个集合 其中每个元素的名称都是唯一的 默认架构DBO 访问默认架构中的对象时 不需要指定架构的名称 微软建议使用两段式对象名称 架構名 對象名 创建架构的语句举例 CREATE SCHEMA mySchema AUTHORIZATION user1 CREATE TABLE myTable1 source int cost int partnumber int GRANT SELECT TO user2 Deny SELECT TO AnotherUser3 上述语句创建一个架构mySchema 所有者为user1 包含表myTable1 授予user2以SELECT权限 拒绝给AnotherUser3以SELECT权限 授予 撤销用户对架构的所有权 GRANT INSERT ON SCHEMA mySchema1 To myUser2 REVOKE INSERT ON SCHEMA mySchema1 To myUser2 把对象从一个架构移动到另一个架构 必须同个数据库 ALTER SCHEMA mySchema2 TRANSFER mySchema1 myTable1 删除一个架构 该架构不能包含对象 DROP SCHEMA mySchema3 历史 编辑 在 SQL Server 2000 中 数据库用户和架构是隐式同一 每个数据库用户都是与该用户同名的架构的所有者 对象的所有者在功能上与包含它的架构所有者相同 因而 SQL Server 2000 中的完全限定名称的 架构 也是数据库中的用户 SQL Server 2005 中 架构独立于创建它们的数据库用户而存在 多个用户可以共享一个默认架构进行统一的名称解析 删除数据库用户不需要重命名该用户架构所包含的对象 完全限定的对象名称现在包含四部分 server database schema object 如果未定义DEFAULT SCHEMA 选项设置和更改默认架构 则数据库用户将把 DBO 作为其默认架构 MySQL数据库实现 编辑MySQL 中 Schema 等价于 数据库 7 CREATE SCHEMA是CREATE DATABASE的同义词 PostgreSQL数据库实现 编辑PostgreSQL数据库集群可以有一个或多个命名的数据库 用户和用户组在整个集群的范围内是共享的 即不能有同名用户 任何给定的客户连接 connection 都只能访问一个数据库 一个数据库包含一个或多个命名的模式 模式包含其它命名的对象 如表 数据类型 函数 操作符等 在不同的模式里使用同名的对象不会导致冲突 例如 schema1 和 schemaA 都可以包含叫做 mytable 的表 一个用户可以访问所连接的数据库中的任意模式中的对象 只要有这个权限 Apache Derby数据库实现 编辑Apache Derby数据库 即Java DB 的任何connection的当前schema 默认是对应于该用户名的一个schema 如果无用户名被提供 那么当前用户名与当前schema缺省是APP 但即使当前schema被设置为用户名 这个schema仍然可能不存在 一个schema只能被创建 通过CREATE SCHEMA语句显式创建或者创建一个对象 例如表等 来隐式创建 APP schema总是存在 不需要创建 如果你的程序试图访问当前schema但该schema下没有创建任何对象 就会遇到 schema not exists 错误 8 SQL实现 编辑ISO IEC 9075 1 SQL标准中将schema定义为描述符的持久命名集合 a persistent named collection of descriptors 创建一个schema create schema demo schema 在指定模式里创建表 CREATE TABLE myschema mytable 删除一个空的schema drop schema myschema 删除一个模式以及模式里面所有的对象 drop schema MySchema CASCADE 默认的pulic schema 创建表时 如果没有指定schema 则会自动被归属到数据库的 public 的模式中 下面两种创建表的方式是等效的 CREATE TABLE tableName CREATE TABLE public tableName 模式的权限 编辑 用户默认是看不到模式中不属于他们所有的对象 模式权限 USAGE 权限 CREATE 权限 在别人的模式里创建对象 缺省时 每个用户在 public 模式上有 CREATE 权限 撤销这个权限 REVOKE CREATE ON public FROM PUBLIC 第一个 public 是模式 第二个 public 意思是 所有用户 第一句里它是个标识符 而第二句里是个关键字 所以有不同的大小写 模式搜索路径 编辑 系统使用一个模式的列表作为搜索路径来解析一个表属于哪个模式 搜索路径中的第一个模式是当前模式 CREATE TABLE 没有声明模式名的时候 新建的表属于当前模式 查看搜索路径 SHOW search path PostgreSQL数据库 设置搜索路径 SET search path TO myschema public PostgreSQL数据库参考文献 编辑 Pottinger P Berstein P Schema merging and mapping creation for relational sources New York NY ACM 2008 73 84 CiteSeerX 10 1 1 405 2990 nbsp ISBN 9781595939265 doi 10 1145 1353343 1353357 journal 被忽略 帮助 Rybinski H On First Order Logic Databases ACM Transactions on Database Systems 1987 12 3 325 349 doi 10 1145 27629 27630 Imielinski T Lipski W A systematic approach to relational database theory New York NY ACM 1982 8 14 ISBN 978 0897910736 doi 10 1145 582353 582356 journal 被忽略 帮助 Ashdown Lance Kyte Tom Oracle Database Concepts 11g Release 2 11 2 et al Oracle Corporation 2010 02 2010 04 14 原始内容存档于2010 01 29 A database schema is a logical container for data structures called schema objects Examples of schema objects are tables and indexes Oracle Database Concepts 10g Release 2 10 2 Part Number B14220 02 2012 11 26 原始内容存档于2019 05 07 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 Schema objects can be created and manipulated with SQL schema是数据或模式对象的逻辑结构的集合 由数据库用户拥有 并且与该用户具有相同的名称 也就是说每个用户拥有一个独立的schema Ashdown Lance Kyte Tom Oracle Database Concepts 11g Release 2 11 2 et al Oracle Corporation February 2010 2010 04 14 原始内容存档于2010 01 29 Other types of objects are also stored in the database and can be created and manipulated with SQL statements but are not contained in a schema These objects include database users roles contexts and directory objects MySQL 5 7 Reference Manual MySQL Glossary 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 2018 08 03 原始内容存档于2021 04 13 Apache Derby 数据库 即 Java DB Frequently Asked Questions 5 3 Why do I get the error schema does not exist 2018 08 03 原始内容存档于2020 08 25 參看 编辑数据元 數據映射 英语 Data mapping 數據庫設計 英语 Database design ER模型 知识表示 Object role modeling 英语 Object role modeling Schema matching 英语 Schema matching Three schema approach 英语 Three schema approach 外部链接 编辑Tip Trick Online Database Schema Samples Library 页面存档备份 存于互联网档案馆 Database Schema Samples Designing the Star Schema Database 取自 https zh wikipedia org w index php title 綱要 資料庫 amp oldid 78973181, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。