4.5.7 模式 目录与环境
要理解模式和目录的形成,需要考虑文件系统中文件是如何命名的。早期的文件系统是平面的,也就是说,所有的文件都存储在同一个目录下。当然,当代的文件系统有一个目录(或者文件夹)结构,文件都存储在子目录下。要单独命名一个文件,我们必须指定文件的完整路径名,例如,/usersavi/db-book/chapter3.tex
。
跟早期文件系统一样,早期数据库系统也只为所有关系提供一个命名空间。用户不得不相互协调以保证他们没有对不同的关系使用同样的名字。当代数据库系统提供了三层结构的关系命名机制。
- 最顶层由目录(
catalog
)构成,一些数据库实现用术语”数据库”代替术语”目录” - 每个目录都可以包含模式(
schema
)。 - 诸如
关系
和视图
那样的SQL
对象都包含在模式中。
要在数据库上做任何操作,用户(或程序)都必须先连接到数据库。为了验证用户身份,用户必须提供用户名以及密码(通常情况下)。每个用户都有一个默认的目录和模式,这个组合对用户来说是唯一的。当一个用户连接到数据库系统时,将为该连接设置好默认的目录和模式。这对应于当用户登录进一个操作系统时,把当前目录设置为用户的主(home
)目录。
关系名字的全称
为了唯一标识出一个关系,必须使用一个名字,它包含三部分,例如:catalog5.univ_shema.course
默认目录中的关系可以省略目录名
当名字的目录部分被认为是连接的默认目录时,可以省略目录部分。这样如果catalog5
是默认目录,我们可以用univ_shema.course
来唯一标识上述关系。
访问其他非默认模式中的关系必须指定模式名
如果用户想访问存在于另外的模式中的关系,而不是该用户的默认模式,那就必须指定模式的名字。
默认模式中的关系也省略模式名
然而,如果一个关系存在于特定用户的默认模式中,那么连模式的名字也可以省略。这样,如果catalog5
是默认目录并且univ_schema
是默认模式,我们可以只用course
。
使用目录和模式可以解决命名冲突
当有多个目录和模式可用时,不同应用和不同用户可以独立工作而不必担心命名冲突。不仅如此,一个应用的多个版本(一个产品版本,其他是测试版本)可以在同一个数据库系统上运行。
SQL
环境
- 默认目录和默认模式是为每个连接建立的
SQL
环境(SQL environment
)的一部分。 - 除了默认目录和默认模式,
SQL
环境还包括用户标识
(也称为授权标识符)。 - 所有通常的
SQL
语句,包括DDL
和DML
语句,都在一个模式的环境中运行。
如何创建和删除模式
我们可以用create schema
和drop schema
语句来创建和删除模式。
- 在大多数数据库系统中,模式还随着用户账户的创建而
自动创建
,此时模式名被置为用户账号名
。 - 模式要么建立在默认目录中,要么建立在创建用户账户时所指定的目录中。
- 新创建的模式成为用户账户的
默认模式
。
创建和删除目录依据实现的不同而不同,这不是SQL
标准中的一部分。
原文链接: 4.5.7 模式 目录与环境