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

时间:2018-02-14 10:19:40

标签: mysql

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

表格

  1. country(id,code,name);
  2. region(id,ctry_id,code,name);
  3. city(id,rgn_id,code,name)。
  4. | 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. location(id,pid,type,name);
    2. | id | pid | type | name   |
      | 1  | 0   | ctry | USA    |
      | 2  | 1   | rgn  | Texas  |
      | 3  | 2   | cty  | Dallas |
      
        

      哪种方法更好?

2 个答案:

答案 0 :(得分:1)

所以这取决于你真正的目标。

我猜测选项2在速度方面可能更具性能,但是以表格为代价,结果很多条目令人困惑。我建议可能将类型字段限制为已知类型的列表,并且只在需要时使用此方法进行更改。还要考虑一下,对于需要维护数据的人知之甚少。

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

我会给选项1一个,如果它符合您的性能需求,那么请选择那个。如果它太慢你试试第二个。

就个人而言,我更喜欢第一个。有时候性能上的轻微打击值得阅读。其他时候没有。

祝你好运。

答案 1 :(得分:0)

我会说架构1是关系型的,这就是mysql所期望的,我认为它会表现得更好。但是如果你需要使用像couchdb这样的noSqls,那么模式二就是它的工作方式,它对查询有用,但不适用于生成报告。