架构和目录是什么意思?

时间:2018-01-12 18:57:49

标签: database

来自数据库系统概念,来自Silberschatz等人:

  

4.5.7架构,目录和环境

     

与早期文件系统一样,早期数据库系统也只有一个名称   所有关系的空间。用户必须协调以确保他们这样做   不要试图为不同的关系使用相同的名称。现代的   数据库系统为命名关系提供三级层次结构。   层次结构的顶层包含目录,每个都可以   包含架构。包含关系和视图等SQL对象   在架构内。 (某些数据库实现使用该术语   “数据库”代替术语目录。)

     

为了对数据库,用户(或程序)执行任何操作   必须首先连接到数据库。用户必须提供用户名   通常是用于验证用户身份的密码。每   用户具有默认目录架构,并且该组合是唯一的   给用户。当用户连接到数据库系统时,默认   为连接设置了目录和模式;这对应于   当前目录设置为用户的主目录时   用户登录操作系统。

     

要识别唯一关系,可以使用由三部分组成的名称   例如,catalog5.univ schema.course我们可以省略目录   组件,在这种情况下,名称的目录部分被视为   是连接的默认目录。因此,如果catalog5是   默认目录,我们可以使用univ schema.course来识别相同的内容   关系唯一。

  1. 一个关系有一个架构,它是所有的集合 关系的属性。上面引用的“架构”似乎 对应多个关系。是否有“架构” 上面的引用意味着与关系的架构相同吗?
  2. 目录和数据库之间有什么关系?是关系吗? 目录和数据库之间一对一?
  3. 目录和模式在mysql,postgresql或 SQL Server?
  4. 感谢。

1 个答案:

答案 0 :(得分:3)

你在#1中的第一句话毫无意义。

像“person”这样的表/关系具有“name”,“phone”和“email”等属性/列。

表在一个称为模式的名称空间中组合在一起。因此,诸如“仓库”的模式可以具有名为“人”的表,而诸如“销售”的另一模式也可以具有恰好命名为“人”的表。每个目录都有一个或多个模式,每个模式都带有一个名称,例如“仓库”和“销售”。

除了作为名称空间之外,模式通常还起到安全边界的作用。据我所知,这是一个实现细节,不是SQL标准所要求的。

“模式”一词也常用于一种不同的,更随意和一般的方式来描述表格和表格。列设计选择以满足应用程序的需要。请参阅下面的IMSoP的第一条评论。偶然意义上的模式可能涉及正式SQL标准意义上的任意数量的目录,模式,表和列。

至于#2,你的报价解释了这一点。 “目录”和“数据库”是同义词。 “目录”一词由SQL标准正式使用。

对于#3,努力实现SQL标准的高级数据库通常支持标准定义的所有级别:cluster>目录>架构>表。这包括Postgres和Microsoft SQL Server。

H2 Database Engine支持单独的数据库,每个数据库都是带有模式的目录,但没有集群将目录/数据库组合在一起。

MySQL更有限,并且不支持完整的层次结构,从我在MySQL文档的有限搜索中可以看出。

有关详细信息,请参阅此相关问题:What's the difference between a catalog and a schema in a relational database?

相关问题