我的问题与循环关系有关,我需要解决数据库模式以进行最佳实践,它将用于跟踪车辆系统
我的问题描述:
- 一条路线可以包含一个或多个栅栏,一个栅栏可以包含一个或多个路线
- 一条路线分配了一些车辆(考虑车辆可能是部分或其他路线)
- 当包含围栏的路线分配了车辆时,我需要控制车辆何时通过围栏;那么我需要存储是否将在每辆车上设置围栏以比较车辆何时进入围栏
我已经通过这些方式解决了这个问题,但我不确定这是一个好的做法,如果不是,哪一个是这个问题的最佳做法?
我的问题与循环关系有关,我需要解决数据库模式以进行最佳实践,它将用于跟踪车辆系统
我的问题描述:
我已经通过这些方式解决了这个问题,但我不确定这是一个好的做法,如果不是,哪一个是这个问题的最佳做法?
1 - 一条路线可以包含一个或多个栅栏,一个栅栏可以包含一个或多个路线
Route --< RouteFenceRelationship >-- Fence
"RouteFenceRelationship"
PK RouteFenceRelationshipId
FK RouteId
FK FenceId
多对多关系不能很好地工作,我强烈建议使用关系表来定义哪些路由包含哪些栅栏。
2 - 路线分配了一些车辆(考虑车辆可能是部分或其他路线)
Vehicle --< VehicleRouteRelationship >-- Route
"VehicleRouteRelationship"
PK VehicleRoutRelationshipId
FK VehicleId
FK RouteId
同样在这里,关系表避免了多对多关系带来的问题。
3 - 当包含围栏的路线分配了车辆时,我需要控制车辆何时通过围栏;那么我需要存储是否将在每辆车上设置围栏以比较车辆何时进入围栏
Fence --< FenceVehiclePassEvent >-- Vehicle
"FenceVehiclePassEvent"
PK FenceVehiclePassEventId
FK FenceId
FK VehicleId
Timestamp
我不太了解您的第三点,但是您可以在此表中添加一个条目,包括车辆、围栏和经过的时间。那是你要找的吗?