Mysql 数据关系模式

Mysql 数据关系模式,mysql,database,laravel,eloquent,Mysql,Database,Laravel,Eloquent,每个区域都有位置,事件可能发生在任何位置 我如何建立这种关系,以便能够雄辩地抓住某个地区或某个地点的所有事件 我是否也必须参考事故表中的区域id 您也可以进行嵌套关系查询 例如: 查看下的“急切加载约束”,您也可以进行嵌套关系查询 例如: 查看下的“紧急加载约束”,事件表中不应引用区域id,因为它已通过位置id间接存在 在设计关系数据库表结构时,请始终应用,并尽可能将您的模式转换为第三种标准形式 到底是什么问题?您已经描述了表之间的关系。如果具体实施有什么具体的信息,请告诉我。事件表中不应引用区

每个区域都有位置,事件可能发生在任何位置

我如何建立这种关系,以便能够雄辩地抓住某个地区或某个地点的所有事件


我是否也必须参考事故表中的区域id

您也可以进行嵌套关系查询

例如:


查看

下的“急切加载约束”,您也可以进行嵌套关系查询

例如:


查看

下的“紧急加载约束”,事件表中不应引用区域id,因为它已通过位置id间接存在

在设计关系数据库表结构时,请始终应用,并尽可能将您的模式转换为第三种标准形式


到底是什么问题?您已经描述了表之间的关系。如果具体实施有什么具体的信息,请告诉我。

事件表中不应引用区域id,因为它已经通过位置id间接存在

在设计关系数据库表结构时,请始终应用,并尽可能将您的模式转换为第三种标准形式


到底是什么问题?您已经描述了表之间的关系。如果具体实施有什么具体的信息,请告诉我。

最好不要在事件模型中引用区域id:如果位置区域发生变化,事件将链接到错误的区域。感谢您指出,您可能希望查看能够将事件连接到区域,同时保持与位置的中间关系的关系类型。这样,您就可以使用
$area->Incents
简单地获取给定区域内的事件列表。谢谢@alexrussell,我现在明白它是如何应用于这种情况的了。显然,这种关系的相反方向并不是那么简单,但它几乎同样简单:只需执行
$incident->location->area
即可获得事件所在的区域。最好不要在事件模型中引用area\u id:如果位置区域发生变化,事件将链接到错误的区域。感谢您指出,您可能希望查看能够将事件连接到区域,同时保持与位置的中间关系的关系类型。这样,您就可以使用
$area->Incents
简单地获取给定区域内的事件列表。谢谢@alexrussell,我现在明白它是如何应用于这种情况的了。显然,这种关系的相反方向并不是那么简单,但它几乎一样简单:只要做
$incident->location->area
,就可以得到一个事件所在的区域。谢谢,我认为我的方向是正确的,@hannesvdvreken澄清了我应该如何从事情的雄辩方面来处理它。谢谢,我认为我的方向是正确的,@hannesvdvreken澄清了我应该如何从事情的雄辩的一面来处理它。
Tables:
-Incidents
--references locations thru location_id
-Locations
--references areas thru area_id
-Areas
Incidents::with(array('location', function($q) use ($areaId) {
    return $q->where('area_id', $areaId);
}))->get();