我打破了如何在数据库和ORM(Doctrine,在我的例子中)建立一个简单的城市和道路系统的模型。
在我的简化系统中,每条道路都连接两个城市。
我希望每个城市都有一条道路"属性,但不能包围我的头围如何建模反面,道路实体。我可以用多对多的关系建模它,但当我知道一条道路总是有两个城市时,这不是废话吗?但是如果我使用两个多对一(城市可以有很多道路)的关系,我在城市也有两个属性(例如,进入和离开的道路)。
我无法在搜索中找到解决方案,所以我现在就在这里问。
答案 0 :(得分:2)
正如Nic所说:“表1:城市。表2:道路。在道路表中,您有2个FK,这是道路的两个端点。请勿将道路链接到城市,否则将其连接绕开”。
或者,考虑如何打算 强制 ,确保每条道路上确实都有“两边的城市”?您所使用的mn的外键仅确保它会成为城市 (如果已提供) ,而不是一个城市 必须 < / strong>(更不用说必须提供 两个 )。
ORM以使用户失去SQL确实提供的许多表达能力而闻名(例如,祝您好运,在ORM中对ROADS表进行传递闭包)。如果是这种情况,这就是离开ORM路径并使用SQL的原因。选择适合工作的工具。
如果您正在寻找如何使自己的生活变得最简单的方式(“该解决方案在学说中效果更好”),那么您的眼光却是错误的。