繁体   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