数据库 catalog 和 schema

Database System Concepts 7th 7.4节学习

一直对 SQLServer 的 dbo. 前缀不是很理解。 而 MySQL 中却可以没有前缀。

参考文件系统,现在文件系统都是树形结构。而现在数据库表也按树形结构组织。

最顶层的是 catalogs (目录,有些数据库叫 database),每一个目录包含多个 schemas,relations (表) 和 views (视图) 都是定义在一个 schema (模式) 中。

用户必须用用户名和密码先连接到数据库,每一个用户都有一个默认的 catalog 和 schema 。(类比 linux 用户主目录)

目录.模式.表名 三部分唯一标识一个 relation
catalog5.univ schema.course

catalog 和 schema 如果省略会取默认值
create schema 和 drop schema 可以创建和删除 schema

多数数据库创建用户的时候会自动创建一个和用户账号同名的一个 schema。 (在默认目录或显示指定的目录)。新创建的 schema 成为该用户的默认 shcema

In the ANSI SQL-92 standard, a schema is defined as a collection of database objects that are owned by a single user and form a single namespace. A namespace is a set of objects that can’t have duplicate names. For example, two tables can have the same name only if they are in separate schemas, so no two tables in the same schema can have the same name. You can think of a schema as a container of objects.

授权

我们可以把对数据增删改查的权限赋予一个用户 , 这些权限叫做 privilege (特权)

权限可以授予用户或者角色,一个用户也可以把自己的权限授予另外一个用户或角色(需要用 with grant 显示设置,否则不能把自己的权限授予他人)。
grant on to ;
revoke on from ;

为什么会有角色???

假设有多个用户都有讲师表的CRUD权限,我们一个用户一个用户的授权是不是太麻烦了。
这时可以定义一个 instructor 角色,把 instructor 表的权限授予 instructor 这个角色, 在把用户和角色关联起来。
create role instructor;
grant select on takes to instructor;

基于角色的授权在应用开发中很常见。

角色可以授予一个用户,也可以授予另外一个角色。
create role dean; // 创建系主任角色
grant instructor to dean; // 讲师角色授予系主任角色
grant dean to Satoshi; // 系主任角色授予 Satoshi

一个用户或角色的权限包括直接授予该用户或角色的权限 加上 该用户或角色所拥有角色的权限。

你可能感兴趣的:(数据库 catalog 和 schema)