将PostgreSQL表分组到模式中

4

我正在构建一个包含大约60个表的应用程序,其中一些包含元信息,一些包含实际数据,还有几个表在它们之上查看。

为了保持组织,我正在分别给所有表名称加上前缀meta_view_,但是否值得在同一数据库中将它们放入不同的模式中呢?

  1. 这是常见做法吗?
  2. 不这样做的原因是什么?
  3. 我可以在不同模式之间创建FK约束吗?

附:根据这个答案判断,似乎没有性能惩罚:PostgreSQL: Performance penalty for joining two tables in separate schemas

1个回答

3
你可以按照任何方式使用模式,原则上没有限制。如果您需要向对象组授予某些权限,例如将用户分离在数据库中,则它们尤其有用。您可以将它们视为文件系统中的目录(尽管这种类比有其限制)。
我使用 v_ 前缀表示视图,f_ 前缀表示函数。但基本上只是为了在文本搜索中快速找到这些对象而方便使用 - 如果我修改转储的话。使这些前缀简短,因为您将不得不在余生里为它们输入。多个来自各种语义层的前缀可能需要应用于单个对象。
不会在同一级别混合使用功能前缀(v_view_)和语义前缀(meta_)。而是为元对象创建一个单独的模式,并在所有模式中使用前缀来表示对象类型。
无论选择哪个系统,保持一致!否则,它会带来更多的伤害。

1
我理解的“没有限制”意味着,由于PostgreSQL中的架构仅仅是命名空间,因此外键约束将按预期工作? - ChrisR
1
@ChrisR:你的假设是正确的,跨多个模式的外键不是问题。它们的工作方式就像在同一个模式内一样。 - Erwin Brandstetter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接