来自数据库系统概念,来自Silberschatz等人:
4.5.7架构,目录和环境
与早期文件系统一样,早期数据库系统也只有一个名称 所有关系的空间。用户必须协调以确保他们这样做 不要试图为不同的关系使用相同的名称。现代的 数据库系统为命名关系提供三级层次结构。 层次结构的顶层包含目录,每个都可以 包含架构。包含关系和视图等SQL对象 在架构内。 (某些数据库实现使用该术语 “数据库”代替术语目录。)
为了对数据库,用户(或程序)执行任何操作 必须首先连接到数据库。用户必须提供用户名 通常是用于验证用户身份的密码。每 用户具有默认目录和架构,并且该组合是唯一的 给用户。当用户连接到数据库系统时,默认 为连接设置了目录和模式;这对应于 当前目录设置为用户的主目录时 用户登录操作系统。
要识别唯一关系,可以使用由三部分组成的名称 例如,catalog5.univ schema.course我们可以省略目录 组件,在这种情况下,名称的目录部分被视为 是连接的默认目录。因此,如果catalog5是 默认目录,我们可以使用univ schema.course来识别相同的内容 关系唯一。
感谢。
答案 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?