2.2.2 Связь вида 1:М
Связь 1:М имеет место в случае, когда одной записи основной таблицы соответствует несколько записей вспомогательной таблицы.
Пример 3.
Пусть имеются две связанные таблицы O2 и D2. В таблице O2 содержится информация о видах мультимедиа-устройств ПЭВМ, а в таблице D2 — сведения о фирмах-производителях этих устройств, а также о наличии на складе хотя бы одного устройства.
Таблица О2
* +
Код
|
Вид устройства
|
1
|
CD-ROM
|
2
|
CD-Recorder
|
3
|
Sound Blaster
|
Таблица D2
* + *
Код
|
Фирма-производитель
|
Наличие
|
1
|
Acer
|
да
|
1
|
Mitsumi
|
нет
|
1
|
NEC
|
да
|
1
|
Panasonic
|
да
|
1
|
Sony
|
да
|
2
|
Philips
|
нет
|
2
|
Sony
|
нет
|
2
|
Yamaha
|
да
|
3
|
Creative Labs
|
да
|
Таблица D2 имеет два ключевых поля, так как одна и та же фирма может производить устройства различных видов, В примере фирма Sony производит устройства считывания и перезаписи с компакт-дисков. Сопоставление записей обеих таблиц по полю «Код» порождает псевдозаписи вида: (1, CD-ROM, Aсег, да), (1, CD-ROM, Mitsumi, нет), (1, CD-ROM, NEC, да), (1, CD-ROM, Panasonic, да), (1, CD-ROM, Sony, да), (2, CD-Recorder, Philips, нет), (2, CD-Recorder, Sony, да) и т. д. Если свести псевдозаписи в новую таблицу, то получим полную информацию обо всех видах мультимедиа-устройств ПЭВМ, фирмах их производящих, а также сведения о наличии конкретных видов устройств на складе.
2.2.3 Связь вида М:1
Связь М:1 имеет место в случае, когда одной или нескольким записям основной таблицы ставится в соответствие одна запись дополнительной таблицы.
Пример 4.
Рассмотрим связь таблиц O3 и D3. В основной таблице O3 содержится информация о названиях деталей (named), видах материалов, из которого детали можно изготовить (vidmat), и марках материала (marka). В дополнительной таблице DЗ содержатся сведения о названиях деталей (named), планируемых сроках изготовления (data) и стоимости заказов (price).
Таблица O3
named
|
vidmat
|
marka
|
деталь 1
|
чугун
|
марка1
|
деталь1
|
чугун
|
марка2
|
деталь2
|
сталь
|
марка1
|
деталь2
|
сталь
|
марка2
|
деталь2
|
сталь
|
маркаЗ
|
детальЗ
|
алюминий
|
-
|
деталь4
|
чугун
|
марка2
|
Таблица DЗ
* +
named
|
data
|
price
|
деталь1
|
4.03.2016
|
90
|
деталь2
|
3.01.2016
|
35
|
детальЗ
|
17.11.2016
|
90
|
Деталь4
|
6.12.2016
|
240
|
Связывание этих таблиц обеспечивает такое установление соответствия между записями, которое эквивалентно образованию следующих псевдозаписей: (деталь1, чугун, марка1, 4.03.2016, 90), (деталь1, чугун, марка2, 4.03.2016, 90), (деталь2, сталь, марка1, 3.01.2016, 35), (деталь2, сталь, марка2, 3.01.2016, 35), (деталь2, сталь, маркаЗ, 3.01.2016, 35), (детальЗ, алюминий, - , 17.11.2016, 90), (деталь4, чугун, марка2, 6.12.2016, 240).
Полученная псевдотаблица может быть полезна при планировании или принятии управленческих решений, когда необходимо иметь все возможные варианты исполнения заказов по каждому изделию. Отметим, что таблица O3 не имеет ключей и в ней возможно повторение записей. Если таблицу ДЗ сделать основной, а таблицу 03 — дополнительной, получим связь вида 1:М. Поступив аналогично с таблицами 02 и. Д2, можно получить связь вида М:1. Отсюда следует, что вид связи (1:М или М:1) зависит от того, какая таблица является главной, а какая дополнительной.
2.2.4 Связь вида М:М
Самый общий вид связи М:М возникает в случаях, когда нескольким записям основной таблицы соответствует несколько записей дополнительной таблицы.
Пример 5.
Пусть в основной таблице O4 содержится информация о том, на каких станках могут работать рабочие некоторой бригады. Таблица D4 содержит сведения о том, кто из бригады ремонтников какие станки обслуживает.
Таблица О4
* *+
rabota
|
stanok
|
Иванов А. В.
|
станок1
|
Иванов А. В.
|
станок2
|
Петров Н.Г.
|
станок1
|
Петров Н.Г.
|
станокЗ
|
Сидоров В.К
|
станок2
|
Таблица D4
* * +
obslujivanie
|
stanok
|
Голубев Б.С.
|
станок 1
|
Голубев Б.С.
|
станокЗ
|
Зыков А.Ф.
|
станок2
|
Зыков А.Ф.
|
станокЗ
|
Первой и третьей записям таблицы O4 соответствует первая запись таблицы D4 (у всех этих записей значение второго поля — «станок1»). Четвертой записи таблицы O4 соответствуют вторая и четвертая записи таблицы D4 (во втором поле этих записей содержится «станокЗ»).
Исходя из определения полей связи этих таблиц можно составить новую таблицу c именем «О4+D4», записями которой будут псевдозаписи. Записям полученной таблицы можно придать смысл возможных смен, составляемых при планировании работы.
Таблица «CM+D4»
rabota
|
stanok
|
obslujivanie
|
Иванов А.В.
|
станок1
|
Голубев Б.С.
|
Иванов А.В.
|
станок2
|
Зыков А.Ф.
|
Петров Н.Г.
|
станок1
|
Голубев Б.С.
|
Петров Н.Г.
|
станокЗ
|
Голубев Б.С.
|
Петров Н.Г.
|
станокЗ
|
Зыков А.Ф.
|
Сидоров В.К
|
станок2
|
Зыков А.Ф.
|
Приведенную таблицу можно использовать, например, для получения ответа на вопрос: «Кто обслуживает станки, па которых трудится Петров Н.Г?». Очевидно, аналогично связи 1:1, связь М:М, не устанавливает подчиненности таблиц. Для проверки этого можно основную и дополнительную таблицу поменять местами и выполнить объединение информации путем связывания. Результирующие таблицы «О4+D4» и «D4+О4» будут отличаться порядком следования первого и третьего полей, а также порядком расположения записей.
Контрольные вопросы:
1. Что понимается под реляционной базой данных?
2. Перечислите элементы реляционной модели данных.
3. Объясните смысл терминов: первичный ключ; внешний ключ; составной ключ.
4. Что такое домен?
5. Охарактеризуйте все виды связей между таблицами.
6. Для каких целей используется первичный ключ?
Глава 3. Теоретические языки запросов
Операции, выполняемые над отношениями, можно разделить на две группы. Первую группу составляют операции над множествами, к которым относятся операции: объединения, пересечения, разности, деления и декартова произведения. Вторую группу составляют специальные операции над отношениями, к которым, в частности, относятся операции: проекции, соединения, выбора.
В различных СУБД реализована некоторая часть операций над отношениями, определяющая в какой-то мере возможности данной СУБД и сложность реализации запросов к БД. В реляционных СУБД для выполнения операций над отношениями используются две группы языков, имеющие в качестве своей математической основы теоретические языки запросов, предложенные Э.Коддом:
реляционная алгебра;
реляционное исчисление.
Эти языки представляют минимальные возможности реальных языков манипулирования данными в соответствии с реляционной моделью и эквивалентны друг другу по своим выразительным возможностям. Существуют не очень сложные правила преобразования запросов между ними.
В реляционной алгебре операнды и результаты всех действий являются отношениями. Языки реляционной алгебры являются процедурными, так как отношение, являющееся результатом запроса к реляционной БД, вычисляется при выполнении последовательности реляционных операторов, применяемым к отношениям. Операторы состоят из операндов, в роли которых выступают отношения, и реляционных операций. Результатом реляционной операции является отношение,
Языки исчислений, в отличие от реляционной алгебры, являются непроцедурными, описательными, или декларативными) и позволяют выражать запросы с помощью предиката первого порядка (высказывания в виде функции), которому должны удовлетворять кортежи или домены отношений. Запрос к БД, выполненный с использованием подобного языка, содержит лишь информацию о желаемом результате. Для этих языков характерно наличие наборов правил для записи запросов. В частности, к языкам этой группы относится SQL.
При рассмотрении языков реляционной алгебры и исчислений будем использовать базу данных, включающую в себя следующие таблицы:
S (поставщики);
Р (детали);
SP (поставки).
Первичными ключами этих таблиц являются соответственно: P# (код поставщика), D# (код детали) и составной ключ (P#, D#). Содержимое таблиц приведено на рис. 3.1. Каждое из полей P# и D# таблицы SP в отдельности является внешним ключом по отношению к таблице S и Р соответственно.
Предположим, что имена доменов (множество допустимых значений) совпадают с именами атрибутов. Исключение составляют атрибуты Gorod_P(город, в котором находится поставщик) и Gorod_D (город, в котором выпускается деталь), которые имеют общий домен: множество названий городов. Имя этого домена может быть, например, просто Город.
S
P#
|
Name
|
Status
|
Gorod_p
|
S1
|
Сергей
|
20
|
Москва
|
S2
|
Иван
|
10
|
Киев
|
S3
|
Борис
|
30
|
Киев
|
S4
|
Николай
|
20
|
Москва
|
S5
|
Андрей
|
30
|
. Минск
|
P
D#
|
Named
|
Tip
|
Ves
|
Goroda
|
Р1
|
гайка
|
каленый
|
12
|
Москва
|
Р2
|
болт
|
мягкий
|
17
|
Киев
|
РЗ
|
винт
|
твердый
|
17
|
Ростов
|
Р4
|
винт
|
каленый
|
14
|
Москва
|
Р5
|
палец
|
твердый
|
.12
|
Киев
|
Р6
|
шпилька
|
каленый
|
19
|
Москва
|
SP
P#
|
D#
|
Kol
|
S1
|
Р1
|
300
|
S1
|
Р2
|
200
|
S1
|
РЗ
|
400
|
S1
|
Р4
|
200
|
S1
|
Р5
|
100
|
S1
|
Р6
|
100
|
S2
|
Р1
|
300
|
S2
|
Р2
|
400
|
S3
|
Р2
|
200
|
S4
|
Р2
|
200
|
S4
|
Р4
|
300
|
S4
|
Р5
|
400
|
Рис.3.1. Таблицы поставщиков, деталей и поставок
Характеристики доменов как типов данных следующие: P# — строка символов длиной 5, Name — строка символов длиной 20, Status — цифровое длиной 5, Gorod_p— строка символов длиной 15, D# — строка символов длиной 6, Tip— строка символов длиной 6, Ves — цифровое длиной 5, Kol — цифровое длиной 5.
Достарыңызбен бөлісу: |