下面是表格的外观,
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是12Transport (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%
所以我想知道如何扩展数据库表以便也存储这种值。我的方法是采用两个单独的表
UserPlaceTransportBasic
和UserPlaceTransportAdvanced
因此,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表中,但这是过早的优化,所以我不会这样做。
有帮助吗?