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

4
我曾在过去两个代码库中看到所有表都有tbl_前缀。 我想不出它们对应用程序开发人员或数据库管理员有任何用处。
如果DBA需要查看哪些对象是表,他们可以随时加入到DMV或主模式表中,对吧? 如果项目使用ORM工具,我更无法想象它们对程序员有什么用处。
即使编写存储过程时,它们似乎也只会碍事。
有人能以非主观的方式解释它们如何有用吗?例如(拥有tbl_帮助我执行x任务)。
5个回答

5
我听到过同样的话很多次,原因是这可以帮助他们知道对象的类型。在查询中,使用前缀可以帮助他们区分表和视图,例如。但我真的不同意这个观点。熟悉数据库模式后,前缀变得多余,并且像所有多余的东西一样,它可能会变得不同步或使更改更加困难。假设您有一张表,由于某种原因必须将其拆分为两张表。假设您决定创建一个视图,从两个新表中选择数据以模拟原始表。你会在整个代码库中重命名吗?还是坚持用以tbl_为前缀的视图呢?因此,我的观点是数据库对象名称不应该有任何前缀来推断它们的类型。

3

我想不出太多好处。这样你肯定可以看到更清晰的SQL:

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

使变量更容易理解。否则,这看起来就像你一直在处理那些只学过 MS Access 数据库的人。

3
这是匈牙利命名法,或者更确切地说是它的误用。原来的用法是将变量的某个重要方面作为前缀。仅仅以“表格是表格”为方式使用匈牙利命名法几乎没有实用价值。
在ASP中,匈牙利命名法用于指定数据类型,因为VBScript只有变体。我见过ASP程序员将其应用于数据库中的表格和字段,这也是误用的一种方式。

2

IT技术的一个好处就是你可以区分视图、表和物化视图。当然,在编写代码时这并不重要,重要的是维护它。如果有人意识到他们正在从一个视图中提取数据,他们可能能够更好地优化代码。基于视图的视图会非常低效。没有tbl_或view_前缀,可能更难以确定是否发生了这种情况。


1
我认为,当使用像Entity Framework这样的ORM时,它可能会更容易告诉映射正在处理哪些表和哪些对象(实体)的一面。例如,我的tbl_Employee映射到Employee。没有办法混淆抽象层次。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接