Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLAlchemy中数据库名和模式名之间的差异?_Sql_Sqlalchemy - Fatal编程技术网

SQLAlchemy中数据库名和模式名之间的差异?

SQLAlchemy中数据库名和模式名之间的差异?,sql,sqlalchemy,Sql,Sqlalchemy,当连接到数据库中的特定表时,我可能会提供以下信息 Database: protocol://user:pass@host:port/dbname Table: myschema.mytable dbname和myschema之间有什么区别?对我来说,它们的使用似乎是多余的。经过更多的阅读,我相信模式只是划分数据库的方法。这对于管理权限和为类似命名的表提供唯一性都很有用。因此,您可以将一组表、视图、触发器收集到架构中,并在其中设置权限。然后,我可以为该模式设置perms并将其交给用户 此外

当连接到数据库中的特定表时,我可能会提供以下信息

Database: protocol://user:pass@host:port/dbname
Table:    myschema.mytable

dbname
myschema
之间有什么区别?对我来说,它们的使用似乎是多余的。

经过更多的阅读,我相信模式只是划分数据库的方法。这对于管理权限和为类似命名的表提供唯一性都很有用。因此,您可以将一组表、视图、触发器收集到架构中,并在其中设置权限。然后,我可以为该模式设置perms并将其交给用户


此外,我还可以重载表名,但通过模式提供唯一性。我相信这种情况在事务数据库中更为常见,因为用户可能有一个名称类似的表,但每个用户的模式不同。

模式是数据库中的一组数据库对象(表、视图等)
。它是一种在数据库中对对象进行逻辑分区的方法

假设用户具有适当的权限,他们可以通过一个数据库连接访问多个模式中的表。连接表(甚至来自多个模式)也很简单


当对象存储在多个数据库中时,您需要每个数据库都有一个连接来访问这些对象,而连接通常比较困难(您的RDBMS或ORM可能会隐藏其中一些困难)。每个数据库也将有单独的登录。

此定义/使用与使用多个数据库的定义/使用有何不同?