Primary-Key
地址表的主鍵
我正在研究儲存地址資訊的數據庫。每個地址都有一個
Street
,Number
,Bus
(就像他們居住的公寓一樣)和CityCode
參數。該CityCode
參數是 City 表的 FK,其郵政編碼/郵政編碼為 PK,但我認為這對於這個問題並不重要。我不確定如何處理地址表。A
Person
會有一個Address
,所以這兩個表會有關係。Street
據我所知, aNumber
和的組合Bus
是數據庫中的一個唯一條目,導致我認為 Street、Number 和 Bus 可能是 3 列的 PK 一致。另一方面,我必須在我的
Person
表中添加 3 個額外的列而不是 1 列,以Address
與Person
.我做了一些環顧四周,我發現PK應該盡可能短以獲得良好的性能。另一方面,只有一個自動遞增的 Id 作為 PK 使得在不連接表的情況下更難查看原始數據。
在這種情況下我該怎麼辦?
將這 3 個欄位用作主鍵不是一個好主意(或者我誤解了你的問題)。有3個原因:
- 密鑰的長度會很大。
- 數據也將儲存在 Person 表中。
- 街道有時可以重命名或重新編號。
最好的方法是使用一個特殊的欄位,就像對 Person 數據所做的那樣。一旦您需要一個未由您自己定義為 PK 的值,那麼您應該在將其用作 PK 時三思而後行。
關於您的郵政編碼。並非所有國家/地區的單個城市都有一個郵政編碼。只要您只需要您所在國家/地區的城市,那麼這不是問題。