Существует три объекта: GrandParent, Parent и Child
- GrandParent содержит grandParentId
- Parent содержит объект GrandParent, parentId, некоторые атрибуты и список Child.
- Child содержит childId и некоторые атрибуты.
Существует четыре таблицы: GrandParent, Parent, Child, ParentsChildrenList
- GrandParent, первичный ключ которого - {grandParentId}
- Родитель, чей первичный ключ - {grandParentId, parentId}
- Дочерний, чей первичный ключ - {grandParentId, childId}
- ParentsChildrenList, первичный ключ которого - {grandParentId, parentId, childId}
Родитель и ребенок идентифицируются с помощью составных ключей.
Как должны отображаться эти отношения?Обратите внимание, что объект Child не содержит ссылки на Parent или GrandParant, однако таблица Child использует grandParentId как часть своего первичного ключа.
Эта структура таблиц удовлетворяет сценариям использования.Однако сопоставление не является простым.Любое понимание дизайна приветствуется.
[--- Обновление 1 ---]
Я добавил объект GrandParent к Child и создал составной ключ ChildId для сопоставления с таблицами.
Вопрос остается:Может ли Child позаимствовать часть своего идентификатора у Parent?Таким образом, мне не нужно вводить GrandParent в Child исключительно для постоянства.
[--- Update 2 ---]
Я удалил объект GrandParent из Child, но сохранилChildId и метод, который позволяет установить grandParentId.Вещи все еще работают, как ожидалось.Я подозреваю, что это не может быть уменьшено дальше.