Mysql

如何設計不同類型的地址表?

  • November 25, 2020

我有一個地址表和不同的地址類型,如個人和公司。我設計了一個表格,但我認為這違反了規範化規則。我該如何改進這個設計?

我的設計: 在此處輸入圖像描述

您的設計總體上看起來相當不錯,但我會提出以下建議:

  • 您已經將客戶的名字和姓氏儲存在clients表中,因此您可以client_address_personal_info完全刪除該表。這將減少冗餘數據並提高性能並簡化管理和報告。
  • 您可能可以將表的名稱標準化為client_address_corporate_info與您的clients表類似的名稱,例如corporations
  • 與第一點類似,您應該從表或表中刪除phone_number欄位,使其僅儲存在一個位置。(您選擇要將其保留在哪個表中,我已經看到它以兩種方式完成。)clients``client_addresses
  • 另一項一般性建議(儘管這與規範化相關)是您應該將 varchar 欄位的大小調整為能夠擬合所有潛在未來值的大小。雖然顯然我們無法預測未來,但我的觀點通常是為邏輯上可能的更大值留出足夠的空間。VARCHAR(1) 與 VARCHAR(1000) 不會影響性能或磁碟空間是任何明顯不同的方式。因此,雖然大多數名字或企業名稱都可以放入 VARCHAR(16) 欄位中,但我確信那裡的名字長度超過 25 個字元。我對此類事情的一般出發點是 VARCHAR(50)(只有在極少數情況下,我才使用較小的 VARCHAR)。

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