一些最近的问题讨论了命名列的策略,我很惊讶地发现在列名中嵌入外键和主键的概念。也就是说为什么在列名中指定主键/外键属性
select t1.col_a, t1.col_b, t2.col_z
from t1 inner join t2 on t1.id_foo_pk = t2.id_foo_fk
我不得不承认我从来没有使用这种方案的任何数据库系统的工作,我想知道的好处是什么。我看到它的方式,一旦你了解了系统的N个主要表格,你就会用这些表格写出几个数量级的请求。
为了提高开发效率,您需要了解哪些表格是重要的表格,哪些是简单的支流。你会想要提交大量的列名到内存中。其中一项基本任务是将两张桌子连在一起。为了降低学习努力,以最简单的事就是确保列名是相同的两个表中:
select t1.col_a, t1.col_b, t2.col_z
from t1 inner join t2 on t1.id_foo = t2.id_foo
我断定,作为一个开发者,你并不需要提醒的是,很多关于哪些列是主键,哪些是外键,什么都不是。如果你很好奇,看看这个模式是很容易的。当看随机
tx inner join ty on tx.id_bar = ty.id_bar
......知道哪一个是外键是重要的吗?外键仅对数据库引擎本身很重要,以确保参照完整性并在更新和删除过程中做正确的事情。
这里解决了什么问题? (我知道这是一个讨论的邀请,并且可以随意这样做,但同时我也在寻找答案,因为我可能真的错过了一些东西)。
岂不它是Invoice.InvoiceCustomerUserName?这有可能比类型标签更糟...... Invoice.UserName = Customer.UserName对我来说似乎已经足够清晰了。 – 2008-10-17 22:55:46
对不起,这太可怕了。简直可怕。它看起来像是一种“巧妙”,可以避免使用表别名。几乎和我工作的地方一样糟糕,其中表名前缀为T_和列C_(视图和索引也有前缀...) – 2008-10-18 00:07:51