数据库中表和列的命名约定

时间:2009-06-04 20:54:21

标签: database naming-conventions

  

可能重复:
  Database, Table and Column Naming Conventions?

每次新项目启动时,我都在考虑在数据库中命名表和列的约定。您的推荐是哪种情况?为什么?

案例1. column_name
案例2. ColumnName
案例3. Column_Name
案例4. columnName

8 个答案:

答案 0 :(得分:22)

您应该使用案例#1,因为它没有区分大小写的问题。此外,骆驼案件很糟糕。

columnID
columnId
columnIDAlternative
columnIdAlternative
RASCScore
RascScore

column_id
column_id_alternative
rasc_score

此外,单词之间的空格在视觉上比将所有内容组合在一起更令人愉快。绝对值得点击下划线所感受到的痛苦。下划线模拟空格,复合名词和短语在正常的书面语言中有空格。 TheOnlyPeopleToTypeLikeThisMayHaveBeenTheRomans。

答案 1 :(得分:7)

无论你决定选择什么,坚持同样是最重要的,这是一致的。

我更喜欢#2,因为这是非常可读的,并且如前所述,下划线很难看并且很难打字。 #4是第二好的。 #3我最不喜欢,大写和下划线都是矫枉过正。

答案 2 :(得分:5)

我同意#2有两个原因:

  1. 下划线很难打字。
  2. In .Net属性通常以这种方式加载。这使得您的所有命名都匹配 - 这在您使用ORM的情况下非常方便。
  3. 巧合的是,我相信Java开发人员倾向于在他们的课程中使用#4。如果客户端软件是Java,我会将我的答案改为#4。

答案 3 :(得分:3)

我投票赞成“你在上一个项目中使用的那个”在这种情况下的一致性可能比任何特定的意识形态更重要......

答案 4 :(得分:2)

我喜欢案例2,价值观似乎对我更好。无论你选择什么,都要保持一致!

答案 5 :(得分:2)

我使用案例2(ColumnName) - 因为下划线很难输入。

下划线在索引名称,触发器或其他不经常输入的对象中都可以。我将它们从表格,列,视图,存储过程名称中删除,因为这些是经常使用的名称,如果经常使用它,那么达到该下划线可能会减慢速度。

答案 6 :(得分:1)

我将我的表命名与命名我要创建的对象命名完全相同。这适用于现代ORM(对象关系映射器),因为它们通常可以根据您的数据库结构(或其他方式)为您创建对象模型。接受的答案似乎贬低了“键入下划线的痛苦”,但我认真对待。遭受RSI,特别是在我的粉红色,我用来按住Shift和Ctrl键,我尽我所能,以避免不必要的下划线。当然,这个问题的一个很好的答案是将CapsLock键重新映射到Shift键或下划线键。但无论如何,我将这个答案添加到一个老问题中,因为没有人提到使用你的ORM。由于我在.NET中进行大多数编程,因此我的大多数属性都是驼峰式的,所以我也将我的db列命名为camel case。我绝对没有问题骆驼套管缩写。所以我做的事情如下:

PersonDao.GetIdByName(“Hello world”)。

骆驼外壳肯定会让长名称变得烦人......但是,我避免使用长名字。通常这意味着我错误地组织了事情。如果我确定我没有,那么......在这些情况下,长码在我的代码中是如此罕见,而且情况如此独特,无论如何它都不会减慢我的速度。

我认为命名绝对是至关重要的。就像有些人有XML迷信一样,其他人有数据库迷恋。就个人而言,我喜欢使用我的ORM完全忽略我的数据库(或尽可能地)。为了方便起见,我就像在代码中命名属性一样命名我的列。所以,最终,除了讨厌的讨厌,我使用我的代码所存在的语言存在的任何约定。

答案 7 :(得分:0)

我只是喜欢camelCasing(4)很好的可读性,没有下划线