一些最近的問題討論了命名列的策略,我很驚訝地發現在列名中嵌入外鍵和主鍵的概念。也就是說爲什麼在列名中指定主鍵/外鍵屬性
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