簡體   English   中英

管理國家,州和城市的數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM