Связь позволяет моделировать отношения между объектами предметной области. Наименование связи должно быть уникально во всей модели.
Существует 4 типа связей:
1. «Один к одному» - любому экземпляру сущности А соответствует только один экземпляр сущности В, и наоборот.

|
Пример 1: |
Пример 2: |
|||||||||||||||||||
Как видим, у Папы нет родителя (Бабушек и Дедушек добавлять не будем), а у Дочери есть один родитель Папа. Таким образом, Маму и Сына мы сюда добавить не можем, иначе вид связи будет уже другим. |
Сидоров учится в 3-ем классе, а Зайцев в 4-ом классе. |
Чтобы не запутаться, обратите внимание, в полях id и parent_id не может быть повторений.
2. «Один ко многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, но любому экземпляру сущности В соответствует только один экземпляр сущности А.

|
Пример 1: |
Пример 2: |
||||||||||||||||||||||
|
Из отпуска вернулся Сын и семья теперь в таком составе:
Как видите, id не повторяется, а parent_id повторяется, вот и получилась связь - один ко многим. |
Сидоров закончил 3-ий класс и перешел в 4-ый, а Зайцев плохо учился и его оставили на второй год.
Как видите, id не повторяется, а class_id повторяется, вот и получилась связь - один ко многим. |
3. «Многие к одному» - любому экземпляру сущности А соответствует только один экземпляр сущности В, но любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А.

Какая же разница между связями «один ко многим» и «многие к одному»? Такая же, как между фразами «родители детей» и «дети родителей». То есть важно, кто во взаимоотношении двух объектов главный.
|
Пример 1: |
Пример 2: |
||||||||||||||||||||||
|
Мы просто поменяли местами столбцы и теперь главным столбцом у нас является parent_id
|
Мы просто поменяли местами столбцы и теперь главным столбцом у нас является class_id
|
Если при определении связи вам сложно выделить подчиненность, то вывод только один: вы плохо разобрались в предметной области.
4. «Многие ко многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, и любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А.

Такой тип связи очень широко распространен, так как описывает реальные непростые жизненные отношения.
|
Пример 1: представим, что с командировки вернулась Мама, а Дочь уехала в отпуск (мы получили таблицу изображенную слева). Как Вы понимаете, теперь Сыну нужно указать второго родителя, и сделать это в той же таблице было бы неправильно, поэтому делаем отдельную связывающую таблицу (изображенную справа).
|
Пример 2: Наши ученики учатся у нескольких преподавателей. И каждый преподаватель работает со многими учениками.
Как видим, таблицы учеников и учителей связаны между собой не напрямую, а через таблицу - коммутатор, в которой задается, какой код учителя соответствует ученику. |
Обратите внимание, в связующих таблицах повторяются значения как слева, так и справа, таким образом понимаем, наша связь - многие ко многим.
Комментарии