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可能会隐藏其中一些困难)。每个数据库也将有单独的登录。此定义/使用与使用多个数据库的定义/使用有何不同?