是否有任何已发布的编码风格指南用于重命名 SQL 视图中的列?
Posted
技术标签:
【中文标题】是否有任何已发布的编码风格指南用于重命名 SQL 视图中的列?【英文标题】:Are there any published coding style guidelines for renaming columns in views in SQL? 【发布时间】:2021-10-28 19:21:09 【问题描述】:我正在修改现有代码以创建视图,并且正在寻找一组普遍接受的样式指南,了解如何在组件表列名称冲突时重命名视图中的结果列。
也许你自己写了一个。请分享您的指南。
CREATE OR REPLACE VIEW libraries_metadata AS
SELECT
l.id AS libraries_id
, l.description AS libraries_description
, l.name AS libraries_name
, lg.description AS library_groups_description
, lg.name AS library_groups_name
FROM
libraries l
INNER JOIN library_groups lg ON
l.library_group_id = lg.id
;
注意:我无法在此处快速找到任何指南:Are there any published coding style guidelines for SQL?
【问题讨论】:
不幸的是,这是一个基于意见的问题,应该已经关闭。 【参考方案1】:我看到最常使用的风格是<em><strong>tablename</strong></em>_<em><strong>columnname</strong></em>
,但这完全取决于品味和仲裁,我从未见过有人为此发布风格指南。例如,如果视图名为customer_details
,表为customer_data
,列为id
,很多人可能会选择更少冗余和更短的data_id
。
【讨论】:
谢谢!只是为了确认一下,表libraries
中的 libraries.name
应根据此约定重命名为 libraries_name
,not library_name
。这是正确的吗?
正如我所说,没有约定。使用你最喜欢的任何东西
@TimurShtatland,我以复数形式命名我的表,即libraries
,而不是library
,因为该表包含有关许多库的信息。当我查看列时,我正在查看特定库的属性,因此列名是单数形式,即library_name
。另外,我认为它更接近自然英语。同样,正如您在问题library_group_id
,不是libraries_group_id
,不是library_groups_id
。最后,一致性更重要,所以选择一些风格并在任何地方都遵循它。但是,如果你选择一种尴尬的风格,人们往往不会坚持下去。【参考方案2】:
确实没有这方面的指南,但我会选择这样的东西
CREATE OR REPLACE VIEW libraries_metadata AS
SELECT
l.id AS lib_id
, l.name AS lib_name
, l.description AS lib_desc
, lg.name AS lib_group_name
, lg.description AS lib_group_desc
FROM
libraries l
INNER JOIN library_groups lg ON
l.library_group_id = lg.id
;
我个人对这种非规范化表和视图的偏好是:
避免列名中的空格
保持小写并使用下划线
区别而不是UsingDifferentCases
避免保留(可能保留)关键字。对于,例如我用了
lib_name
而不是上面的name
何时/如果合适使用较短的表/列别名创建列名,以平衡打字速度和易读性
【讨论】:
由于现有的命名约定,请假设使用description
。在这种情况下,使用desc
而不是description
将违背当前代码中(显然存在的)命名约定——可能不如它本来的最佳。但谢谢你的想法!【参考方案3】:
对于现有数据库,在添加一个新表或视图时,使用与数据库中其他对象相同的命名约定。
如果 CustomerId 在其他表中使用并且 CustomerId 在视图中,请尽可能在视图中使用 CustomerId。
【讨论】:
如果列名在表之间发生冲突怎么办?例如,两个表,每个表都有名为id
、name
和 description
的列.具体来说,请参阅原始帖子以获取实际示例。这是问题的本质。您能否在原始帖子中描述的示例中描述命名约定?谢谢。以上是关于是否有任何已发布的编码风格指南用于重命名 SQL 视图中的列?的主要内容,如果未能解决你的问题,请参考以下文章