Реклама:

Подобно связи "один-ко-многим", связь "один-к-одному" может быть жесткой и нежесткой.

8.1.1.3. Отношение "многие-ко-многим"

На рис. 8.3 показаны таблицы, состоящие в отношении "многие-ко-многим". Каждой учебной группе соответствует несколько преподавателей. Каждый преподаватель может вести, во-первых, несколько разных предметов и, во-вторых, преподавать в разных группах.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

Многие СУБД не поддерживают связи "многие-ко-многим" на уровне индексов и ссылочной целостности (см. следующий подраздел), хотя и позволяют реализовывать ее в таблицах неявным образом. Считается, что базу данных можно перестроить так, чтобы любая связь "многие-ко-многим" была заменена на одну или более связей "один-ко-многим".

8.1.1.4. Связи между записями одной таблицы

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

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

Департамент автоматизации Техническое управление

Отдел сетевого оборудования

Ремонтный отдел

АТС

Управление программными системами Отдел эксплуатации

Информационная группа Административная группа Диспетчерское бюро Отдел разработки рис. 8.4

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

M подразделения

Название подразделения

M подразделения предыдущего уровня

Департамент автоматизации

 

Техническое управление

Управление разработки и эксплуатации программных систем

Отдел сетевого оборудования

Ремонтный отдел

АТС

Отдел эксплуатации

Отдел разработки

Информационная группа

Административная группа

Диспетчерское бюро

рис. 8.5

8.1.2. Ссылочная целостность

Рассмотрим наиболее часто встречающуюся в базах данных связь "один-ко-многим". Соответствующие таблицы показаны на рис. 8.6. Как можно заметить, дочерняя и родительская таблицы связаны между собой по общему полю Товар. Назовем это поле полем связи.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 8.6

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

• изменение значения поля связи в записи родительской таблицы без изменения значений полей связи в соответствующих записях дочерней таблицы;

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

Рассмотрим первый случай. На рис. 8.7 показано изменение значения поля Товар с Сахар на Рафинад в таблице Товары. В таблице Отпуск товаров значение поля связи Сахар осталось прежним. В результате:

• в дочерней таблице Отпуск товаров для товара Рафинад (таблица Товары) нет сведений о его отпуске со склада;

• некоторые записи таблицы Отпуск товаров содержат сведения об отпуске товара Сахар, о котором нет информации в таблице Товары.


⇐ Предыдущая страница| |Следующая страница ⇒