我在哪里可以找到关于PostgreSQL命名约定的详细手册?(表名vs.驼峰大小写,序列,主键,约束,索引,等等…)
关于表名,大小写等,普遍的约定是:
UPPER CASE
lower_case_with_underscores
例如:
UPDATE my_table SET name = 5;
这并不是板上钉钉的,但在我看来,强烈推荐关于小写标识符的部分。Postgresql对不带引号的标识符不区分大小写(实际上在内部将它们折叠成小写),带引号的标识符则区分大小写;很多人都没有意识到这种特质。使用小写字母,你是安全的。无论如何,使用camelCase或PascalCase(或UPPER_CASE)是可以接受的,只要你是一致的:总是或从不引用标识符(这包括模式创建!)。
camelCase
PascalCase
UPPER_CASE
我不知道还有更多的惯例或风格指南。代理键通常由序列(通常使用serial宏)创建,如果手工创建这些序列(tablename_colname_seq),则可以方便地使用该命名。
serial
tablename_colname_seq
另见一些讨论在这里, 在这里和(通用SQL) 在这里,都有几个相关链接。
注意:Postgresql 10引入了identity列作为串行的sql兼容的替代品。
identity
没有真正的正式手册,因为没有单一的风格或标准。
只要你理解标识符命名规则,你就可以使用任何你喜欢的东西。
在实践中,我发现使用lower_case_underscore_separated_identifiers更容易,因为没有必要在所有地方"Double Quote"它们来保留大小写、空格等。
lower_case_underscore_separated_identifiers
"Double Quote"
如果你想给你的表和函数命名为"@MyAṕṕ! ""betty"" Shard$42",你可以自由地这样做,尽管到处输入会很痛苦。
"@MyAṕṕ! ""betty"" Shard$42"
需要了解的主要事情是:
除非双引号,否则标识符是折叠成小写的,因此MyTable, MYTABLE和mytable都是同一个东西,但"MYTABLE"和"MyTable"是不同的;
MyTable
MYTABLE
mytable
"MYTABLE"
"MyTable"
SQL标识符和关键字必须以字母(a-z,也可以是带有变音符标记的字母和非拉丁字母)或下划线(_)开头。标识符或关键字后面的字符可以是字母、下划线、数字(0-9)或美元符号($)。 李< /引用> < / > 如果希望将关键字用作标识符,则必须使用双引号。
SQL标识符和关键字必须以字母(a-z,也可以是带有变音符标记的字母和非拉丁字母)或下划线(_)开头。标识符或关键字后面的字符可以是字母、下划线、数字(0-9)或美元符号($)。
如果希望将关键字用作标识符,则必须使用双引号。
在实践中,我强烈建议你使用不作为标识符。至少要避免含蓄的话。仅仅因为你可以命名一个表"with"并不意味着你应该这样做。
"with"
这里只有两个答案是6年idk,如果snake_case是最好的情况。以下是我对现代社会的看法。此外,放弃任何额外的复杂性,需要双引号。我认为心流比试图避免一个小不便更重要。
由于没有严格的指导方针/风格指南,我认为最好使用与项目代码相同的情况。例如,在JavaScript等语言中使用面向对象方法,表名将使用PascalCase,而属性将使用骆驼case。如果你采用函数方法,它们都是驼峰式的。此外,按照惯例,JS的类是PascalCase,属性是camelCase,所以这是有意义的。
另一方面,如果您使用SqlAlchemy在Python中编码,那么只对函数派生模型使用snake_case名称,对类派生模型使用PascalCase名称是有意义的。在这两种情况下,属性/列都应该是snake_case。