【问题标题】:DB optimization and normalization数据库优化和规范化
【发布时间】:2018-03-09 23:49:59
【问题描述】:

我有几个带有地理数据的表:countriesregionscities。我还有一张包含用户资料的表格。是否有任何逻辑可以将country_idregion_idcity_id 添加到profiles 表中?如果谈论规范化 - 这是错误的,因为cities 表有region_idregions 表有country_id,但在这种情况下,我们会有额外的查询。

【问题讨论】:

    标签: database optimization query-optimization


    【解决方案1】:

    city_id 将是您的配置文件表中的外键。其他字段(国家、地区)将在查询中自动连接。

    profiles (profile_id pk, city_id fk)
    cities (city_id pk, region_id fk)
    regions (region_id pk, country_id fk)
    countries (country_id pk)
    

    【讨论】:

    • 是的,但是还有 3 个查询(或联接)。它可以足够快,但是对于这种情况,理想的解决方案是什么?
    • 理想情况下,您应该始终了解城市,因此地区和国家/地区将是多余的。但是,您的空间数据会总是有一个城市吗?如果没有,那么您需要在每个表格中包含地区和国家/地区。
    • 我的用例是我需要全部搜索某个县的所有个人资料。所以现在我应该得到地区然后是城市,然后才是 - 个人资料:)
    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 2012-06-21
    相关资源
    最近更新 更多