在模式中对 postgresql 表进行分组

发布于 2024-12-28 14:27:05 字数 449 浏览 2 评论 0原文

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

为了使事情井井有条,我分别在所有表名前加上 meta_view_ 前缀,但是将它们放在同一数据库内的不同架构中是否值得?

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

PS:从这个答案来看似乎没有性能损失: PostgreSQL:连接不同架构中的两个表的性能损失

I'm currently building an app that contains around 60 or so tables, some with meta information, some with actual data and a couple of views on top of them.

To keep things organized I'm prefixing all table name with meta_ or view_ respectively, but might it be worth it to just put them in different schemas inside the same database?

  1. It this common practice?
  2. Any reasons to not do this?
  3. Can I create FK-constraints over different schemas?

PS: There seems to be no performance penalty judging from this answer: PostgreSQL: Performance penalty for joining two tables in separate schemas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

茶色山野 2025-01-04 14:27:05

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

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

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

无论您选择哪种系统,请保持一致!否则弊大于利。

You can use schemas in any way you like. No limitation in principal. They are especially useful if you need to GRANT certain rights to groups of objects, for instance to separate users inside a database. You can largely treat them like directories in a file system (the analogy has its limits, though).

I use v_ prefix for views and f_ prefix for functions. But that is basically just notational convenience to spot those objects quickly in a text search - if I hack the dump for instance. Make such prefixes short, you will have to type them for the rest of your database life. Multiple prefixes from various semantic layers could have to apply to a single object.

I would not mix functional prefixes (v_ or view_) with semantic prefixes (meta_) on the same level. Rather create a separate schema for meta-objects and use prefixes to denote object types throughout all your schemata.

Whichever system you chose, stay consistent! Or it will do more harm than good.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文