У меня есть таблица с компонентами, другие заказы на работу и другие с RepairTask. Отношение задачи с компонентами 1: N, одна задача - только один компонент. И задачи имеют отношение 1: N с рабочими заказами, потому что задача может быть только в одном рабочем порядке. Взаимосвязь между компонентами и рабочими заказами N: N, поскольку одно рабочее задание может влиять на многие компоненты.тройственные отношения против цикла, что лучше?
Я хотел бы знать:
Рабочий порядок, в котором компонент отремонтированного Задача, которую получили компонент. Задача, которую я выполнил в рабочем порядке.
Для этого я думаю, что есть две опции: циклическая взаимосвязь между тремя таблицами или тройная связь между тремя таблицами.
ВАРИАНТ 1: отношения цикла
Components(IDComponent, ...)
WorkOrders(IDWorkOrder, IDComponent, ...)
Tasks(IDTask, IDComponent, IDWorkOrder, ...)
ComponetsHasWorkOrders(IDComponent, IDWorkOrder)
ВАРИАНТ 2: тройная связь
Components(IDComponent, ...)
WorkOrders(IDWorkOrder, ...)
Tasks(IDTask, ...)
CompoentsHasWorkOrdersAndTasks(IDComponent, IDWorkOrder, IDTask)
В этом втором варианте я установил, что IDTask должен быть уникальным, так как задача была только в одной работе порядок и в одном компоненте. Таким образом, я гарантирую соотношение 1: N между задачами и компонентами и 1: N между workOrders и Tasks.
Одна из проблем, которые я вижу в этом решении, заключается в том, что если я удалю рабочий порядок, например, удалю запись в CompoentsHasWorkOrdersAndTasks, поэтому я потерял связь между компонентами и задачей. Я бы изменил отношение и допустил null в поле, которое является частью первичного ключа, поэтому это не очень хорошая идея, поэтому мне нужен фиктивный порядок работы для этих случаев.
Но я не знаю, лучше ли троичные отношения или отношения цикла.
Есть любое другое решение?
Спасибо.
это не правда, что вы можете просто присоединиться к первой модели и получить ответ? – Randy