数据库中数据集合的概念区分
一个计算机可以安装多个cluster。
这里的cluster不是指硬件上的多个机器的集合,而是指一个机器(数据库服务器)上多个数据库的集合。因而可以将一个数据库服务器看作一个cluster。
一个cluster有多个catalog。
catalog其实就是我们平常意义上所指的数据库,即许多表数据的集合。
一个catalog有多个schema。
schema即表的命名空间,使得一个数据库中允许重名表的存在,并可以用来当作权限控制的边界。
一个schema里有多个table。
table中记录按行row存放。每条记录的一个值对应表中的列column。
图示如下:
因此,访问一个数据库对象(表为例,当然也可以是其他数据库对象如function、index、trigger、procedure等)时,标准的命名方式是catalog.schema.table。但在客户端连接到数据库服务器时,服务器会要求客户端指定一个数据库(catalog)来连接,所以当访问的数据库对象就在当前数据库时,该命名前面的catalog可以省略不写。
常用数据库中,Postgres是按SQL标准设计实现的这些对象,Sybase、SQL Server、Oracle略有不同,MySQL区别最大,去掉了schema这一层。
在MySQL中
database=schema=catalog。访问一个对象(表),命名为database.table。
具体来说:
In Oracle:
server instance == database == catalog == 数据库引擎管理的所有数据schema == 数据库内的命名空间,每个用户有个唯一的schema。user == schema owner == named account具名账户, identical to schema, 用户可以连接到数据库,能拥有schema,在被授权后也可访问不属于他的schema中的对象。在数据库服务器中唯一标识一个对象,需要 (schema name + object name)
In PostgreSQL:
server instance == db cluster == 数据库引擎管理的所有数据database == catalog == db cluster中的数据schema == 数据库中的命名空间user == 具名账户,可以连接到数据库,可以拥有和使用单个数据库中的对象。在数据库服务器中唯一标识一个对象,需要 (database name + schema name + object name)
In MySQL:
server instance == 数据库的集合database == schema == catalog == server中的命名空间user == 具名账户,可以连接到数据库,可以使用(但不能拥有)多个数据库中的对象在数据库服务器中唯一标识一个对象,需要 (database name + object name)
In Microsoft SQL Server:
server instance == 数据库的集合database == server中的命名空间,catalog这个概念在SQL Server中不被使用schema == owner == 数据库中的命名空间,与数据库owner绑定,默认的schema是dbo(database owner)user == 具名账户,可以连接到数据库,可以使用(但不能拥有,schema拥有)多个数据库中的对象在数据库服务器中唯一标识一个对象,需要 (database name + owner + object name)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:hwclouds.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
- 点赞
- 收藏
- 关注作者
评论(0)