[英]Table with one to many relationship or many to many?
下面是表格的外观,
Place (id, name) i.e 1,Work | 2,Home | 3,College [lookup table]
UserPlace (id, placeId, contryId, userId)
即1,2,1,12表示,id为1,地点为工作地点,contry为澳大利亚。 用户ID是12
Transport (id, name) i.e 1,Bus | 2,Train | 3,Cycle [lookup table]
UserPlaceTransport (userPlaceId, transportId, distance)
该表的样本数据,属于一个用户。
1,1,10km -UserPlace id是1,正在工作,Transpory方式是乘公共汽车。 距离是10km
1,2,20km -UserPlace id是1,这是工作,Transpory方式是乘火车。 距离是20公里
1,3,70km -UserPlace id为1,有效,Transpory方式为Cycle。 距离是70km
2,3,50km -UserPlace id是2,这是家,Transpory方式是按Cycle。 距离是50km
4,3,40km -UserPlace id是3,是大学,Transpory方式是按Cycle。 距离是40km
根据这种结构,UserPlaceTransport表中存在一些混乱。 也就是说,也可以将所有3个userPlaces的值一起获取。 这意味着,用户已经接触到了这么多公里的所有三个区域(工作,大学,家庭)。 即乘公共汽车20%,乘火车60%和乘自行车20%
但是当前的表结构仅适用于其他方式,即工作,乘公共汽车10%,乘火车90%..对于大学-乘公共汽车50%,乘自行车50%
所以我想知道如何扩展数据库表以便也存储这种值。 我的方法是采用两个单独的表UserPlaceTransportBasic
和UserPlaceTransportAdvanced
因此, UserPlaceTransportBasic
与UserPlaceTransportAdvanced
表相同,而UserPlaceTransportBasic如下所示,
UserPlaceTransportBasic (userId, transportId, distance)
这样可以UserPlaceTransportBasic (userId, transportId, distance)
混乱。
我想知道是否有更好的解决方案来处理这种情况。 我的意思是不创建两个单独的表,但只有一个表。
谢谢
您说:
根据这种结构,UserPlaceTransport表中存在一些混乱。 也就是说,也可以将所有3个userPlaces的值一起获取。 这意味着,用户已经接触到了这么多公里的所有三个区域(工作,大学,家庭)。 即乘公共汽车20%,乘火车60%和乘自行车20%
我看不到这一点:UserPlaceTransport指定了UserPlace和Transport,因此没有重复或混乱。
但是,此表还有另一个问题:它有旅程的终点,但没有另一终点:如果UserPlace是Work,那是离大学或家的距离? 这可以通过添加另一个字段来解决,该字段指向所涉及的第二个UserPlace。 更好的解决方案是添加一个Journey表(id,FromUserPlaceid,ToUserPlaceId),并使用Journey表代替UserPlaceTransport表。
还是您的问题是旅途可能涉及多种运输方式? 如果是这样,请从UserPlaceTransport(或Journey)表中取出距离和TransportId,并添加表UserPlaceTransportSection(id,UserPlaceId,TransportId,距离)。 您可以根据需要将总距离保留在UserPlaceTransport表中,但这是过早的优化,所以我不会这样做。
有帮助吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.