Primary-Key

地址表的主鍵

  • September 5, 2017

我正在研究儲存地址資訊的數據庫。每個地址都有一個Street, Number, Bus(就像他們居住的公寓一樣)和CityCode參數。該CityCode參數是 City 表的 FK,其郵政編碼/郵政編碼為 PK,但我認為這對於這個問題並不重要。

我不確定如何處理地址表。APerson會有一個Address,所以這兩個表會有關係。Street據我所知, aNumber和的組合Bus是數據庫中的一個唯一條目,導致我認為 Street、Number 和 Bus 可能是 3 列的 PK 一致。

另一方面,我必須在我的Person表中添加 3 個額外的列而不是 1 列,以AddressPerson.


我做了一些環顧四周,我發現PK應該盡可能短以獲得良好的性能。另一方面,只有一個自動遞增的 Id 作為 PK 使得在不連接表的情況下更難查看原始數據。

在這種情況下我該怎麼辦?

將這 3 個欄位用作主鍵不是一個好主意(或者我誤解了你的問題)。有3個原因:

  1. 密鑰的長度會很大。
  2. 數據也將儲存在 Person 表中。
  3. 街道有時可以重命名或重新編號。

最好的方法是使用一個特殊的欄位,就像對 Person 數據所做的那樣。一旦您需要一個未由您自己定義為 PK 的值,那麼您應該在將其用作 PK 時三思而後行。

關於您的郵政編碼。並非所有國家/地區的單個城市都有一個郵政編碼。只要您只需要您所在國家/地區的城市,那麼這不是問題。

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