Oracle在不同架构上使用相同的表名?

时间:2009-11-06 06:22:01

标签: database oracle schema

是否可以在不同的模式上使用相同的表名,并在一个数据库中的表上使用不同的数据?我认为不是创建多个数据库(具有相同的表名),而是应该创建多个模式。

类似的东西:

Schema 1:
  table A, table B
Schema 2:
  table B, table X

PS: table B hold different data for each schema

最基本的问题是每个架构(用户)都拥有不同的表集吗?在SQL Server和MySQL中,同一个数据库中的每个用户都有相同的表集,区别仅在于角色,Oracle如何?

由于

2 个答案:

答案 0 :(得分:8)

是的,这是可能的。 Oracle中的模式是MySQL用户称之为数据库的模式。

但是,如果与数据库实例连接的用户可以同时访问这两个表,则在访问其中任何一个表时都需要小心。要明确引用特定架构中的表,请使用schema.table

答案 1 :(得分:6)

以下是有关命名空间的文档:http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/sql_elements008.htm#i27561

正如长耳大野兔所说,不同模式中的对象具有不同的名称空间。

  

数据库中的每个模式都有自己的名称空间,用于它包含的对象。这意味着,例如,不同模式中的两个表位于不同的名称空间中,并且可以具有相同的名称。

在架构中,事情要复杂一些。

  

由于表和视图位于同一名称空间中,因此同一模式中的表和视图不能具有相同的名称。但是,表和索引位于不同的名称空间中。因此,同一模式中的表和索引可以具有相同的名称。