给定一种 OO 语言,其中对象属性的命名约定为驼峰命名法,示例对象如下:
{
id: 667,
firstName: "Vladimir",
lastName: "Horowitz",
canPlayPiano: true
}
我应该如何在 PostgreSQL 表中建模这个结构?选项:
- 不带引号的驼峰式列名
- 带引号的驼峰式列名
- 带下划线的不带引号(小写)的名称
每种都有缺点:
-
不带引号的标识符折叠为小写。您可以创建一个表canPlayPiano
列,但混合大小写永远不会到达数据库。该列将显示为canplaypiano
在 psql、pgAdmin 中,解释结果、错误消息,无处不在。
-
引用的标识符保留其大小写,但是一旦您像这样创建它们,您就会always必须引用它们。如果您创建一个表"canPlayPiano"
柱,一个SELECT canPlayPiano ...
将失败。这会给所有 SQL 语句增加噪音。
-
带下划线的小写名称是明确的,但它们不会映射到应用程序语言正在使用的名称。您必须记住使用不同的名称进行存储(can_play_piano
)和代码(canPlayPiano
)。它还会阻止某些类型的代码自动化,其中属性和数据库列需要命名相同。
无论我做什么,有些部分都会感到尴尬。我一直在使用选项 3,但一直希望有更好的解决方案。大小写折叠和引号的需要来自 SQL 标准(PostgreSQL 对该标准的改编)。我知道它是如何运作的;我对最佳实践更感兴趣,而不是关于 PostgreSQL 如何处理标识符的解释。
如果您的列在PostgreSQL
与underscores
,您可以输入别名,但使用双引号.
例子 :
SELECT my_column as "myColumn" from table;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)