Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в реляционные базы данных и язык SQL..pdf
Скачиваний:
10
Добавлен:
15.11.2022
Размер:
1.53 Mб
Скачать

Номер

Название

 

Город

Капитал

Номер

Название

Сорт

фирмы

 

продукта

 

 

 

1

Интер

Москва

4 000 000

1

Икра

1

2

Аврора

С.-Петербург

5 000 000

2

Икра

2

3

Дапьрыба

Владивосток

1300 000

3

Спагетти

1

4

Вита

Москва

700 000

4

Апельсины

2

 

 

Склад

 

 

 

 

 

 

 

Номер

Номер

Номер

Количество

 

 

 

 

партии

фирмы

продукта

 

 

 

 

 

 

 

 

 

1

1

3

100

 

 

 

 

2

2

4

200

 

 

 

 

3

3

1

450

 

 

 

 

4

3

2

80

 

 

Рис. 1. Реляционная база данных "Поставки"

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

Повторяющаяся группа [4] - это столбец, который содержит множество значений данных в одной или нескольких строках, вместо ровно одного значения в каждой строке (рис. 2).

Склад

 

Продукт

 

Номер

Номер

Название

Сорт

фирмы

продукта

 

 

2

4

Икра

1,2

3

1,2

Спагетти

1

Рис. 2. Примеры повторяющихся групп

2. Целостность реляционных данных

2.1. Ключи

Согласно математическому определению множество не содержит совпадающих элементов. В соответствии с этим таблица как множество строк в произвольный момент времени не может содержать строки, являющиеся дубликатами друг друга. Поэтому каждая таблица РБД обязательно содержит один или несколько столбцов, все значения или комбинации значений которых различны. Такой столбец или совокупность столбцов называется первичным ключом (primary key, обозначается pk). Например, столбец "Номер фирмы"

является первичным ключом таблицы "Фирма", столбец "Номер продукта" - это первичный ключ таблицы "Продукт", а столбец "Номер партии" - первичный ключ таблицы "Склад" (рис. 1).

Дадим общее определение ключа [4].

Пусть Г - таблица со столбцами Аи А2, ..., А„. Говорят, что множество столбцов А,у Aj, ..., Ак таблицы Г является возможным ключом тогда и только тогда, когда удовлетворяются два независящих от времени условия: уникальность и минимальность.

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

Минимальность предполагает, что ни один из столбцов Ait Aj, ..., Ак не может быть изъят из ключа без нарушения условия уникальности.

Втаблице "Продукт" (рис. 1) можно выделить ключ, состоящий из столбцов "Название" и "Сорт"

Втаблице "Склад" (рис. 1) можно выделить ключ, состоящий из трех столбцов: "Номер фирмы", "Номер продукта" и "Количество" Однако эта триада не будет удовлетворять условию минимальности, так как для образования ключа достаточно двух столбцов: "Номер фирмы" и "Номер продукта".

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

Рассмотрим столбец "Номер фирмы" таблицы "Склад" (рис. 1). Ясно, что появление некоторого значения этого столбца, например 2, должно допускаться, только если это значение есть в столбце первичного ключа "Номер фирмы" таблицы "Фирма" В противном случае нельзя считать, что РБД находится в целостном состоянии. Например, в столбце "Номер фирмы" таблицы "Склад" в данный момент не может быть значения 7, так как в таблице "Фирма" нет строки со значением первичного ключа 7.

Столбец "Номер фирмы" в таблице "Склад" является внешним ключом.

Вобщем случае внешний ключ (foreign key, обозначается fk) - это столбец

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

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

2.2. Правила целостности

Сформулируем два правила целостности для РБД [4].

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

Содержимое строк таблицы соответствует некоторым объектам реального мира. Например, строки таблицы "Фирма" (рис. 1) содержат данные о реальных поставщиках продуктов. Таким образом, если целостность по сущностям нарушена и первичный ключ не определен (имеет значение null для одной или нескольких строк), то это, по существу, эквивалентно отсутствию индивидуальности у объектов реального мира.