【问题标题】:Laravel Eloquent: DB schema designLaravel Eloquent:数据库模式设计
【发布时间】:2021-11-08 06:25:10
【问题描述】:

我正在为一家在整个城市维护多个房地产项目的公司编写一个项目。这样,他们就有:

  1. 房地产项目(通常是一组具有单一主要地址的公寓)。
  2. 组(项目)中的独栋公寓,有自己的地址。
  3. 房子内的单人公寓。

因此,#1 的地址将是 Main street - 28,#2 的地址将是 Main street - 28, building 4,#3 的地址将是 Main street - 28, building 4, apt。 12.

问题是他们也有一些实际上同时是 #1 和 #2 的独栋房屋(例如另一条街 - 123 号(和许多公寓))。

我正在努力为此设计一个数据库架构并且有多个变体:

  1. 每个地址,无论是 apt、房屋还是项目地址,都将存储在自己的 DB 行中(如纯文本):
id address
1 Main street - 28
2 Main street - 28 building 1
3 Main street - 28 building 1 apt. 12
  • 每个地址都将存储在具有关系的 DB 中,主地址 (Main street - 28)、地址扩展 (...building 4) 和 apt.numbers (apt.12) 具有单独的表,它们将与彼此(如 parent_id)。

问题在于,由于可能没有中间部分(没有主要地址扩展,如building 4),恐怕最后一个变体不会按预期工作,因为每个公寓都会附加到它上面。

非常感谢您的帮助!

亲切的问候,

【问题讨论】:

  • 您可以分离出building 和apartment 关系是可选的关系,或者在表示层次结构的记录上使用nullable parent_id 并仅保留最后一部分该层次结构(building 4 或 apt 12 及其父级的键)。

标签: database laravel eloquent database-design laravel-8


【解决方案1】:

找到了实现这一目标的方法。我使用了许多 laravel 包之一来实现嵌套集模型结构。在这种情况下,我将在数据库中有树状模型,其中有父母和后代。

这样,即使我只检索了根最深的子元素,我也可以引用每个父元素。这还允许进行多项操作,例如向上/向下计数(父母/孩子),以及构建实际的可视化树模型。

有多个 Laravel 包可以实现这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多