我目前正在构建一个包含大约60个左右的表的应用程序,其中一些包含元信息,一些包含实际数据,另外还包含几个视图。
为了保持井井有条,我将所有表名前缀分别用 meta _ 或 view _ 作为前缀,但是将它们放在同一个不同的模式中可能是值得的数据库?
PS:从这个答案来看似乎没有性能损失:PostgreSQL: Performance penalty for joining two tables in separate schemas
答案 0 :(得分:3)
您可以以任何您喜欢的方式使用模式。原则上没有限制。如果您需要GRANT
对象组的某些权限(例如,用于分隔数据库中的用户),它们尤其有用。您可以在很大程度上将它们视为文件系统中的目录(尽管类比有其局限性)。
我为视图使用v_
前缀,为函数使用f_
前缀。但这基本上只是在文本搜索中快速发现这些对象的符号方便 - 例如,如果我破解了转储。使这些前缀简短,您必须在数据库生命的其余部分键入它们。来自各种语义层的多个前缀可能必须应用于单个对象。
我会不将功能前缀(v_
或view_
)与语义前缀(meta_
)混合在同一级别上。而是为元对象创建单独的模式,并使用前缀来表示所有模式中的对象类型。
无论您选择哪种系统,都要保持一致!或者弊大于利。