数据库表命名空间是否存在?

Ste*_*ini 5 database

我总是想知道我使用的所有关系数据库的一个相关(对我来说)但不存在的特性:命名空间表的不可能性.

例如,在MySQL中,您可以使用数据库名称完全限定表,例如dbname.tablename,数据库充当"前缀"或"命名空间".但是,此功能在此处停止,并且不会带您走得太远.命名空间支持会授予您使用类似语法的可能性dbname.namespace.table.您可以将相关表分组到不同的名称空间中,例如(对于博客)

db.userdata.logininfo
db.userdata.preferences
db.postdata.content
db.postdata.acls
Run Code Online (Sandbox Code Playgroud)

要么

db.blog.whatever
db.wiki.whatever
db.common.auth
Run Code Online (Sandbox Code Playgroud)

这将允许保持在同一数据库内(利用此类设置的所有优点),同时授予更灵活和自我记录的环境.但是,大多数情况下,我发现表名中的下划线用于实现此目的,作为一种明显的解决方法.

我的问题是:存在具有此类功能的DBMS(可能具有不同的名称)?在数据库设计实践中被认为不足以获得支持吗?

dev*_*vio 0

MS SQL Server (2005+) 具有可以解释为命名空间的架构(请参阅 AdventureWorks 示例)。

在 Oracle 中,表始终由用户拥有,但可以将表访问权限授予其他用户,因此您可以实现类似的功能。

您还可以使用带引号的标识符(MS []、Oracle“”)来使用“namespace.name”命名模式。