После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-07-11
Основы Баз Данных → Простые связи
Отношение один к одному, Один к многим

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

Простые связи

В случае простого отношения «один к одному» достаточно одной таблицы. Примером такой связи может служить адрес электронной почты для каждого ав­тора в таблице material (см. предыдущие уроки). Поскольку все авторы имеют по одному адресу и у каждого адреса есть только один владелец, то выделять информацию об электронной почте в отдельную таблицу нет смысла.

Но и у этого правила есть исключения. Например, если таблица становится слишком объемной и содержит множество столбцов, которые редко используются в запросах с командой SELECT, то имеет смысл выделить такие столбцы в отдельную таблицу. Скорость выполнения запросов в уменьшенной таблице увеличится.

Допустим, вы хотите, чтобы каждый автор в нашей базе данных («один») имел несколько адресов электронной почты («много»). Когда за проектирование такой модели берется новичок, не имеющий опыта работы с базами данных, первая мысль, которая приходит ему в голову, — попытаться сохранить несколько значений в од­ном поле таблицы.

Такой подход сработает. Однако, чтобы извлечь из базы данных отдельный адрес, вам придется разбивать полученную строку по запятым (или по другим спе­ циальным символам, используемым в качестве разделителя), что не так уж просто и отнимает много времени. А теперь представьте себе PHP-код для удаления какого-то одного адреса у конкретного автора! Кроме того, вам понадобится увеличить мак­ симальную длину значений для столбца email, что приведет к бесполезной трате дискового пространства, так как у большинства авторов будет только один адрес.

Снова вернемся к тому, что отношение «один ко многим» — это всего лишь обратное восприятие отношения «многие к одному», с которым вы уже имели дело в случае с материалами и авторами. Следовательно, решение проблемы похоже: необходимо выделить новые сущности (в нашем случае это адреса электронной почты) в отдельную таблицу.

Применив к такой структуре базы данных оператор JOIN, вы с легкостью вы­делите адреса, связанные с конкретным автором.

SELECT email
FROM author INNER JOIN email
   ON authorid = author.id
WHERE name = "Name Author"
419
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока