我需要管理国家,州/省和城市的名称信息。所有信息都将显示在网页上,并带有下拉列表或其他方式。目前我正在设计我的数据库。我有两个设计表的想法
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 :(得分: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?
祝你好运!