0

Мой вопрос связан с отношениями с циклом, когда мне нужно решить схему базы данных для того, чтобы сделать лучшую практику, она будет использоваться в системе отслеживания транспортных средствВероятно отношения базы данных цикла

Мое описание проблемы:

  1. маршрут может содержать или более заборы и ограды Коула содержаться один или несколько маршрутов
  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

Смежные вопросы