當前位置:
首頁 > 知識 > 表名應該複數化嗎?是用Person, Persons, People還是People?

表名應該複數化嗎?是用Person, Persons, People還是People?

(此處已添加圈子卡片,請到今日頭條客戶端查看)

在SQL Server中設計表時,是否要複數化表名存在很多困惑。你要如何選擇是否進行複數化呢?

如果我們想存儲一個由人組成的列表及人們的詳細信息,我們是使用「Person」、「Persons」、「People」還是「Peoples」呢?有些人會用「People」,有些人會用「Person」,其他人或人們會用「Peoples」或「Persons」。

相關標準的規定是不進行複數化, 因為在一個表中,我們存儲的是一組實體,我們按照該實體對錶進行命名,所以如果我們想要在一個單獨的實體或表中存儲一個或更多的人, 我們就需要將他或他們存儲在「Person」表中。

如果我們堅持這樣做,那麼它會使其他情況變得更簡單,並使我們不再需要考慮如何複數化一個單詞,例如,我曾看到將hierarchy複數化為"hierarcys"的。

需要證據來支持你和同事之間的爭論嗎?

如果我們看一下由E. F. Codd撰寫的「大型共享資料庫的數據關係模型」論文, 我們就會發現基本上是他發明了關係型資料庫,他給出的例子是使用單數形式(供應商和組件)。

如果我們再看看ISO關於命名的標準(11179-5: 命名和識別原則),就會發現它也規定了單數名稱應該「名詞只以單數形式使用」。

最後,如果我們看看微軟的例子,我們就可以看到有些困惑是從何而來!

舊的「pubs(示例資料庫)」例子(https://github.com/microsoft/sql-server-samples/blob/master/samples/databases/northwindpubs/instpubs.sql )中混合使用了單數和複數命名。

「Northwind(另一種示例資料庫)」也使用了一種混合命名。(https://raw.githubusercontent.com/Microsoft/sql-server-samples/master/samples/databases/northwind-pubs/instnwnd.sql )——注意,這裡邊有「Region」和「Territories」,我永遠也不會知道它們的一致性在哪裡!

Wide WorldImporters(微軟SQL示例資料庫)也使用了複數和單數混合的命名方法,有趣的是該示例資料庫中使用是「Archive」的單數版本,而字典顯示「Archives」適合單數或複數版本,所以它們很容易(意外地?)就已經具有一致性了。

這就很容易看出混淆從何而來,而且很有可能你將使用舊的資料庫,所以請嘗試與其他代碼和團隊保持一致。如果你必須使用複數名稱,那麼你需要定義什麼時候在名稱末尾加 「s」,以及哪種單詞要使用「ies」或其他情況。

對於新項目或者你可以輕鬆更改實體名稱的地方,那麼我建議你必須使用單數名稱,對於較老的項目,那麼你需要更實際一點!

參考資料:

「大型共享資料庫的數據關係模型」:

https://cs.uwaterloo.ca/~david/cs848s14/codd-relational.pdf

「IS0 111779」 第5節:

http://metadata-standards.org/11179/#11179-5


英文原文:https://the.agilesql.club/2019/05/should-i-pluralize-table-names-is-it-person-persons-people-or-people/?ut=hn

譯者:浣熊君( ????? )

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

Django快速入門
Django Admin的新皮膚,Google Material 風格皮膚

TAG:Python部落 |