[英]Database for manage countries, states and cities
我需要管理國家,州/省和城市名稱信息。 所有信息將通過下拉列表或其他方式顯示在網頁上。 目前,我正在設計數據庫。 我有兩個設計桌子的想法
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.使用單獨的表
我將使用一張表管理國家/地區,使用一張表管理州/省,使用一張表管理城市。 然后使它們之間相互參考。
那么哪個更好呢? 並請解釋您的原因。
我認為#2更好。
使用單獨的表,您可以輕松管理記錄。 用於SELECT查詢; 它更快
示例如果僅想選擇國家/地區,
1#:選擇*來自類型為1的國家/地區;
2#:選擇*來自國家;
當然; 2#更快,因為表中的數據小於1#
我不認為“速度”是這里的問題,就像@ fanfan1609所說的那樣,但是如果您使用一個表,則會在一個表中保存“不同”的東西。 國家不是國家,依此類推。 想想數據庫規范化。
如果某個城市因為您需要而獲得郵政編碼,該怎么辦? 您是否將怪獸表更改為只有一種類型的郵政編碼欄? 然后,您開始添加類型為varchar的“元”列,然后開始廢話。
您當然應該選擇表拆分解決方案。 這是應有的可擴展性問題。 一旦需要擴展存儲的國家或州數據集,您將發現它效率低下。
#1比#2更好
另外,您可以創建遞歸視圖
在這里看看:
如何在MySQL中執行遞歸SELECT查詢?
祝好運 !
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.