连接到数据库中的特定表时,我可能会提供以下信息
Database: protocol://user:pass@host:port/dbname
Table: myschema.mytable
dbname
和myschema
之间有什么区别?它们的使用对我来说似乎是多余的。
答案 0 :(得分:7)
模式是一组数据库对象(表,视图等)within
数据库。它是一种逻辑分区数据库中对象的方法。
假设用户具有适当的权限,他们可以使用一个数据库连接访问多个模式中的表。连接表(甚至来自多个模式)也是微不足道的。
当对象存储在多个数据库中时,每个数据库都需要连接才能访问这些对象,并且连接通常更加困难(您的RDBMS或ORM可能会隐藏其中的一些困难)。每个数据库也都有单独的登录。
答案 1 :(得分:1)
经过多一点阅读后,我相信模式只是方法或分区数据库。这对于管理权限和为类似命名的表提供唯一性都很有用。因此可以收集一组表,视图,触发器,进入模式并在那里设置权限。然后,我可以为该架构设置perms并将其交给用户。
此外,我还可以重载表名,但通过模式提供唯一性。我相信这种情况更常发生在事务数据库中,用户可能拥有类似命名的表,但每个用户的模式不同。