Виды связей между таблицами

Связь позволяет моделировать отношения между объектами предметной области. Наименование связи должно быть уникально во всей модели.

Существует 4 типа связей:

1. «Один к одному» - любому экземпляру сущности А соответствует только один экземпляр сущности В, и наоборот.

Виды связей между таблицами

Пример 1:

 

Пример 2:

id parent_id name
1 0 Папа
2 1 Дочь

Как видим, у Папы нет родителя (Бабушек и Дедушек добавлять не будем), а у Дочери есть один родитель Папа. Таким образом, Маму и Сына мы сюда добавить не можем, иначе вид связи будет уже другим.

 
id class_id name
1 3 Сидоров
2 4 Зайцев

Сидоров учится в 3-ем классе, а Зайцев в 4-ом классе.

Чтобы не запутаться, обратите внимание, в полях id и parent_id не может быть повторений.

2. «Один ко многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, но любому экземпляру сущности В соответствует только один экземпляр сущности А.

Виды связей между таблицами

Пример 1:

 

Пример 2:

Из отпуска вернулся Сын и семья теперь в таком составе:

id parent_id name
1 0 Папа
2 1 Дочь
3 1 Сын

Как видите, id не повторяется, а parent_id повторяется, вот и получилась связь - один ко многим.

 

Сидоров закончил 3-ий класс и перешел в 4-ый, а Зайцев плохо учился и его оставили на второй год.

id class_id name
1 4 Сидоров
2 4 Зайцев

Как видите, id не повторяется, а class_id повторяется, вот и получилась связь - один ко многим. 

3. «Многие к одному» - любому экземпляру сущности А соответствует только один экземпляр сущности В, но любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А.

Виды связей между таблицами


Какая же разница между связями «один ко многим» и «многие к одному»? Такая же, как между фразами «родители детей» и «дети родителей». То есть важно, кто во взаимоотношении двух объектов главный.

Пример 1:

 

Пример 2:

Мы просто поменяли местами столбцы и теперь главным столбцом у нас является parent_id

parent_id id name
0 1 Папа
1 2 Дочь
1 3 Сын
 

Мы просто поменяли местами столбцы и теперь главным столбцом у нас является class_id

class_id id name
4 1 Сидоров
4 2 Зайцев

Если при определении связи вам сложно выделить подчиненность, то вывод только один: вы плохо разобрались в предметной области.

4. «Многие ко многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, и любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А.

Виды связей между таблицами

Такой тип связи очень широко распространен, так как описывает реальные непростые жизненные отношения.

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

id name
1 Папа
2 Мама
3 Сын
 
id parent_id
1 0
2 0
3 1
3 2
 
 
 

Пример 2: Наши ученики учатся у нескольких преподавателей. И каждый преподаватель работает со многими учениками.

ФИО учителя Код учителя
Иванов 1
Петров 2
 
Код учителя Код ученика
1 1
1 2
2 2
2 1

Как видим, таблицы учеников и учителей связаны между собой не напрямую, а через таблицу - коммутатор, в которой задается, какой код учителя соответствует ученику.

Обратите внимание, в связующих таблицах повторяются значения как слева, так и справа, таким образом понимаем, наша связь - многие ко многим.

Источники: 1 - 2

Оцени публикацию:
  • 14,58
Оценили человек: 14

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » MySQL »