0

我的問題是關係到一個週期的關係,在這裏,我需要解決,以做最好的做法數據庫模式,它會跟蹤車輛系統上使用大概數據庫關係週期

我的問題描述:

  1. 路線可能包含一個或多個圍欄,和一個圍欄的Coul由一個或多個路由
  2. 路線已經分配一些車輛被包含(考慮車輛可以是部分或其他途徑)
  3. 當路線,其中包含圍牆,有車輛分配,我需要控制車輛通過圍欄時,那麼我需要存儲,如果一個圍欄將設置在每輛車上比較當車輛進入圍欄

我已經解決了這個問題,但我不知道這是一個很好的做法,如果不是,哪一個將是這個問題的最佳實踐?

cycle problem

回答

0

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 

我真的不明白你的第三點內搞定,但你可以在此添加一個條目車輛,籬笆和通過的時間。那是你在找什麼?

+0

首先感謝您爲ManyToMany使用關係表,但是我想確定我的邏輯思路是否可以,以及您解釋沒問題,但是,這個方案是一個很好的做法嗎? – Carlos

+0

好的,我明白你的意思了。你的腦袋在如何設計這個問題上掙扎,因此它不是循環的。我不認爲這個例子應該給出任何問題,因爲它們不是全部'有'關係;車輛圍欄關係更像是一個事件。真正的答案是,我不知道這是否是最佳做法,但更經常的是,如果這樣做合乎邏輯,那就沒問題。也許其他人可以關注一些情況 –

+0

如果路線,護欄和車輛是您的模型中可共享的「實體」,那麼您不能使用不同的設計。唯一的另一種方法是對錶進行非規範化,這對於表的可擴展性和一致性來說是一個壞主意。 – user1759572