2016-04-21 115 views
1

我正在研究一個博客模塊,以用於將來的項目。爲項目名稱添加列名前綴的優點/缺點是什麼?

我決定在blog_前加上所有表名,因爲它是一個模塊,不同的模塊可以有一些同名的表。

昨天我在看IPS主板的源代碼,看到這樣的東西。對我感興趣的一點是他們也使用了他們列名的前綴。

舉個例子:

blog_categories 
    category_id 
    category_name 
    category_slug 

blog_categories 
    id 
    name 
    slug 

哪一個你認爲它會更好,如果我這樣做呢?

回答

1

在某種程度上這是一個火焰戰爭的領土,所以這篇文章將討論爲什麼我認爲人們選擇一個或另一個。就我個人而言,我屬於後一類。請注意一些優點和缺點取決於您的數據庫系統。

原因添加前綴

隨着前綴,列名在很大程度上是語義上是獨一無二的。 category_id始終引用類別表的ID。有些人認爲這比較容易閱讀。其他人指出,這允許連接使用USING(),因爲這意味着連接列始終具有相同的名稱。

不幸的是,後一種情況並不完美。 USING()限制了規劃師可以對連接執行的操作,因爲重新排序連接可以更改連接條件。不過好的策劃者可能會解決這個問題。查看數據庫文檔以獲取詳細信息

理由不加前綴

我寧願然而,並非添加前綴。在這個模型中,所有的列都被邏輯地綁定到表的主鍵上,所以使用這個表作爲名稱空間效果很好。這也允許更簡單,更一致的關於表內重要性的命名。例如,數字代理鍵可能總是被稱爲id,而其他列可能具有其他名稱。

但是我偏好的一部分可能與我選擇的數據庫有關。 PostgreSQL在主鍵和非零唯一約束方面並沒有做出真正的區分(InnoDB的方式)。因此,我發現一致地命名代理鍵是很好的,特別是當我嘗試總是指定自然主鍵時。但是,這種方法在所有數據庫系統上都不能很好地工作。

+0

感謝您的好評,根據您的研究和我的編碼方式,O將堅持第二種選擇。我使用Eloquent作爲數據庫幫助程序,所以我沒有真正搞砸SQL查詢。我也認爲這種方式更具可讀性。 –

相關問題