2014-05-06 81 views
0

我需要管理國家,州/省和城市名稱信息。所有信息將通過下拉列表或其他方式顯示在網頁上。目前我正在設計我的數據庫。我有兩個想法來設計表管理國家,州和城市的數據庫

1.只使用一個表

國家,州/省市通常是非常穩定的信息,所以我想只用一個表來管理所有的信息和使它引用到本身如:

id name   parent_id type 
--+--------------+----------+-- 
1 USA   null  1 
2 California  1   2 
3 Los Angeles 2   3 
4 San Francisco 2   3 

類型:1代表的國家,2州或省和3個城市

2.使用單獨的表

我會用一個表來管理國家,一個表來管理國家/省和一個表來管理城市。然後讓他們參考彼此之間。

那麼哪一個更好?並請解釋你的理由。

回答

0

我覺得#2更好。

使用單獨的表格,您可以輕鬆管理記錄。 對於SELECT查詢;它的速度更快

例 如果你想只選擇國家,

1#: SELECT * FROM國家,類型= 1;

2#: SELECT * FROM countries;

當然; 2#更快,因爲表中的數據小於1#

+0

但如果我嘗試選擇加利福尼亞州的所有城市會發生什麼? – user3587602

+0

假設您將這些表格視爲國家,城市和省份。 您的sql可能是 'SELECT * FROM cities AS c JOIN province p on p.id = c.province_id WHERE p.name =「California」;' – fanfan1609

0

我不認爲「速度」是這裏的問題,就像@ fanfan1609所說的,但是如果你使用一個表,你會將「不同」的東西保存在一張桌子。一個國家不是一個國家等等。 考慮數據庫規範化。

如果一個城市將得到一個郵政編碼,因爲你需要它?你會改變你的怪物表有一個郵政編碼列,只爲一種類型?然後你開始添加一個類型爲varchar的「meta」列,並讓垃圾開始。

0

你當然應該選擇分表解決方案。這是如此應有的可擴展性問題。一旦你需要擴展你的國家或國家數據集存儲,你會看到如何低效率。