- •Одно из применений связи «один ко многим»- использование справочников
- •Таблица находится в 3НФ, но имеется избыточность: многократно повторяются одни и те же
- •Вводим в БД таблицы- справочники «Города» и «Собственность»:
- •Справочник «Собственность»
- •Исходная таблица примет вид:
- •Таблицы- справочники:
- •Связь «Многие ко многим»
- •Реализация связей для примера
- •Таблица «препараты»
- •Таблица « Поступление лекарств»
- •Связи таблиц (схема данных)
- •ССЫЛОЧНАЯ
- •Требование ссылочной целостности
- •Для наших примеров:
- •Средства поддержания ссылочной
- •Каскадное обновление связанных полей
- •Код аптеки
- •Каскадное удаление связанных записей
- •Например, закрылась аптека по ул.Артема 53
- •Языковые средства СУБД
- •К языковым средствам СУБД относятся:
- •Язык описания данных (ЯОД)
- •Язык манипулирования данными
- •Язык запросов
- •Языки запросов
- •Конечная цель пользователя- выборка необходимой информации из БД для последующей обработки. Эта цель
- •Операции реляционной алгебры
- •Множество операций, предложенное Э.Коддом, избыточно, часть операций в нем выражается через другие
- •Теоретико-множественные операции
- •Пример объединения отношений
- •Пересечением двух отношений называется отношение, которое содержит множество кортежей, принадлежащих одновременно и первому,
- •Пример пересечения отношений
- •R4- студенты, изучающие английский язык и получающие стипендию
- •Разностью отношений R1 и R2называется отношение, которое содержит множество кортежей, принадлежащих R1 и
- •Примеры разности отношений
- •Примеры построения запросов с использованием указанных операций
- •Абитуриенты, не поступившие в университет:
- •Назовем
- •Расширенным декартовым произведением отношения R1 степени n со схемой
- •Самостоятельного значения результат выполнения этой операции в базах данных обычно не имеет. Используется
- •R7- Таблица «Факультеты»
- •R8- Таблица «Кафедры»
- •Специальные операции реляционной алгебры
- •Селекция (фильтрация)
- •Операция удаляет из таблицы строки, для которых не выполняется условие α.
- •Проекция
- •Например,
- •Э.Кодд в 1985 году сформулировал 12 правил, которым должна соответствовать любая реляционная СУБД
- •1. Явное представление данных (The Information Rule):
- •2. Гарантированный доступ к данным
- •3. Полная обработка неизвестных значений (Systematic Treatment of Null Values):
- •4. Доступ к словарю данных в терминах реляционной модели (Active On-Line Catalog Based
- •5. Полнота подмножества языка (Comprehensive Data Sublanguage Rule):
- •6. Возможность модификации представлений (View Updating Rule):
- •7. Наличие высокоуровневых операций управления данными (High-Level Insert, Update, and Delete):
- •8. Физическая независимость данных (Physical Data Independence):
- •9. Логическая независимость данных (Logical Data Independence):
- •10. Независимость контроля целостности
- •11. Дистрибутивная независимость
- •12. Согласование языковых уровней (The Nonsubversion Rule):
- •Ограничения целостности
- •Целостность сущностей.
- •Целостность ссылок
Связи таблиц (схема данных)
Аптеки |
|
|
|
|
|
Препараты |
|
|
|
|
|
|
|
|
|
Код аптеки |
|
1 |
|
1 |
|
Код препарата |
|
|
|
|
|
|
|
||
Адрес |
|
|
|
|
|
||
|
|
|
|
|
Препарат |
||
Телефон |
|
|
|
|
|
||
|
|
|
|
|
Форма выпуска |
||
График работы |
|
|
|
|
|
||
|
Поступление |
|
|
|
Фарм_группа |
||
|
|
|
лекарств |
|
|
|
|
|
|
|
Код аптеки |
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
Код препарата |
|
|
|
|
|
|
|
n |
||||
|
|
|
Дата |
||||
|
|
|
|
|
|
|
|
|
|
|
поступления |
11 |
|||
|
|
|
Цена |
||||
|
|
|
|
|
|
|
ССЫЛОЧНАЯ
ЦЕЛОСТНОСТЬ
12
Требование ссылочной целостности
может устанавливаться для двух связанных таблиц с целью
непротиворечивости данных. Его суть:
Каждому вхождению внешнего ключа в подчиненную таблицу должно соответствовать имеющееся значение первичного
ключа в главной таблице
13
Для наших примеров:
Невозможно ввести поставщика из несуществующего города, с неизвестным типом собственности;
Невозможно поступление несуществующего препарата в несуществующую аптеку.
14
Средства поддержания ссылочной
целостности
•Запрет изменений первичного ключа в тех случаях, когда редактируемая запись связана с записями подчиненной таблицы
•Запрет удаления из главной таблицы записей, имеющих подчиненных
•Каскадное обновление связанных полей
•Каскадное удаление связанных записей
15
Каскадное обновление связанных полей
При изменении значения первичного ключа в главной таблице автоматически
изменяются внешние ключи связанных записей из подчиненной таблицы
16
Код аптеки |
адрес |
|
телефон |
График работы |
|
1 |
3 |
Ул. Артема, 53 |
335-09-09 |
8.00-20.00 |
|
2 |
|
Ул. Артема 48 |
336-00-12 |
круглосуточно |
|
|
|
Каскадное |
|
|
|
|
|
обновление |
|
|
|
Код |
Код преп. |
Дата поступления |
Цена |
||
аптеки |
|
|
|
|
|
1 |
3 |
1 |
01.09.05 |
10.00 |
|
1 |
3 |
3 |
12.09.05 |
0.90 |
|
1 |
3 |
4 |
10.09.05 |
1.00 |
|
2 |
|
1 |
01.09.05 |
12.00 |
|
… |
… |
… |
|
… |
|
|
|
|
|
|
17 |
Каскадное удаление связанных записей
При удалении записи из главной таблицы автоматически
удаляются все связанные с ней записи подчиненной таблицы
18
Например, закрылась аптека по ул.Артема 53 |
Удаляем |
|||||
вручную |
||||||
|
|
|
|
|||
Код аптеки |
адрес |
телефон |
График работы |
|
||
1 |
Ул. Артема, 53 |
335-09-09 |
8.00-20.00 |
|
|
|
|
|
|||||
2 |
Ул. Артема 48 |
336-00-12 |
круглосуточно |
Код |
Код преп. |
Дата |
Цена |
|
|
|
аптеки |
|
поступления |
|
|
|
|
1 |
1 |
01.09.05 |
10.00 |
|
Удаляет |
|
1 |
3 |
12.09.05 |
0.90 |
|
||
1 |
4 |
10.09.05 |
1.00 |
|
СУБД |
|
|
|
|||||
2 |
1 |
01.09.05 |
12.00 |
19 |
||
… |
… |
… |
… |
|||
|
|
Языковые средства СУБД
20