2011-10-27 20 views
0

他们的专业经历中,他们的瞬间脱离了严格的命名约定结构(如建议的here),或者在其他堆栈溢出问题中讨论的前缀命名约定。表列的命名约定?你怎么做呢?

如图所示更简化的东西。在这个简单的描述狗,人,以及一个人拥有什么类型的狗的关系。关系表使用的列名可以按照可以立即全面地解释其结果操作的方式进行读取。

现在作为着名的编程谚语去“它取决于”。我希望情况如此,但是我希望听到这个领域的专业人士提出这样的建议,即不管项目范围大小如何,都可以获得充分,全面的协议标准。

simple naming convention

+0

投票结束 - 这将煽动宗教战争。在编程世界中没有任何命名的“真正的方法”。每个人都有他们的意见,而其他人都认为其他人都是错的。 –

回答

2

我会在一般的说是一个贫穷的想法。你会有开发人员谁不会轻易理解this_person_id = id_person或owns_dog_type_id = id_dog_type,因此它可以创建一个管理问题,但我不认为这比id_person = id_person和id_dog_type = id_dog_type更容易理解。

什么是SQL反模式,你不应该使用,是每个表中的inital id的ID。它可能会在开发冗长复杂的查询和报告问题时造成错误,并且通常是一个糟糕的主意。这是一个更糟的选择,在数据库允许自然加入,因为你可能最终与ID inteh人表加入到宠物表中的ID

+0

所以当你说包含PK的表应该被标记为简单的“ID”时,你和“鲨鱼”的答案混淆不清。我理解正确吗? – Ealianis

+1

fwiw - 我同意@HLGEM的id唯一列名引入错误的机会。 – Randy

+0

@Ealianis,是的,ID是反模式。 – HLGEM

3
的关系表

,我认为这是一种欠佳强加给通过这些列名的关系的意义。相反,我认为最好包括一个ROLE列来标识项目之间的关系。

例如,角色可能是OWNS,或角色可能是WALKS,或角色可能是GROOMS。此外,还需要包括这些关系的日期。所以通过简单的更改(添加角色和一些日期),此表现在是静态的,并且这些用途是数据驱动的,不受列名称的影响。

这个基本模型几乎可以处理任何关系,因此是一个很好的模式。对于像Semantic Ontologies这样的更新的数据管理习惯用法来说,它也是一个推动性的比喻,你希望ROLE在三元组中扮演一个谓词的角色。

我的2美分:)

+0

+1当两个标识列在不同的表中具有相同的名称时,未来的开发人员很容易知道它们之间是否存在关系。特别是你有很多桌子。所以id_person意味着无处不在的字段,你会发现更容易跳过你不需要的连接。按照您的建议,在连接表中添加角色非常方便。 – HLGEM