【发布时间】:2010-12-13 17:37:40
【问题描述】:
是否可以在不同架构上具有相同的表名,而在一个数据库中的表上具有不同的数据?我认为与其创建多个数据库(拥有相同的表名),不如创建多个架构。
类似:
模式 1: 表 A,表 B 模式 2: 表 B,表 X PS:表B为每个模式保存不同的数据最基本的问题是每个模式(用户)都持有不同的表集吗?在 SQL Server 和 MySQL 中,同一数据库上的每个用户都有相同的表集,区别仅在于角色,Oracle 呢?
谢谢
【问题讨论】:
是否可以在不同架构上具有相同的表名,而在一个数据库中的表上具有不同的数据?我认为与其创建多个数据库(拥有相同的表名),不如创建多个架构。
类似:
模式 1: 表 A,表 B 模式 2: 表 B,表 X PS:表B为每个模式保存不同的数据最基本的问题是每个模式(用户)都持有不同的表集吗?在 SQL Server 和 MySQL 中,同一数据库上的每个用户都有相同的表集,区别仅在于角色,Oracle 呢?
谢谢
【问题讨论】:
正如jackrabbit所说,不同架构中的对象具有不同的命名空间。
数据库中的每个模式都有其包含的对象的自己的命名空间。这意味着,例如,不同架构中的两个表位于不同的命名空间中并且可以具有相同的名称。
在架构中,事情会稍微复杂一些。
因为表和视图在同一个命名空间中,所以同一个模式中的表和视图不能具有相同的名称。但是,表和索引位于不同的命名空间中。因此,同一架构中的表和索引可以具有相同的名称。
【讨论】:
是的,这是可能的。 Oracle 中的模式就是 MySQL 用户所称的数据库。
但是,如果您连接到数据库实例的用户可以访问这两个表,那么您现在访问其中一个表时需要小心。要明确引用特定架构中的表,请使用schema.table。
【讨论】: