我需要存储有关国家、地区和城市的信息。我应该使用哪种架构:
表格:
- 国家(ID、代码、名称);
- 区域(id、ctry_id、代码、名称);
- 城市(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 |
或
- 位置(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/