PostgreSQL 命名约定

Pen*_*rex 7 postgresql naming-convention

也许双重帖子,但我在这里找不到任何答案。

我看到了几篇如何命名我的表的帖子,我明白(半官方)它应该包含小写字母,应该下划线和单数(fe my_table)

当我必须执行以下操作时,我的问题出现了。我有一个应用程序,其中有用户、平台和 user_info,其中平台是用户正在使用的内容(例如 MAC、PC、LINUX)。如果我需要在用户和平台之间创建联结表,我该如何命名它,以便下一个浏览模式的人了解用户和平台有一个名为 user_platform 的联结表,但当他看到表 user_info 时不会感到困惑?

BR

Mor*_*ryx 6

如果小写名称背后的原因不清楚,原因如下:Postgres自动且不可见地将名称向下折叠。因此,所有这些名称都是相同的:

user_platform

USER_PLATFORM

UsEr_PlAtFoRm
Run Code Online (Sandbox Code Playgroud)

内部都是user_platform。除非你把它们放在双引号中:

“用户平台”是“用户平台”。但要使用此字段或表,您需要在使用它的任何地方将名称放在双引号中。这真是太痛苦了。所以,看到这样的名字是很标准的

user_platform
Run Code Online (Sandbox Code Playgroud)

话虽如此,只要不使用双引号,就可以写名称

User_Platform
Run Code Online (Sandbox Code Playgroud)

如果您发现它更容易阅读。

就命名约定而言,是的,选择一个,坚持它并记录你的规则。您可以使用 64 个字符(默认情况下),我没有发现这是什么问题,除了有时索引名称。

对于链接表,任何你喜欢的都可以。连接用户和平台?

user_platform

user_link_platform
Run Code Online (Sandbox Code Playgroud)

无论你喜欢什么。

至于单数与复数的争论,这是一个品味问题。有些人关心。很多。阴沟被不义之人的鲜血染红!我说做你喜欢做的事吧。我属于“表名单数”派,但主要是因为这是我很久以前养成的习惯。

啊,关于双引号的一件事......我确实使用它们。我们将 Postgres 数据发送到名为 Domo 的可视化/分析程序。为此,最好使用混合大小写的列(属性)名称。为此,我使用“MixedCase”列别名创建视图,以便使用“MixedCase”名称导出数据。这是一个有点奇怪的场景,但也许有一天你会遇到类似的情况。通常,我会在客户端更改表,但视图是更简单的解决方案。

奖金提示!如果您还没有发现,Postgres 文本字段区分大小写。如果您不喜欢这样,您可以:

  • 编写查询来盲目处理数据情况。每一个。单身的。询问。
  • 使用标准 citext 扩展名。(不区分大小写的文本。)
  • 等待 PG12 附带不区分大小写的排序规则。(还没试过。)

忘了提及...Postgres 对评论系统元素(包括表格)提供了异常良好的支持:

https://www.postgresql.org/docs/current/sql-comment.html

当然,必须有人寻找并阅读您的评论,但这是您可以提供上下文的另一个地方。即使该上下文只是您维护的 wiki 等的链接。