在这里有很多我同意的答案,告诉您这不是一个非常有价值的命名约定。对于那些对其他答案不满意的人,我将尝试证明许多其他答案在说什么。
SELECT
bar
, fizz
, buzz
FROM dbo.foo
在上面的语句中,我从名为的内容中选择三列dbo.foo
。前缀的核心抱怨之一是它们不知道dbo.foo
是表还是视图。当然,这是抽象视图的优点之一,但是我偏离了话题。他们说我们应该像这样给对象加上前缀dbo.tblFoo
。现在他们可以在上面的查询中看到该对象(可能是表)。但是,如果我们编写与该目标等效的功能,它将看起来像这样。
SELECT
bar
, fizz
, buzz
FROM dbo.Foo --table
我怀疑注释似乎没有用处,即使这是前缀有效地要求的。为了突出显示此元数据注释注入的无用噪声,请考虑更复杂的查询。
SELECT
qc.occurances
, i.employeeId
, q.questionText
FROM dbo.questionCount /*Indexed view*/ qc WITH (NOEXPAND)
INNER JOIN dbo.interviewer /*partitioned view*/ i ON i.employeeId = qc.interviewerId
INNER JOIN dbo.question /*table*/ q ON q.id = qc.questionId
WHERE
EXISTS (
SELECT
1
FROM dbo.currentEmployees /*view*/ ce
INNER JOIN dbo.questionsAsked /*table*/ qa ON qa.candidateId = ce.candidateId
WHERE
ce.employeeId = i.employeeId
AND
qa.questionId = q.id
)
AND
qc.occurances > 5;
额外的注释是否会使查询更容易推理,还是只会增加额外的噪音?在我看来,它们只会增加额外的噪音并增加零值。这就是反前缀者试图说的。此外,使用前缀实际上比那些注释差,因为如果需要调整数据模型,则更新注释的成本比更新前缀表的名称要低得多。由于这些前缀是有代价的,并且它们不会传递有价值的信息,因此应避免使用。
有人引用的前缀的另一个优点是,它可以在您的开发环境中进行某种分组或排序。由于我们花费大量时间来编辑代码,因此对于某些人来说,这可能是一个诱人的论点。但是,以我的经验,现代开发环境提供了等效或高级的选择,它们不会使您的代码充满无用的元数据并限制了灵活性。
Class
?