mysql - 哪种方案最适合存储国家、地区和城市数据

标签 mysql

我需要存储有关国家、地区和城市的信息。我应该使用哪种架构:

表格:

  1. 国家(ID、代码、名称);
  2. 区域(id、ctry_id、代码、名称);
  3. 城市(id、rgn_id、代码、名称)。
| id | code | name |
| 1  | US   | USA  |

| id | ctry_id | code | name  |
| 1  | 1       | TX   | Texas |

| id | rgn_id | code | name   |
| 1  | 1      | DS   | Dallas |

  1. 位置(id、pid、类型、名称);
| id | pid | type | name   |
| 1  | 0   | ctry | USA    |
| 2  | 1   | rgn  | Texas  |
| 3  | 2   | cty  | Dallas |

Which approach is better?

最佳答案

所以这取决于你真正想要什么。

我猜想选项 2 在速度方面可能会更高效,但代价是表格最终会因大量条目而变得相当困惑。我建议也许将类型字段限制为已知类型的列表,并且仅在需要时使用此方法进行更改。还要考虑一下对于那些对维护此数据所需的数据知之甚少的人来说会有什么感觉。

第一个选项可能没有那么快,但会更加结构化,并且具有适当命名的表。这可能是不熟悉数据的同事会感谢您的方式。

我会尝试选项 1,如果它满足您的性能需求,则选择该选项。如果它对你来说太慢,请尝试第二个。

就我个人而言,我更喜欢第一个。有时,性能上的轻微影响值得可读。其他时候则不然。

祝你的选择好运。

关于mysql - 哪种方案最适合存储国家、地区和城市数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48784711/

相关文章:

php - Joomla - 合并列中的数据库结果

php - MySQL 更新无法使用 If 语句

Mysql - 没有错误的文字描述

mysql - 需要 mySQL PDO JOIN 语句的支持

mysql - 使用两个选择进行更新

java - JPA插入错误

java - 在 jpa 中选择带有 order by 的案例

php - 不知道如何限制 PHP 中的内部 SQL 查询

java - 如何从 Connection 对象确定 DBMS

mysql - 正确指定外键约束时,其形成不正确