Naming-Convention

處理與 PK 列的命名衝突的推薦方法是什麼?

  • July 17, 2017

我有一個VARCHAR(18)來自多個不同供應商的數據欄位“Shipment ID”。這將進入一個shipment帶有代理 PK的表shipment_id

我正在嘗試找出命名此列的最佳方式。我們的約定說:

  1. 只有 PK 或 FK 可以以_id.
  2. PK 是tablename_id. 所以一張桌子hello_world的 PK 是hello_world_id.
  3. 表和列是lowercase_with_underscores
  4. 與名稱衝突無關(如果我在這裡得到一個好的答案,我會確保將其添加到樣式指南中。)

我知道它沒有遵循這個很棒的答案,但這就是我們所擁有的

我不能將“Shipment ID”欄位用作 PK,因為不能保證它是唯一的,甚至不存在。另外它是一個字元串,我不喜歡字元串 PK。

我真的不喜歡shipment_namevendor_shipment_id。遇到這種情況,大家都用什麼?

鑑於規定的規則,shipment_id_from_vendor將優於vendor_shipment_id(不以 結尾_id,因此預計不會是 PK/FK 欄位)。

一般來說,對我來說,名稱衝突意味著一個或兩個名稱需要更好的定義,以澄清它們是不同的值。甚至應避免近乎衝突:如果您有需求日期和請求日期,則使用名稱req_daterequest_date沒有特別的幫助;有人可能正在尋找請求日期,請參閱req_date並假設他們已經找到了他們想要的東西。requirements_date打字可能要長得多,但它是什麼立刻就清楚了,沒有人會把它和request_date.

也就是說,沒有通用的解決方案。我對長表名和列名沒有任何問題,如果需要讓它們清楚的話;其他人會堅持簡潔是關鍵,並將上一段中的兩列reqr_daterqst_date.

引用自:https://dba.stackexchange.com/questions/180056