【问题标题】:Tables Hierarchy in a database数据库中的表层次结构
【发布时间】:2016-03-20 19:06:23
【问题描述】:

我不确定这是否是提出这个问题的正确论坛,但我假设这是一个技术问题,所以在这里发帖。

在采访中被问到;

我们有 4 张桌子.. Country、City、District、Sub District。如何在数据库中建立它们的层次结构(一种方法是在子表中添加父的外部引用......但另一种方法是什么?)

除了将所有信息添加到一个表中之外,我找不到任何其他方法,但问题是“如何使它们层次结构”?这意味着涉及多个表。

有人可以提出其他方法吗?

【问题讨论】:

  • 面试官问,“在子表中不对外引用父”,该线程中提供的解决方案有父引用。
  • “没有在子表中对父级进行外部引用”:这不是你的问题。也许您应该编辑您的问题以清楚明确地包含整个问题。
  • @MikeSherrill'CatRecall' 我已经提到“(一种方法是在子表中添加父级的外部引用......但另一种方法是什么?)”
  • 用外键引用表达层次结构的方法不止一种。到目前为止,似乎没有人理解您只对使用一张表 (?) 且没有外键引用的解决方案感兴趣。如果这是您想要的,请编辑您的问题并清楚直接地说出来。

标签: sql database relational-database


【解决方案1】:

Tgere 有很多方法。其中一些从规范化的角度来看很好,一些从性能和易于使用的角度来看。其中一些:

  • 自参考:

  • 代码保存信息。例如 123000 - 是一个区,123001 - 123区001副区

  • 最规范的方式(链接区-市可以改成 区市)

【讨论】:

  • 无法理解面试官问的解决方案,“没有在子表中引用父母”,并且提供的所有三个解决方案都有父母的参考还是我的解决方案有误?
  • @HappyDev,请提供详细说明!应该有多少张桌子?如果为 1,只需将所有信息放入 1 个表中,您将拥有绝对去规范化的存储。如果应该多于 1 个表,则应将一个表中的数据引用到另一个表。如果您不想使用 FK,可以使用示例 2) 中的方法,其中子和父的代码分别为 123000 和 123001
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多