ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Базы данных
Добавлен: 28.11.2018
Просмотров: 7741
Скачиваний: 53
36
второй сущности, а каждому экземпляру второй сущности соот-
ветствует только один экземпляр первой сущности.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
В таком случае первую сущность называют родительской, а вторую – до-
черней.
Пример связи 1:М подробно рассмотрен на рисунке 2.3. Очевидно, что
сущности «Студент» и «Группа» связаны друг с другом следующим образом:
• в каждой группе может обучаться много студентов;
• каждый студент может обучаться только в одной группе.
Рис. 2.3 – Пример связи 1:М между таблицами
Получается, что одному экземпляру сущности «Группа», например груп-
пе 116, будет соответствовать несколько экземпляров сущности «Студент», т. е.
студенты Иванов и Белов. Согласно определению этот вид связи является свя-
зью 1:М. Сущность «Группа» выступает здесь в качестве родительской сущно-
сти, а сущность «Студент» – дочерней. Отметим, что каждая сущность может
выступать и в роли дочерней, и в роли родительской одновременно, так как
может одновременно быть связанной со многими сущностями (рис. 2.3).
В базе данных связь 1:М исполняется с помощью первичных и внешних
ключей, когда поле, являющееся первичным ключом родительской сущности,
НФ (ПК) Полное название
Декан
ЭТ
Факультет электронной техники
Сергеев А. А.
Эконом. Экономический факультет
Серов И. И.
«Факультет»
Группа (ПК) Специальность
Факультет (ВК)
116
Электронная техника
ЭТ
445
Менеджмент
Эконом.
«Группа»
ВС
Факультет вычислительных систем
Котов В. В.
598
Информационные системы
ВС
599
Информационные системы
ВС
37
связывается с неключевым атрибутом дочерней сущности, который и становит-
ся внешним ключом. В базах данных связь вида 1:М является самой распро-
страненной.
2.3.3 Связь «многие-ко-многим»
Данный вид связи обозначается как М:М или M:N.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Связь «многие-ко-многим» означает, что каждому экзем-
пляру первой сущности может соответствовать несколько экзем-
пляров второй сущности, а каждому экземпляру второй сущности
может соответствовать несколько экземпляров первой сущности.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
В качестве примера рассмотрим связь между сущностями «Группа» и
«Предмет». Очевидно, что у каждой учебной группы имеются занятия по раз-
ным предметам, т. е. одному экземпляру сущности «Группа» соответствует не-
сколько экземпляров сущности «Предмет». Кроме того, по каждому предмету
занятия могут проходить у разных групп, т. е. одному экземпляру сущности
«Предмет» также соответствует несколько экземпляров сущности «Группа». На
рисунке 2.4 в качестве примера связи М:N изображено два отношения «Группа»
и «Предмет», описывающие данные сущности и хранящие информацию об эк-
земплярах. В данном случае приведена ситуация, когда у группы 116 есть заня-
тия по предметам «Экономика» и «Физика», а предмет «Базы данных» изучает-
ся группами 445 и 598.
Рис. 2.4 – Пример связи М:N между сущностями
Однако на представленном рисунке нет реализации самой связи между
отношениями с помощью первичных и внешних ключей, а указаны лишь запи-
си, которые должны быть связаны по смыслу.
В реляционной модели для реализации связей такого вида используют
дополнительную таблицу, в которой, по сути, и указывается – какой экземпляр
Группа (ПК) Специальность
...
116
Электронная техника
445
Менеджмент
«Группа»
598
Информационные системы
Предмет (ПК) Курс
Базы данных
2
Экономика
4
«Предмет»
Физика
1
38
одной сущности связан с каким экземпляром второй сущности. На рисунке 2.5
приведено решение, позволяющее реализовать подобную ситуацию.
Рис. 2.5 – Реализация связи М:N в БД
В третьей таблице происходит сопоставление экземпляров обеих сущно-
стей друг с другом. При этом каждая из исходных таблиц является родитель-
ской для третьей и связана с ней связью 1:М, а первичный ключ каждой из ро-
дительских таблиц становится частью составного ключа в новой подчиненной
таблице. Более подробно особенности реализации связей в БД будут рассмот-
рены в главе 5.
2.3.4 Управление связанными записями в БД
Среди рассмотренных видов связи в базе данных в большинстве случаев
используется только связь 1:М. Связь 1:1 используется редко, ведь чаще всего
проектировщик объединяет атрибуты сущностей в единое отношение. Связь
М:N также преобразовывается в 2 связи типа 1:М. Таким образом получается,
что практически все связи в спроектированной базе данных относятся к виду
1:М.
При связывании таблиц любая СУБД в дальнейшем производит так назы-
ваемый контроль целостности данных. Он включает в себя следующие прави-
ла:
Группа (ПК) Специальность
...
116
Электронная техника
445
Менеджмент
«Группа»
598
Информационные системы
Предмет (ПК) Курс
Базы данных
2
Экономика
4
«Предмет»
Физика
1
Группа (ПК) Предмет (ПК) Преподаватель Часы
116
Физика
Бурков А. В.
90
116
Экономика
Трошин В. С.
68
445
Базы данных
Марков К. Т.
98
598
Базы данных
Марков К. Т.
102
39
• каждому экземпляру (записи) родительской таблицы может соответ-
ствовать ноль, одна или более записей дочерней таблицы;
• каждому экземпляру дочерней таблицы соответствует только один эк-
земпляр родительской таблицы;
• в дочерней таблице не может быть экземпляров без соответствующего
экземпляра в родительской.
Данные правила распространяются на все операции с данными в дочер-
них и родительских таблицах и позволяют избежать ситуаций потери или ис-
кажения данных, нарушающих полноту и целостность БД. Во многих случаях
проектировщик имеет возможность настраивать подобные правила для различ-
ных ситуаций или, например, отключать контроль целостности, но тогда ответ-
ственность за корректное содержимое в базе данных будет нести он сам.
Рассмотрим наиболее типичные ситуации при операциях с данными.
При добавлении новых записей в таблицы БД важно понимать, что необ-
ходимо первоначально добавлять записи в родительскую таблицу, а затем –
в дочернюю. В обратном случае возникнет ситуация, когда добавляемые записи
не будут иметь связанных записей, а потому их добавление может быть просто
заблокировано.
Изменение данных в записях связанных таблиц также контролируется
СУБД. Если поля не участвуют в связях, т. е. не являются ни первичными, ни
внешними ключами, то здесь происходит стандартный контроль, например, на
соответствие типу данных. Если поле является внешним ключом в дочерней
таблице, важно, чтобы после изменения его значения у него по-прежнему оста-
лась связанная запись в родительской таблице. Другими словами, дочерняя за-
пись может поменять «родителя», но остаться без него она не должна.
В ситуации изменения первичного ключа родительской таблицы возмож-
ны следующие ситуации:
• если у записи родительской таблицы нет соответствующих записей в
дочерней таблице, тогда изменение можно производить;
• если у записи родительской таблицы есть соответствующие записи в
дочерней таблице, тогда изменение будет заблокировано процессором
СУБД, т. к. в противном случае связанные записи в дочерней таблице
будут связаны с несуществующей записью;
• если у записи родительской таблицы есть соответствующие записи в
дочерней таблице, тогда изменение можно произвести в случае, когда
включено так называемое каскадное изменение данных. Это значит,
40
что новое значение первичного ключа родительской таблицы будет
присвоено всем внешним ключам связанных записей дочерней табли-
цы вместо старого измененного значения.
Удаление записей дочерней таблицы можно производить по своему
усмотрению, не обращая внимание на записи родительской таблицы. Очевидно,
что запись родительской таблицы может не иметь ни одной связанной записи в
дочерней таблице.
В обратном случае, т. е. при удалении записи в родительской таблице,
возникает ситуация, аналогичная той, которая происходит при изменении дан-
ных:
• если у записи родительской таблицы нет соответствующих записей в
дочерней таблице, тогда удаление можно производить;
• если у записи родительской таблицы есть соответствующие записи в
дочерней таблице, тогда удаление будет заблокировано процессором
СУБД, т. к. в противном случае связанные записи в дочерней таблице
будут связаны с несуществующей записью;
• если у записи родительской таблицы есть соответствующие записи в
дочерней таблице, тогда удаление можно произвести в случае, когда
включено так называемое каскадное удаление данных. Это значит, что
вместе с удалением записи родительской таблицы произойдет удале-
ние всех связанных записей дочерней таблицы.
2.4 Реляционные СУБД
В настоящее время большинство из представленных на рынке СУБД ис-
пользуют реляционную модель данных. Наиболее популярными из них являют-
ся MySQL, PostgreSQL, Microsoft SQL Server, Oracle, Interbase, Firebird, Mi-
crosoft Access и т. д. В данном пособии особое внимание уделено СУБД
Microsoft Access и MySQL как наиболее доступным и простым при первона-
чальном использовании. Данные продукты позволят на практике закрепить
представленные в пособии теоретические основы баз данных.
2.4.1 Microsoft Access
СУБД Microsoft Access является системой управления реляционной базой
данных, включающей все необходимые инструментальные средства для созда-
ния локальной базы данных, общей базы данных в локальной сети с файловым
сервером или базы данных на SQL-сервере, а также для создания приложения