`

Database Schema

阅读更多

The meanings of Database Schema:

What's the schema, and how to get it?

 

****************************************************************************

sql语句中有这样一条建立模式的定义 create schema 模式名 authorization 用户名

请问一般在什么情况下建立模式 建立模式有什么意义 是DBA来管理数据库用的吗?

创建一个架构,并且可以在概念上将其看作是包含表、视图和权限定义的对象。
CREATE SCHEMA 提供了在单个语句中创建表、视图以及授予对象权限的方法。如果在创建任何对象或授予任何权限(这些是在 CREATE SCHEMA 语句中指定的)时发生错误,则不会创建任何对象。

创建的对象不必按逻辑顺序出现,但引用其它视图的视图除外。例如,GRANT 语句可以在创建某个对象之前授予该对象的权限,CREATE VIEW 语句也可以出现在创建该视图所引用表的 CREATE TABLE 语句之前。同样,CREATE TABLE 语句中声明的外键可以指向后面指定的表。例外情况是,如果一个视图的选择语句引用另一个视图,则必须在指定引用视图之前指定被引用的视图。

语法
CREATE SCHEMA AUTHORIZATION owner
[ < schema_element > [ ...n ] ]

< schema_element > ::=
{ table_definition | view_definition | grant_statement }

参数
AUTHORIZATION owner

指定架构对象所有者的 ID。此标识符必须是数据库中有效的安全帐户。

table_definition

指定在架构内创建表的 CREATE TABLE 语句。

view_definition

指定在架构内创建视图的 CREATE VIEW 语句。

grant_statement

指定授予用户或用户组权限的 GRANT 语句。

 

************************************************************************

数据库的Schema和User

********************************

 

 schema的翻译不统一,有的翻译成模式,有的翻译成方案,有的翻译成架构或结构。这个词比较抽象,不同的环境下,有不同的解释。时间长了,即明白了。这个词就属于不要翻译成中文的那一类词,翻译后反而不好理解了。

         从数据库理论的角度看:schema是数据库中存储数据的一个逻辑表示,是一系列数据结构和数据对象的集合,既可以是数据库的全局逻辑描述也可是数据库的局部逻辑描述。Oracle的schema是局部逻辑描述。

         在oracle中schema和user是一一对应的,一个schema只能被一个user拥有并且名字相同。user所创建的所有对象都保存在自己的schema中。比如:用户A和用户B都想创建table_1,oracle要求只要在同一个schema中对象名唯一即可,因此是可以创建的,

 

分别为A.table_1和B.table_1。

         我们先来看一下他们的定义:

A schema is a collection of database objects (used by a user.).

Schema objects are the logical structures that directly refer to the database’s data.

A user is a name defined in the database that can connect to and access objects.

Schemas and users help database administrators manage database security.

         从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的schema下看到的许多类似用user名的节点,这些类似user的节点其实就是一个schema,schema里面包含了各种对象如tables, views ,sequences, stored procedures, synonyms, indexes, clusters, and database links。

         一个user一般对应一个schema,该user的schema

 

o-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">名等于user名,并作为该user缺省schema。这也就是我们在企业管理器的schema下看到schema名都为数据库user名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个user的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个user的同时为这个user创建一个与user名同名的schem并作为该用户的缺省 shcema。即schema

 

or-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的个数同user的个数相同,而且schema名字同user名字一一对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

         一个user有一个缺省的schema,其schema名就等于user名,当然一个user还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp

 

nor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">。

         为什么建表后,总是public.table_name,我可不可以将public改为自己想要的?public是你的数据库中的一个schema。它是你建数据库库后默认的schema。你建的表默认会属于public。你可以重命名public,也可以自己建一个schema,把新建的表放在自己新建的schema中。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。

         给大家举个例子,否则,一切枯燥无味!

SQL> Grant dba to scott

SQL> create table test(name char(10));

Table created.

SQL> create table system.test(name char(10));

 

Table created.

SQL> insert into test values('scott');

1 row created.

SQL> insert into system.test values('system');

1 row created.

SQL> commit;

Commit complete.

SQL> conn system/manager

Connected.

SQL> select * from test;

NAME

----------

system

SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名

Session altered.

SQL> select * from test;

NAME

----------

scott

SQL> select owner ,table_name from dba_tables where table_name=upper('test');

OWNER TABLE_NAME

------------------------------ ------------------------------

SCOTT TEST

SYSTEM TEST

         上面这个查询就是我说将schema作为user的别名的依据。实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名.

 

P>

________________________________________________________________________
文章出处:http://www.diybl.com/course/7_databases/database_other/2008623/127704.html

分享到:
评论

相关推荐

    SQL DataBase schema & data Compare

    本文将深入探讨“SQL Database Schema & Data Compare”这一主题,这对于数据库管理员、开发人员以及任何需要确保数据库一致性的人来说至关重要。 首先,我们要理解什么是数据库模式(Schema)。在SQL中,模式是指...

    DataBase Schema For a Cake Shop

    数据库模式是设计数据库结构的关键步骤,它定义了数据如何存储、组织以及它们之间的关系。对于一个蛋糕店的数据库,我们有以下主要实体和关系: ...主键为cID。 2. **restaurants** 表:此表记录蛋糕店的信息,如店ID...

    Database Schema Definition Language-开源

    数据库模式定义语言(Database Schema Definition Language,简称 DBSDL)是一种专为描述数据库结构而设计的语言,它使用XML格式来表达数据库的模式信息。在开源领域,DBSDL为开发者提供了一种标准化的方式来定义和...

    Sqlite数据库文件

    Sqlite数据库报错:database disk image is malformed 按照博文的方法终于解决了我的问题: cmd切换到该目录下然后输入: sqlite3 old.db .dump &gt; newsfeed.sql 和 sqlite3 new.db &lt; newsfeed.sql

    Abstract Database Schema-开源

    **抽象数据库模式(Abstract Database Schema)** 抽象数据库模式是一种独立于特定数据库管理系统的设计方式,它以XML的形式描述了数据库的结构和操作。这种模式的主要优点是提供了与具体数据库实现无关的接口,...

    databaseSchema:史上最low BiHTML项目

    databaseSchema 简介 目的是构造一个JSON文件,文件包含所有的表关系,服务可以获取该JSON文件来自定义自己的构造格式。 支持类型 支持数据库模型 支持枚举类型 字段的类型通过yml配置来维护 创建模型 创建数据库模型...

    西北工业大学软件学院数据库设计试验作业(全)

    数据库设计是计算机科学中的核心课程之一,特别是在软件学院的学习中占据着重要地位。这份“西北工业大学软件学院数据库设计试验作业(全)”包含了多个实验题目,旨在帮助学生深入理解和掌握数据库设计的基本理论与...

    Database System Concepts 6th Edition 2010

    2.2 Database Schema 42 2.3 Keys 45 2.4 Schema Diagrams 46 2.5 Relational Query Languages 47 2.6 Relational Operations 48 2.7 Summary 52 Exercises 53 Bibliographical Notes 55 Chapter 3 Introduction to ...

    Mnesia User's Guide

    session, specify a Mnesia database directory, initialize a database schema, start Mnesia, and create tables. Initial prototyping of record definitions is also discussed. • Build a Mnesia Database ...

    employee的数据库

    数据库的有关题目,想要的下载,不要吝啬2分啊

    QC错误解决方法

    QC错误解决方法,关于QC各种问题的详细解决方法,都可以在这里找到

    HistorianDatabaseSchema数据库结构表.pdf

    Historian Database Schema 数据库结构表 数据库设计 Historian Database Schema 的设计是基于关系型数据库管理系统(RDBMS),使用表格关联来存储和管理数据。该数据库 schema 由多个表格组成,每个表格都有其...

    Database Schema Designer-开源

    数据库架构设计器为存储在 SQL 服务器中的数据库创建/维护架构。 模式以 XML 格式存储。 它支持以下数据库对象:实体(表)、关系、域、视图、索引、触发器和过程。

    数据库系统基础教程ppt

    1 Introduction to Database Systems 1.1 The Evolution of Database Systems 1.1.1 Early Database ... 2.2.8 An Example Database Schema 2.3 Defining a Relation Schema in SQL 2.3.1 Relations in SQL

    Database management tool

    Database management tool is used in Windows to design database schema, etc

    TimesTen In-Memory Database Installation Guide

    - Regularly update the database schema to improve query efficiency. - **Maintenance and Upgrades**: - Schedule regular maintenance activities to keep the system running smoothly. - Plan for ...

    dbhub:database schema and documents hub, aka 数据字典

    DBHub DBHub是一个免费的数据库架构自动发现和轻松注释工具。 DBHub现在可以支持mysql,mongodb等6个数据库,很容易扩展。 DBHub具有一个网页,用于查看带有注释的所有架构,并具有一个用于管理的管理系统。...

    jira-7-9-2-database-schema.pdf

    本文档“jira-7-9-2-database-schema.pdf”所包含的是Jira 7.9.2版本的数据库模式信息,即数据库中各个表的结构、字段类型、索引等信息。这些信息对于二次开发者来说极具价值,因为它们可以准确指导开发者如何在...

Global site tag (gtag.js) - Google Analytics