2011-09-22 60 views
1

如何構建一個數據庫,您有CityStateCountry,而城市有時會有狀態,有時不會?您是否簡單地將State_ID(默認NULL)和Country_ID放在City中,還是有更好的方法來處理它?SQL數據庫結構問題

回答

3

你的方法似乎是現貨。如果沒有可執行的層次結構,那麼你沒有多少選擇餘地。

當現實世界與我們的模式不一致時,我們別無選擇,只能使我們的模式符合現實世界。

0

如果你的DBA是一個非常嚴格的規範化標準,另一種方法是在State表中有特殊的「無狀態」記錄。對於每個Country(至少每個擁有「無狀態」城市的人),您都需要其中的一個。

+0

這種奇怪的稱呼缺少一個國家的狀態,不是嗎? – babonk

+0

取決於你如何看待它,我猜。我不喜歡這樣做,但正如我所說,它解決了將country_id存儲在兩個地方的正常化問題。 – Mac

+1

@babonk:沒有比召喚一個省,一個州或一個地區成爲一個國家更爲怪異的了。 –

0

接受提供的答案。但只是想指出,這裏沒有提到的另一種方法將是多對多的表格City_States。對於兩個州的​​一些城市來說,這將是一個特別有用的方法。