Рамиля Рамисовна Латыпова

Базы данных. Курс лекций. Учебное пособие


Скачать книгу

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

      В общем случае в качестве первичного ключа выгоднее использовать семантически незначащее (не несущее смысловой нагрузки) поле (счетчик), с помощью которого каждая запись получает уникальный номер.

      Первичный ключ является разновидностью более общего понятия потенциального ключа, т. е. ключа, который может быть выбран в качестве первичного.

      Между двумя и более таблицами БД могут существовать отношения подчиненности. Это означает, что для каждой записи главной таблицы (родительской, или мастер-таблицы (англ.: master)) может существовать одна или несколько записей в подчиненной (или детальной (англ.: detail)) таблицы.

      Связывание таблиц выполняется для устранения избыточности информации.

      Существуют три разновидности связей между таблицами:

      1. Связь «один-ко-многим» (или «многие-к-одному»);

      2. Связь «один-к-одному»;

      3. Связь «многие-ко-многим».

      Связываемые поля не обязательно должны иметь одинаковые имена, но они должны иметь одинаковые типы данных.

      Отношение «один-ко-многим» является самым распространенным, оно моделирует иерархию данных.

      Рассмотрим пример, когда одной записи в родительской таблице соответствует несколько записей в дочерней таблице (рис. 6). В этом примере одной записи в родительской таблице «Товары» соответствует несколько записей в дочерней таблице «Отпуск товаров».

      Отношение «один-к-одному» применяется тогда, когда стремятся сократить объем информации в одной таблице или защитить часть информации от доступа. Но здесь приходится выполнять больше операций чтения при извлечении связанных данных. В этом случае одной записи в главной таблице соответствует одна запись в подчиненной таблице (рис. 7).

      

      Рис. 6. Связь «один-ко-многим»

      

      Рис. 7. Связь «один-к-одному»

      Такие связи также могут быть жесткими и нежесткими.

      Рассмотрим отношение «многие-ко-многим». В этом случае возможны два варианта:

      записи в родительской таблице соответствует более одной записи в дочерней таблице;

      записи в дочерней таблице соответствует более одной записи в родительской таблице.

      Пример приведен на рис. 8.

      

      Рис. 8. Связь «многие-ко-многим»

      Здесь имеется в виду, что один преподаватель читает разные курсы, а один и тот же курс могут читать разные преподаватели.

      Любая связь «многие-ко-многим» может быть заменена на одну или более связей «один-ко-многим». Для этого нужно ввести промежуточную таблицу (рис. 9).

      

      Рис. 9. Преобразование связи «многие-ко-многим»

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

      Рассмотрим наиболее часто встречающуюся связь «один-ко-многим». Пример приведен на рис. 10.

      

      Рис. 10. Пример связывания таблиц

      Эти