架构、表和数据库之间有什么区别?
-
08-07-2019 - |
题
这可能是一个n00blike(或更糟)的问题。但我一直将模式视为数据库中的表定义。这是错误的或者不完全正确的。我对数据库课程的记忆不多。
解决方案
架构:数据库:表 :: 平面图: house :室
其他提示
关系模式是表的逻辑定义 - 它定义了表的名称,以及每列的名称和类型。这就像一个计划或蓝图。 数据库模式是整个数据库的关系模式的集合。
table 是一个带有一堆行(又名<!> quot; tuples <!> quot;)的结构,每个行都具有由模式定义的属性。表可能还有索引,以帮助查找某些列的值。
数据库正式是任何数据集合。在此上下文中,数据库将是表的集合。 DBMS (数据库管理系统)是管理和运行数据库的软件(如MySQL,SQL Server,Oracle等)。
简而言之,模式是整个数据库的定义,因此它包括表,视图,存储过程,索引,主键和外键等。
此特定帖子已显示仅与Oracle相关,而Schema的定义在另一个DB的上下文中更改。
可能只是google up的东西,但是FYI术语的定义似乎有所不同,这是最烦人的事情:)
在Oracle中,数据库是一个数据库。在你的脑海中将其视为数据文件和重做日志以及数据库本身磁盘上的实际物理存在(即不是实例)
架构实际上是一个用户。更具体地说,它是用户拥有的一组表/过程/索引等。另一个用户具有不同的模式(他/她拥有的表),但是用户也可以看到他们选择了特权的任何模式。因此,数据库可以包含数百个模式,每个模式包含数百个表。您可以在不同的模式中使用具有相同名称的表,这些模式位于同一数据库中。
表是一个表,一组包含数据的行和列,包含在模式中。
例如,SQL Server中的定义可能有所不同。我不知道这个。
有关架构的更多信息:
在SQL 2005中,架构是一种对对象进行分组的方法。它是一个可以放置对象的容器。人们可以拥有这个对象。您可以授予架构权限。
2000年,架构等同于用户。现在它已经破解了,非常有用。您可以将所有用户触发器放在某个模式中,然后将管理员触发到另一个模式中。将EXECUTE授予适当的用户/角色,并在特定过程中授予EXECUTE。尼斯。
点符号将如下所示:
Server.Database.Schema.Object
或
myserver01.Adventureworks.Accounting.Beans
Schema
是数据库对象的集合,其中也包含逻辑结构。
它拥有拥有它的用户的名称。
database
可以有任意数量的Schema。
数据库中的一个表可以出现在两个不同的同名模式中。
用户可以查看已为其分配的任何架构选择权限。
在oracle Schema中是一个用户在一个数据库下,例如scott是数据库orcl中的一个模式。 在一个数据库中,我们可能有许多架构,如scott
正如MusiGenesis在大多数数据库中所做的那样:
schema:database:table :: floor plan:house:room
但是,在Oracle中,可能更容易想到:
schema:database:table :: owner:house:room
与上面的一些答案相反,以下是我根据每个答案的经验的理解:
- MySQL:
database/schema :: table
- SQL服务器:
database :: (schema/namespace ::) table
- 甲骨文:
database/schema/user :: (tablespace ::) table
请纠正我关于 Oracle 中表空间是否可选的问题,我已经很久没有使用它们了。
架构包含数据库。
数据库是Schema的一部分。
所以,架构<!> gt;数据库。
模式包含视图,存储过程,数据库,触发器等。
架构不是整个数据库的计划。它是数据库中对象子集(ex.tables)的计划/容器。
这就是说,您可以在一个数据库中拥有多个对象(例如表格),这些对象不一定属于同一个功能类别。因此,您可以将它们分组到各种模式下,并为它们提供不同的用户访问权限。
那说,我不确定你是否可以在多个模式下有一个表。 Management Studio UI提供了一个下拉列表,可以为表分配模式,从而可以只选择一个模式。我想如果你使用TSQL,它可能会创建2个(或多个)具有不同对象ID的不同对象。
数据库架构是一种逻辑分组对象(如表,视图,存储过程等)的方法。将架构视为对象的容器。 表是行和列的集合。 所有表的组合构成了一个db。