2011-03-02 155 views
0

我有一張房產列表。我需要在這些列表中添加城市。將城市列表分爲自己的表格是否是最佳做法?數據庫表格設計

我想添加一個新的屬性,以便能夠從城市列表中選擇用戶。

順便說一句,這是一個Rails項目。

回答

2

在這種情況下,城市查找表是有意義的。

如果需要,這也將允許您在未來爲每個城市添加更多信息。

0

是的。標準化數據庫模式通常是一種最佳做法,這樣您就不會在屬性列表中的多個房產列表記錄中重複相同的城市名稱。

有些情況下,您會因性能原因想要進行非規範化處理。在證明它本身不變的情況下,我不會認爲你的情況是這種情況之一(即表讀取變得非常緩慢)。即使如此,在對模式進行非規範化之前,仍然可以進行優化。

+2

把城市放在自己的桌子上與正常化沒有任何關係。不這樣做與反規範化無關。這並不一定會使事情正確或錯誤 - 但你應該清楚理由是什麼。沒有跡象表明OP的模式尚未正常化。 – sqlvogel 2011-03-02 17:23:29

+0

@dportas誠然,如果我的回答包含了規範化和非規範化模式的例子,我的回答會更好地服務於這個問題,表明我認爲他在問他應該使用哪一個。 – 2011-03-03 19:14:06

2

如果每個屬性只有一個城市,將其放入屬性表中並沒有什麼大錯。如果還有更多,則除了使用城市表格外,沒有什麼好的選擇。

或者,如果您想從下拉列表中選擇城市並且不允許添加任何內容,則擁有城市列表可能是個好主意。如果你這樣做,那麼你可能希望將cityid而不是城市名稱存儲在屬性表中。這樣當有人改變一個城市的名字(這可能不會經常發生),你只需要改變一個記錄。當然,如果你有一個城市表,你必須有一個外鍵,並確保city_id在屬性表中編入索引,以保持數據的完整性。

+0

謝謝。這幫助了很多 – hanumanDev 2011-03-02 23:40:51