在模式中对postgresql表进行分组

时间:2012-01-23 12:48:20

标签: database postgresql database-design foreign-key-relationship

我目前正在构建一个包含大约60个左右的表的应用程序,其中一些包含元信息,一些包含实际数据,另外还包含几个视图。

为了保持井井有条,我将所有表名前缀分别用 meta _ view _ 作为前缀,但是将它们放在同一个不同的模式中可能是值得的数据库?

  1. 这是常见的做法吗?
  2. 有什么理由不这样做?
  3. 我可以在不同的模式上创建FK约束吗?

  4. PS:从这个答案来看似乎没有性能损失:PostgreSQL: Performance penalty for joining two tables in separate schemas

1 个答案:

答案 0 :(得分:3)

您可以以任何您喜欢的方式使用模式。原则上没有限制。如果您需要GRANT对象组的某些权限(例如,用于分隔数据库中的用户),它们尤其有用。您可以在很大程度上将它们视为文件系统中的目录(尽管类比有其局限性)。

我为视图使用v_前缀,为函数使用f_前缀。但这基本上只是在文本搜索中快速发现这些对象的符号方便 - 例如,如果我破解了转储。使这些前缀简短,您必须在数据库生命的其余部分键入它们。来自各种语义层的多个前缀可能必须应用于单个对象。

我会将功能前缀(v_view_)与语义前缀(meta_)混合在同一级别上。而是为元对象创建单独的模式,并使用前缀来表示所有模式中的对象类型。

无论您选择哪种系统,都要保持一致!或者弊大于利。