Ограничения целостности базы данных.
Целостность базы данных (integrity)- это соответствие имеющиеся в базе данных информации и ее внутреннее логика, структура и ее явно заданные правила.
Ограничения целостности можно классифицировать следующими способами:
По области действия. Делят на три категории:
Обеспеченье доменной целостности – отслеживают, чтобы в полях базы данных были только допустимые значения. Обеспечиваются условиями на значение – запретом пустых значений, триггерами хранимыми процедурами и ключами.
Сущностная целостность – главная задача отследить, чтобы информация об одной сущности не попала в базу данных два раза. Обеспечивается уникальностью и ключами.
Ссылочная целостность. Обеспечивается целостностью первичных и внешних ключей. Возможны следующие действия по поддержанию ссылочной целостности при удалениях строк из родительской таблицы:
No action (Restrict) – запретить удаление родительской строки, если есть подчинённые строки.
Каскад – при удалении родительской записи автоматически удалить все подчиненные записи.
Set NULL – установить пусто у подчиненных записях.
Set default
Аналогичное действие можно задать при обновлении родительской записи
По способам реализации. По способам реализации:
Декларативная поддержка ограничения целостности
Процедурная поддержка целостности.
По времени проверки. По времени ограничения делятся:
Немедленно проверяемые ограничения.
Ограничения с отложенной проверкой. Такие ограничения проверяются в момент фиксации транзакции. Внутри транзакции может быть нарушено ограничения, но в момент завершения транзакции, при продолжении нарушения происходит отказ.
11.10.12
Реляционная алгебра. Реляционное исчисление
В зависимости от характера математического аппарата, лежащего в основе языка, все языка манипулирования данными делятся на два класса:
Языки реляционной алгебры
Языки реляционного исчисления.
Реляционная алгебра - это процедурный язык обработки реляционных таблиц. То-есть используется пошаговое выполнение задачи.
В реляционном исчислении запрос создается путем определения результатов за один шаг. Реляционная алгебра и реляционная исчисления эквивалентны – любой запрос, который можно реализовать с помощью реляционной алгебры можно реализовать с помощью реляционного исчисления и наоборот.
Реляционная алгебра – набор объединений и операций над ними.
Реляционная алгебра состоит из девяти операций:
Объединение
Пересечение
Разность
Декартовое произведение
Выборка
Проекция
Соединения
Деление
Присвоение
При выполнении операций объединение, пересечения и разности, участвующие в них таблицы должны удовлетворять свойству совместимости.
Две таблицы совместимы, если имеют одинаковое количество столбцов и значение в каждой паре атрибутов из каждой таблицы, принадлежат одному и тому же домену.
Объединения двух совместимых таблиц R1 и R2 называется таблица R состоящая из всех строк принадлежащих хотя бы одной из таблиц R1 и R2.
Операция пересечения таблиц R1 и R2 называется таблица R, состоящая из строк, являющихся общими для таблицы R1 и R2.
Разностью таблицы R1 и R2 называется таблица R, состоящая из строк находящихся в таблице R1 и не находящихся в таблице R2.
R1 (ФИО, школа, паспорт) – первый раз
R2(––––) – второй раз
R3 (––––) - поступили
Найти список абитуриентов, которые поступали два раза и не поступили.
R=(R1 R2)-R3
Список абитуриентов, которые поступили с первого раза.
R3-(R1 R2)
Те, кто поступали один раз, но не поступили.
((R1-R2) (R2-R1))-R3
Под декартовым произведением двух таблиц R1 и R2, не обязательно совместимых, называется такая таблица R состоящая из строк, каждая из которых является конкатенаций по двух строк из R1 и R2. Таблица будет состоять из всех столбцов обоих таблиц и всеми возможными комбинациями пар строк.
Операция выборки создает таблицу, которая состоит из всех строк, удовлетворяющих определенному условию.
Проекция – создает новую таблицу путем исключения столбцов из существующей таблицы.
Соединения состоит из декартового произведения и выборки по заданному условию (в общем случае).
У операции соединения есть несколько версий:
Естественное соединение – соединяет столбцы, имеющие общие значения – native join. …
Внешнее соединение – расширяет обычное соединение, гарантируя, что каждая строка из исходных таблиц будет представлена в результирующей таблице хотя бы один раз. …
При левом соединения, гарантированно поступают все строки из первой таблицы.
При правом соединении, гарантированно поступают все строки из второй таблицы. …
Деление – создает новую таблицу путем выбора строк одной таблицы, соответствующих каждой строке другой таблицы. Пусть A, B, и C реляционные таблицы. Нужно разделить A на B и получить C:
Столбцы B должны быть подмножеством столбцов A.
Столбцами C будут те столбцы B, которые не входят в А.
Строка помещается в таблицу C, если она входит в A с каждой строкой B.
Пример:
…
…
Пример:
…
…
…
…
…
18.10.12