【发布时间】:2021-11-08 06:25:10
【问题描述】:
我正在为一家在整个城市维护多个房地产项目的公司编写一个项目。这样,他们就有:
- 房地产项目(通常是一组具有单一主要地址的公寓)。
- 组(项目)中的独栋公寓,有自己的地址。
- 房子内的单人公寓。
因此,#1 的地址将是 Main street - 28,#2 的地址将是 Main street - 28, building 4,#3 的地址将是 Main street - 28, building 4, apt。 12.
问题是他们也有一些实际上同时是 #1 和 #2 的独栋房屋(例如另一条街 - 123 号(和许多公寓))。
我正在努力为此设计一个数据库架构并且有多个变体:
- 每个地址,无论是 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关系是可选的关系,或者在表示层次结构的记录上使用nullableparent_id并仅保留最后一部分该层次结构(building 4或apt 12及其父级的键)。
标签: database laravel eloquent database-design laravel-8