gpt4 book ai didi

sql - 国家、地区、县、镇的最佳数据库模式

转载 作者:搜寻专家 更新时间:2023-10-30 22:33:17 26 4
gpt4 key购买 nike

我有国家、地区、县、城镇数据,目前我正在决定 2 种模式设计(如果有更好的,请告诉我)。

我首先想到的

  • 国家

    • 身份证
    • 姓名
  • 地区

    • 身份证
    • 国家/地区
    • 姓名
    • 身份证
    • 地区编号
    • 姓名
  • 城镇

    • 身份证
    • 县号
    • 姓名

然而,要获得一个国家/地区的所有城镇,您必须使用 3 个内部连接来进行过滤。我想这可能没问题,但可能很贵?

另一种设计是:

  • 国家

    • 身份证
    • 姓名
  • 地区

    • 身份证
    • 姓名
    • 身份证
    • 姓名
  • 城镇

    • 身份证
    • 国家/地区
    • 地区编号
    • 县号
    • 姓名

通过这种方式,可以说所有分层数据都位于底部,您可以返回上层,但是如果您想要一个国家/地区的所有地区,您就有点搞砸了,这让我们怀疑第一个设计是否是最好的。

您认为最好的模式设计是什么?

最佳答案

最好的数据库设计取决于数据的使用方式。

如果这是一次全部更新的相当静态的数据,并且外部引用全部指向城镇,那么我可能会选择非规范化维度。即,将信息全部存储在一行中:

  • 城镇编号
  • 城镇名称
  • 县名
  • 地区名称
  • 国名

在上述情况下,县、地区和国家的 ID 不是必需的(假设)。

如果数据作为具有不同 ID 的单独表格提供,并且这些表格可以独立更新或逐行更新,那么每个表格都有一个单独的表格是有意义的。将所有 ID 放入 towns 表中可能是也可能不是一个好主意。在插入和更新数据时,您必须验证和维护层次结构。

如果您需要每个级别的 ID,那么您应该有适当的表结构来声明外键约束。但是,这可能会变得复杂。外部实体是否具有可以处于任何级别的“地理”属性?外部人员是否总是知道它指的是什么级别?

换句话说,您需要知道数据将如何使用才能定义合适的数据模型。

关于sql - 国家、地区、县、镇的最佳数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com