什么是" Schema"区别在哪里?

时间:2014-09-25 20:04:19

标签: database oracle

您能否从数据库开发角度或Oracle角度描述术语“架构”的差异。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

在ORACLE中,模式和用户实际上是相同的,即使SQL标准(从1996年)没有要求这样做。 “模式”一词在SQL标准中定义;这可能是ORACLE引用“schema”一词的原因。

但是,ORACLE“CREATE SCHEMA”关键字甚至没有创建模式:我永远不会在ORACLE项目中使用关键字“SCHEMA”。 架构中包含的所有对象都可以在没有关键字“SCHEMA”的情况下创建。

这是ORACLE 12C中“架构”的定义: “命名的数据库对象集合,包括表和索引等逻辑结构。模式具有拥有它的数据库用户的名称。

http://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT89131

上述句子意味着一个模式只能存在于一个用户中(模式不能跨越多个用户)。

以下URL的状态,即用户不能拥有或与多个架构相关联:

https://community.oracle.com/thread/960972?tstart=0

http://searchoracle.techtarget.com/answer/Can-I-create-multiple-schemas-in-Oracle-for-one-user

创建ORACLE用户并创建该用户拥有的对象后,所有对象都被视为一个称为模式的集合。单词“schema”特定于SQL标准,但是ORACLE页面的内容意味着所有模式对象始终包含在用户中。

<小时/>

ORACLE“CREATE SCHEMA”声明具有误导性。我完全不会使用它有两个原因:

  • “CREATE SCHEMA”ORACLE关键字甚至不创建架构, 根据此网址:

    http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6014.htm

  • “CREATE SCHEMA”ORACLE关键字仅支持标准SQL,而不支持    ORACLE数据库中的所有功能。

  • 上述页面还指出在创建用户时会自动创建架构。

    “Oracle数据库会在您创建用户时自动创建架构”

    参考文献:

    http://www.oratable.com/oracle-user-schema-difference/

    http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6014.htm

    SQL标准:

    http://pubs.opengroup.org/onlinepubs/9695959099/toc.pdf