我有一個用戶表,其中包含字段CityId,StateId,CountryId。我想知道是否將它們[城市,州,國家]存儲在單獨的表中並將它們各自的ID放在用戶表中或將所有三個實體放在一個表中是個好主意。用戶到位置映射與同一個表中的國家和城市
前者是傳統的,我關心的額外的表的加入,所以會想所有這三個不同的位置,類型存儲在一個表像這樣
RowId - unique row id
LocationType - 1 for City, 2 for state, etc
ActualLocation - Can be a city name if the locationType is 1 and so on..
RowId LocationType ActualLocation
1 1 Waltham
2 1 Yokohama
3 2 Delaware
4 2 Wyoming
5 3 US
6 3 Japan
問題是我只能使用這樣
select L.ActualLocation as CityName,
L.ActualLocation as StateName,
L.ActualLocation as CountryName
from UserTable U,
AllLocations L
WHERE
(L.ID = U.City and L.LocationType= 1)
AND
(L.ID = U.State and L.LocationType = 2)
絕對是一種更「正確」的方式來做到這一點......但是,它爲正確管理全球地理參考數據(國家邊界變化,州來來去去,城市變更名稱)增加了很多開銷。 – Captain