tbl_Product,tbl_Order命名约定的目的是什么?

时间:2009-08-22 16:01:36

标签: sql naming-conventions

我已经看到tbl_前缀装饰了我使用的最后两个代码库中的所有表。我想不出它们对应用程序开发人员或数据库管理员有用的任何原因。

如果DBA需要查看哪些对象是表,那么他们总是可以加入DMV或者主控权限中的模式表?我无法想到它们对程序员的用处如何,如果项目使用ORM工具则更是如此。

即使在编写存储过程时,它们似乎也会妨碍它。

有人可以用非主观的方式解释它们是如何有用的吗? Ex(有tbl_帮我执行x任务)

5 个答案:

答案 0 :(得分:5)

我一遍又一遍地听到同样的事情,这有助于他们知道对象的类型。

在查询中,使用前缀可以帮助他们将表与视图分开

我真的不同意这一点。在习惯了数据库模式之后,前缀变得多余,并且就像冗余的所有内容一样,它可能会变得不同步或使更改变得更难。

假设您有一张表,无论出于何种原因您必须分成两个表。 假设您决定创建一个模拟原始表的视图,从两个新表中选择数据。

您是要在整个代码库中重命名,还是要坚持使用前缀为tbl _的视图?

所以我的观点是数据库对象名称有任何前缀用于推断其类型。

答案 1 :(得分:3)

我想不出很多好处。你绝对可以看到像这样的更清晰的SQL:

select post.id, post.subject, post.body from tbl_post post where post.author="eric"

使您的变量更容易。否则,这看起来就像是在处理在MS Access上学习数据库的人。

答案 2 :(得分:3)

这是hungarian notation,或者更确切地说是误用它。最初的用途是将变量的使用作为前缀的一些重要方面。表是表的事实几乎不是使用匈牙利表示法的有用方法。

在ASP中,匈牙利语表示法用于指定数据类型,因为VBSCript只有变体。我已经看到ASP程序员也将它应用于数据库中的表和字段,这是误用的一种方式。

答案 3 :(得分:2)

它的一个好处是,您可以区分视图,表格和物化视图。当然,在编写代码时,这并不重要,重要的是保持代码。如果有人意识到他们正在从视图中提取,他们可能能够更好地优化代码。基于视图的视图的视图效率非常低。如果没有tbl_或view_前缀,可能更难判断是否发生这种情况。

答案 4 :(得分:1)

我认为在使用诸如Entiry Framework之类的ORM时,它可以更容易地分辨映射处理表的哪一方以及哪一方处理对象(实体)。例如,我的tbl_Employee映射到Employee。没有办法让抽象层变得混乱。