数据库schema的简介

【参考】自百度百科

数据库中的Schema,为数据库对象的集合,一个用户一般对应一个schema。

官方定义如下:

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,schema里面包含了各种对象如tables views sequences stored procedures synonyms indexes clusters and database links。

一个用户一般对应一个schema 该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的 方案下看到schema名都为数据库用户名的原因。oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的 方法解决(oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schema并作为该用户的缺省 schema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

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

时间: 2024-11-11 00:01:41

数据库schema的简介的相关文章

Oracle数据库Schema的简介

百度文库中 Schema 的解释: 数据库中的Schema,为数据库对象的集合,一个用户一般对应一个schema. 官方定义如下: 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 da

数据库schema设计与优化

原文地址 1. 前言 对于数据库而言,在日常开发中我们主要的关注点有两块,一个是schema的结构设计,另一个就是索引的优化,这两块是影响我们最终系统结构和性能的关键部分,自然也是我们花费精力最多的部分: 本文主要介绍数据库设计中的一般原则和优化手段,包括数据库的一半范式.反范式设计.数据切分.数据路由与合并等等 2. Schema设计的一般性原则 2.1 概述 范式理论是关系型数据库设计的黄金法则,它提供了数据结构化的理论基础,有效地保证了数据的一致性,应该说,关系型数据库就是在范式的基础上才

数据库 schema与catalog

数据库schema与catalog简介 按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要 用来解决命名冲突问题.从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数 据库对象(表.视图.字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该 数据库对象的完全限定名

复杂和遗留的数据库schema

本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50414652 In this chapter, we focus on the most important part of your system: the databaseschema, where your collection of integrity rules resides-the model of the realworld that you've

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就已经产生了的,后期的优化很多时候所能够带来的改善都只是在解决前妻设计所遗留下来的一些问题而已,而且能够解决的问题通常也比较有限.本章将就如何在 MySQL 数据库 Schema 设计的时候保证尽可能的高效,尽可能减少后期的烦恼. 9.1 高效的模型设计 最规范的就一定

数据库Schema两种含义~~

1.数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构.还有一种是物理上的 Schema,指的是数据库中的一个名字空间,它包含一组表.视图和存储过程等命名对象.物理Schema可以通过标准SQL语句来创建.更新和修改.例 如以下SQL语句创建了两个物理Schema: create schema SCHEMA_A;create table SCHEMA_A.CUSTOMERS(ID int not null,……); create s

C#同步SQL Server数据库Schema

C#同步SQL Server数据库Schema 1. 先写一个sql加工类: using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Text; namespace PinkDatabaseSync { class DBUtility : IDisposable { private string Server; private stri

NewSQL数据库VoltDB特性简介

VoltDB是一个革命性的新型数据库产品,被称作NewSQL数据库.它基于H-Store,号称比当前数据库产品的吞吐量高45倍,同时又具有很高的扩展性.它的特性主要有以下几点: ?  高吞吐.低延迟:通过内存计算,存储过程和串行数据访问实现. ?  可扩展性:自动分区和复制,保证性能和可扩展性. ?  高可用性:同步的多主复制(在VoltDB中叫K-safety). ?  持久化:数据库快照与命令日志(command log)的创新技术组合. 1 高吞吐.低延迟 VoltDB能够提供高吞吐.低延

Perl数据库DBI接口简介【转载】

本文转载自:http://blog.csdn.net/like_zhz/article/details/5441946 ##########################################################################可移植的DBI方法:connect    建立到一个数据库服务器的连接disconnect   断开数据库服务器的连接prepare    准备执行一个SQL语句execute    执行准备好的语句do    准备并执行一个SQL