UserPlaceTransportBasic

UserPlaceTransportBasic

下面是表格的外观,

Place (id, name) i.e 1,Work | 2,Home | 3,College [lookup table]


UserPlace (id, placeId, contryId, userId)即1,2,1,12表示id是1,工作地点是工作,澳大利亚是澳大利亚。用户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方式是按周期。距离是40km

根据这种结构,UserPlaceTransport表中存在一些混乱。也就是说,也有获取价值的可能性
对于所有3个userPlaces。这意味着,用户已经接触到了这么多公里的所有三个区域(工作,大学,家庭)。即乘公共汽车20%,乘火车60%和乘自行车20%

但是目前的表格结构仅适用于其他方式,即适合工作,乘公共汽车10%,乘火车90%..用于大学-乘公共汽车50%,乘自行车50%

所以我想知道如何扩展数据库表以便也存储这种值。我的方法是采用两个单独的表UserPlaceTransportBasicUserPlaceTransportAdvanced
因此,UserPlaceTransportAdvanced与之前的相同,而UserPlaceTransportBasic如下所示,

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表中,但这是过早的优化,所以我不会这样做。

有帮助吗?

10-08 02:07