Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных ( 2012).doc
Скачиваний:
9
Добавлен:
25.11.2019
Размер:
1.98 Mб
Скачать

Связь вида m:n

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

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

Таким образом, мы имеем две таблицы:

Бригады(Номер, Бригадир) и Судно(Трюм, Вес груза).

Первичным ключом первой таблицы является поле «Номер», а первичным ключом второй таблицы – поле «Трюм». Примеры записей таблиц приведены ниже:

Бригады

Судно

Номер

Бригадир

Трюм

Вес груза

1

Иванов

1

SPB

2

Петров

2

SPB

3

Сидоров

3

HEL

4

SPB

Для связи этих таблиц в соответствии с условием задачи необходимо:

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

Расписание(Номер, Трюм, Бригадир)

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

2. Установить связь вида 1 : М дополнительно созданной таблицы с двумя первым таблицами («Судно» и «Груз»)

В итоге в таблице «Расписание» могут быть внесены записи, удовлетворяющие условиям задачи, например:

Расписание

Трюм

Номер

Бригадир

1

1

Иванов

1

2

Петров

2

2

Петров

2

3

Сидоров

4

1

Иванов

4

2

Петров

То есть, трюм номер 1 обрабатывается двумя бригадами – бригадой номер 1 и бригадой номер 2. С другой стороны – бригада номер 2 выполняет грузовые операции как в трюме номер 1, так и в трюмах номер 2 и 4.

Ссылочная целостность реляционной базы данных

Ссылочная целостность обеспечивает выполнение свойства непротиворечивости данных, содержащихся в связанных таблицах.

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

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

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

Для основной таблицы:

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

  • Обновление. Изменение значения первичного ключа (поля связи), может привести к тому, что в дополнительной таблице появятся записи, для которых в поле связи будет значение не соответствующее ни одному из значений первичного ключа в основной таблице, то есть может привести к нарушению ссылочной целостности. Если же в дополнительной таблице не было записей ссылающихся на изменяемое значение первичного ключа – операция не нарушит ссылочной целостности.

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

Для дополнительной таблицы:

  • Добавление новой записи. Нельзя вставить запись в дополнительную таблицу, если для новой записи значение поля связи (внешнего ключа) не будет соответствовать значению первичного ключа какой-либо записи основной таблицы. Поэтому операция может привести к нарушению ссылочной целостности. В этой ситуации, необходимо предварительно добавить в основную таблицу запись с необходимым значением первичного ключа, и только после этого вносить запись в дополнительную таблицу.

  • Обновление. Если при обновлении записи в дополнительной таблице значение поля связи (внешнего ключа) будет изменено так, что в основной таблице не будет записи с таким же значением первичного ключа, то это приведет к нарушению ссылочной целостности.

  • Удаление записи. При удалении записи в дополнительной таблице ссылочная целостность никогда не нарушается.

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

  1. Обновление записей в основной таблице.

  2. Удаление записей в основной таблице.

  3. Вставка записей в дополнительной таблице.

  4. Обновление записей в дополнительной таблице.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]