管理国家,州和城市的数据库

时间:2014-05-06 04:47:00

标签: mysql sql

我需要管理国家,州/省和城市的名称信息。所有信息都将显示在网页上,并带有下拉列表或其他方式。目前我正在设计我的数据库。我有两个设计表的想法

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。使用单独的表格

我将使用一个表来管理国家/地区,使用一个表来管理州/省和一个表来管理城市。然后让它们相互引用。

哪一个更好?请解释一下你的理由。

4 个答案:

答案 0 :(得分:0)

我认为#2更好。

使用单独的表,您可以轻松管理记录。 对于SELECT查询;它更快

实施例 如果您只想选择国家/地区,

1#: SELECT * FROM countries WHERE type = 1;

2#: SELECT * FROM countries;

当然; 2#更快,因为表中的数据小于1#

答案 1 :(得分:0)

我不认为"速度"这是问题,就像@ fanfan1609所说的那样,但是如果你使用一张桌子,你就可以节省不同的"一张桌子里的东西。一个国家不是一个国家,等等。 想想数据库规范化。

如果一个城市会收到邮政编码,因为你需要它会怎么样?你会改变你的怪物表有一个邮政编码列,只有一种类型?然后你开始添加一个" meta" varchar类型的列,让垃圾开始。

答案 2 :(得分:0)

您当然应该选择表拆分解决方案。这是由于可扩展性问题。一旦您需要扩展存储的国家或州数据集,您就会发现它的效率是多么低效。

答案 3 :(得分:-2)

#1比#2好
另外,你可以创建递归视图
看看这里:
How to do the Recursive SELECT query in MySQL?

祝你好运!