来自数据库系统概念,Silberschatz等人:
4.5.7模式、目录和环境 与早期的file系统一样,早期数据库系统也有一个用于所有关系的名称空间。用户必须进行协调,以确保他们没有试图使用相同的名称为不同的关系。现代数据库系统为提供了一个用于命名关系的三级层次结构。层次结构的顶层由目录组成,每个目录都可以包含架构。关系和视图等SQL对象包含在架构中。(一些数据库实现使用术语“database”来代替目录。) 为了在数据库上执行任何操作,用户(或程序)必须将rst连接到数据库。用户必须提供用户名,通常是验证用户身份的密码。每个用户都有一个默认目录和模式,并且这种组合对用户是唯一的。当用户连接到数据库系统时,将为连接设置默认目录和架构;这对应于当用户登录到操作系统时将当前目录设置为用户的主目录。 为了标识一个唯一的关系,可以使用一个三部分的名称,例如,5.univ schema.course我们可以省略目录组件,在这种情况下,名称的目录部分被认为是连接的默认目录。因此,如果catalog5是默认目录,则可以使用univ schema.course唯一地标识相同的关系。
谢谢。
发布于 2018-01-13 03:46:41
你在第一句中的第一句话是毫无意义的。
像“person”这样的表/关系具有属性/列,如“名称”、“电话”和“电子邮件”。
表在称为架构的命名空间中组合在一起。因此,像“仓库”这样的模式可以有一个名为“person”的表,而另一个模式(如“sales”)也可以有一个名为“person”的表。每个目录都有一个或多个模式,每个模式都带有一个名称,如此处所示的“仓库”和“销售”。
除了名称空间之外,模式通常充当安全边界。据我所知,这是一个实现细节,不是SQL标准所要求的。
“schema”一词也通常以一种不同、更随意和更通用的方式使用,用来描述为满足应用程序的需要而做出的表和列的设计选择。请参见下面IMSoP的第一条评论。偶然意义上的架构可能涉及正式SQL标准意义中的任意数量的目录、架构、表和列。
至于第二条,你的报价解释了这一点。“目录”和“数据库”是同义词。SQL标准正式使用了“目录”一词。
对于# 3,努力实现SQL标准的高级数据库通常支持标准定义的所有级别:集群>目录>模式>表。这包括Postgres和。
H2数据库引擎支持单独的数据库,每个数据库都是带有架构的目录,但不支持集群将目录/数据库组合在一起。
从我有限的MySQL文档搜索中可以看出,MySQL更有限,不支持完整的层次结构。
有关更多信息,请参见以下相关问题:关系数据库中的目录和模式有什么区别?
https://stackoverflow.com/questions/48232448
复制相似问题