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


当前回答

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

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

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

其他回答

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

SQL关键字:大写 标识符(数据库、表、列等的名称):lower_case_with_下划线

例如:

UPDATE my_table SET name = 5;

This is not written in stone, but the bit about identifiers in lower case is highly recommended, IMO. Postgresql treats identifiers case insensitively when not quoted (it actually folds them to lowercase internally), and case sensitively when quoted; many people are not aware of this idiosyncrasy. Using always lowercase you are safe. Anyway, it's acceptable to use camelCase or PascalCase (or UPPER_CASE), as long as you are consistent: either quote identifiers always or never (and this includes the schema creation!).

我不知道还有更多的惯例或风格指南。代理键通常由序列(通常使用串行宏)生成,如果您手动创建这些序列(tablename_colname_seq),那么对这些序列坚持使用该命名将非常方便。

也可以在这里,这里和(通用SQL)这里看到一些讨论,所有都有几个相关链接。

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

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

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

在实践中,我发现使用lower_case_underscore_separated_identifiers更容易,因为不需要在所有地方都使用“双引号”来保留大小写、空格等。

如果您想将表和函数命名为“@MyAṕṕ!”"betty"" Shard 42美元"你可以自由地这样做,尽管到处打字会很痛苦。

需要了解的主要事情是:

Unless double-quoted, identifiers are case-folded to lower-case, so MyTable, MYTABLE and mytable are all the same thing, but "MYTABLE" and "MyTable" are different; Unless double-quoted: SQL identifiers and key words must begin with a letter (a-z, but also letters with diacritical marks and non-Latin letters) or an underscore (_). Subsequent characters in an identifier or key word can be letters, underscores, digits (0-9), or dollar signs ($). You must double-quote keywords if you wish to use them as identifiers.

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

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

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

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