下面给出了表格的样子,
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方式为Bus。距离是10km
1,2,20km - UserPlace id为1,即工作,Transpory方式为Train。距离是20km
1,3,70km - UserPlace id为1,即工作,Transpory方式为Cycle。距离是70km
2,3,50km - UserPlace id为2,即home,Transpory方式为Cycle。距离是50km
4,3,40km - UserPlace id为3,即大学,Transpory方式为Cycle。距离是40km
根据这种结构,UserPlaceTransport表中存在一些小混淆。也就是说,还有获得价值的可能性 对于所有3个userPlaces在一起。这意味着,用户已达到这三公里的所有三个(工作,大学,家庭)。即20%的公共汽车,60%的火车和20%的循环
但目前表格结构仅适用于其他方式,即工作,公交车10%,火车90%..大学 - 公交车50%,周期50%
所以我想知道如何扩展数据库表以便存储这种类型的值。我的方法是采用两个单独的表格UserPlaceTransportBasic
& UserPlaceTransportAdvanced
因此,UserPlaceTransportAdvanced将与之前相同,而UserPlaceTransportBasic将如下所示,
UserPlaceTransportBasic (userId, transportId, distance)
所以这清除了混乱。
我想知道有没有更好的解决方案来处理这种情况。我的意思是没有创建两个单独的表但只有一个表。
由于
答案 0 :(得分:1)
你是这样的:
根据这种结构,有一个小混乱 UserPlaceTransport表。也就是说,也有可能 获取所有3个userPlaces的值。这意味着,用户拥有 达到了这三公里(工作,大学,家庭)的这么多公里。即乘公共汽车 20%,火车60%,循环20%
我没有看到:UserPlaceTransport指定UserPlace和Transport,因此没有重复或混淆。
这张桌子还有另一个问题:它有一个旅程的一端,但没有另一个:如果UserPlace是工作是从大学或家里的距离?这可以通过添加指向所涉及的第二个UserPlace的另一个字段来解决。更好的解决方案是添加Journey表(id,FromUserPlaceid,ToUserPlaceId)并使用Journey表而不是UserPlaceTransport表。
或者您的问题是旅程可能涉及多种运输方式?如果是这样,请将距离和TransportId取出UserPlaceTransport(或Journey)表并添加表UserPlaceTransportSection(id,UserPlaceId,TransportId,distance)。你可以在UserPlaceTransport表中保留总距离,但这有点过早优化,所以我不愿意。
这有帮助吗?