2011-09-18 82 views
1

我一直在關注我的數據庫的以下命名約定。數據庫命名約定

  1. 所有表名的小寫字母和複數。
  2. 表中的_(Underscore)定義了與父表的關係。
  3. _(Underscore)列中定義了一個外鍵。

因爲我更喜歡使用表和列的描述性名稱,我經常發現我自己使用camelCasing的實體有兩個或更多的單詞,並沒有定義任何關係。例如。

lastVisitIp 
lastVisitDate 
registrationDate 

坦白說我真的不喜歡使用駝峯規則,因爲我覺得這是有點醜陋這樣做,我不知道爲什麼的想法。

我想從專家那裏知道你在這種情況下命名專欄是什麼?我應該繼續使用駱駝套管,我應該使用Underscore(_)還是其他選擇。

P.S:我檢查了Wordpress中使用的命名約定,他們使用(_) Underscore作爲多用途。 :)

謝謝。

回答

3

我發現複數可以使事情變得複雜,在用戶表或'ies'的情況下,表名是公司的情況下,coz plulars可以是's'。所以最好始終堅持單數。同樣在sql加入聲明時,我傾向於與Users.user_id = Companies.owner_id錯誤,但不會與User.user_id = Company.owner_id錯誤,因爲您必須始終關注「s」和「ies」。

下劃線的首選方法,因爲列名可以由很多的話

is_user_registered_last_year Vs的isUserRegisteredLastYear

,你可以有更多的字母其 難讀駱駝看到。

+0

好多解釋。謝謝你.. –

1

要一致

如果您要使用前綴,請在任何地方使用它。如果您要將外鍵添加到另一個表中,請在每個地方使用相同的列名稱。如果你打算用下劃線分開單詞,那麼到處都是。

你如何構建你的命名約定取決於你,只是保持它的邏輯性,所以當你回來幾個月後,你知道表是做什麼的。

我自己,我使用下劃線,我到處都是,所以一切都很有意義。

1

我在想昨天對於我即將開始的一個新的大項目完全一樣,我得出了相同的結論:使用_來定義關係和FK,駱駝案件的一切。例如:

party 
partyPerson 
partyOrganization 
partyPerson_partyOrganization (how a person relates to an organization) 
partyOrganizationLegal 
party_address 
party_contactMechanism 
address 
contactMechanism 

如果您強調所有內容,將很難找到什麼是參考,什麼不是。

我也認爲你應該在任何地方使用單數名稱(這是更合乎邏輯,不太可能混淆你)。

+0

我遵循複數因爲cakePHP建議使用它,即使我不使用框架。我需要改變時間並開始使用複數形式。 –

+0

@Ibrahim:Cake使用複數形式,因爲RoR使用複數形式,但他們都有不同的魔法爲他們工作。 =) –

2

我明白這是一箇舊帖子,但我想補充我的兩分錢。

如果可能,數據庫表應儘可能以複數形式命名,但要儘量保持對它們的某種敏感性,以便名稱能夠指示內容,以便容易識別。

舉例如下。

您的應用程序中有用戶,您的型號爲User,因爲它指的是單個用戶,因此數據庫表爲users,因爲它是單個用戶的集合。現在說你有這些用戶的配置文件,在命名時有幾個選項,但我覺得很適合。

  1. 你可能會被命名此表users_profiles,但讀的時候,這可能意味着一個一對多的關係,是它的用戶配置文件。
  2. 你也可能會試圖命名這個表user_profile,這表明它是一對一的關係,但另一方面,它暗示着這個表不是一個集合,而是一個單一的配置文件用戶。
  3. 相反,最好的命名約定是user_profiles,因爲它是用戶配置文件的集合,即一個配置文件與一個用戶相關。

在你要引用原始用戶此配置表,讓你有一個叫user_id,不users_id列,但user_id。至於任何其他列名稱,您應該嘗試將它保留爲一個單詞,全部小寫。如果您無法使用單個單詞命名此列,請將其視爲變量並將其命名爲下劃線。這是有益的,因爲在有多個列的第一個詞相同的情況下,它會創建一個子集合,暗示它們是相關的,這是正確的。

的確,下劃線意味着一種關係,這就是爲什麼該表被稱爲user_profiles,並且該字段被稱爲user_id,但是10次中有9次,您不會在字段上沒有關係一個id,所以暗示的問題就消失了。

以上提到的總是使用單數作爲複數可能會造成混淆。爭論是複數可以在sies結束。值得注意的是ies確實在s結束,所以這個問題是一個誤用。最重要的是,將表名保存爲單數,實際上會產生更多混淆,因爲它並不意味着一個集合,它的確意味着表名可以以任何其他字母結尾。

有些表格的名字會暗示複數形式,沒有以s結尾。例如,這可能類似於user_history。這個表名是一個完全可以接受且易於識別的名稱,因爲歷史記錄默認爲複數,並且此表包含用戶的歷史記錄。

事情不要做

  • 混合下劃線和案件。選擇一個標準並遵循它,不要將CamelCase列與下劃線結合在一起,因爲它可能會造成混亂,並且看起來很亂。
  • 保持一切小寫。沒有必要使用大寫字母,因爲它只能增加混淆,對待表格和列名稱就像是口語或書面句子的摘錄,但顯然要用下劃線替換空格。

正如您在這裏的所有回覆中所看到的,有許多不同的選項,其中一些具有優點,一些沒有。這個特定的方法是我遵循宗教的方法,據我所知,它是PHP最常用的方法。它保持整潔,容易理解,很少,如果有的話,我看到一個表名,不知道它做了什麼。

希望能幫助別人。