PostgreSQL命名约定

我在哪里可以找到关于PostgreSQL命名约定的详细手册?(表名vs.驼峰大小写,序列,主键,约束,索引,等等…)

184073 次浏览

关于表名,大小写等,普遍的约定是:

  • SQL关键字:UPPER CASE
  • 标识符(数据库、表、列等的名称):lower_case_with_underscores

例如:

UPDATE my_table SET name = 5;

这并不是板上钉钉的,但在我看来,强烈推荐关于小写标识符的部分。Postgresql对不带引号的标识符不区分大小写(实际上在内部将它们折叠成小写),带引号的标识符则区分大小写;很多人都没有意识到这种特质。使用小写字母,你是安全的。无论如何,使用camelCasePascalCase(或UPPER_CASE)是可以接受的,只要你是一致的:总是或从不引用标识符(这包括模式创建!)。

我不知道还有更多的惯例或风格指南。代理键通常由序列(通常使用serial宏)创建,如果手工创建这些序列(tablename_colname_seq),则可以方便地使用该命名。

另见一些讨论在这里在这里和(通用SQL) 在这里,都有几个相关链接。

注意:Postgresql 10引入了identity列作为串行的sql兼容的替代品。

没有真正的正式手册,因为没有单一的风格或标准。

只要你理解标识符命名规则,你就可以使用任何你喜欢的东西。

在实践中,我发现使用lower_case_underscore_separated_identifiers更容易,因为没有必要在所有地方"Double Quote"它们来保留大小写、空格等。

如果你想给你的表和函数命名为"@MyAṕṕ! ""betty"" Shard$42",你可以自由地这样做,尽管到处输入会很痛苦。

需要了解的主要事情是:

  • 除非双引号,否则标识符是折叠成小写的,因此MyTableMYTABLEmytable都是同一个东西,但"MYTABLE""MyTable"是不同的;

  • < p >除非双引号:

    SQL标识符和关键字必须以字母(a-z,也可以是带有变音符标记的字母和非拉丁字母)或下划线(_)开头。标识符或关键字后面的字符可以是字母、下划线、数字(0-9)或美元符号($)。

    李< /引用> < / >
  • 如果希望将关键字用作标识符,则必须使用双引号。

在实践中,我强烈建议你使用作为标识符。至少要避免含蓄的话。仅仅因为你可以命名一个表"with"并不意味着你应该这样做。

这里只有两个答案是6年idk,如果snake_case是最好的情况。以下是我对现代社会的看法。此外,放弃任何额外的复杂性,需要双引号。我认为心流比试图避免一个小不便更重要。

由于没有严格的指导方针/风格指南,我认为最好使用与项目代码相同的情况。例如,在JavaScript等语言中使用面向对象方法,表名将使用PascalCase,而属性将使用骆驼case。如果你采用函数方法,它们都是驼峰式的。此外,按照惯例,JS的类是PascalCase,属性是camelCase,所以这是有意义的。

另一方面,如果您使用SqlAlchemy在Python中编码,那么只对函数派生模型使用snake_case名称,对类派生模型使用PascalCase名称是有意义的。在这两种情况下,属性/列都应该是snake_case。