Проектирование базы данных на языке SQL
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
>
Формула РИК:
{p | p PLAYER & $ p ( PLAYER ) & p (TEAM_NUMBER_FK=4)}
3. Целостность и безопасность базы данных
база данные запрос язык
3.1 Целостность данных
Нарушение целостности баз данных может привести к непредсказуемым, а порой и опасным последствиям. Поэтому одно из ведущих мест в разработке баз данных занимает их защита и сохранение целостности.
Следует различать понятия безопасность и целостность баз дынных. Под безопасностью понимают то, что пользователю разрешают выполнить какие-либо действия. А под целостность же понимают то, что эти самые разрешённые действия будут выполнены корректно.
В реляционной модели данных определены два базовых требования обеспечения целостности: целостность ссылок, целостность сущностей.
Также существуют ограничения доменов (определение множества значений, которые образуют этот домен, то есть процесс создания домена и наложения на него ограничений целостности совпадает), атрибутов (для реляционных БД это определение домена, из которого берутся значения атрибутов) и отношений (ограничения, накладывающиеся на одно конкретное отношение, которое не может накладываться на другое отношение или домен, обычно задается созданием отношения). В данной работе используется ограничение атрибутов (при задании типов данных для атрибутов на физическом уровне концептуальной схемы).
Целостность сущностей. Объект реального мира представляется в реляционной базе данных как кортеж некоторого отношения. Требование целостности сущностей заключается в следующем: каждый кортеж любого отношения должен отличатся от любого другого кортежа этого отношения (т.е. любое отношение должно обладать первичным ключом).
Ссылочная целостность - это ограничение базы данных, гарантирующее, что ссылки между данными являются действительно правомерными и неповрежденными. Ссылочная целостность является фундаментальным принципом теории баз данных и проистекает из той идеи, что база данных должна не только сохранять данные, но и активно содействовать обеспечению их качества.
Основные стратегии поддержания ссылочной целостности:
-RESTRICT - запрещающая;
-CASCADE - каскадная;
-SET NULL - задание значения NULL.
RESTRICT (запрещающая) - не позволяет модифицировать ссылочные поля или удалять записи из родительской таблицы, если в потомке есть связанные записи. При вставке или модификации потомка запрещает значения атрибутов не соответствующих ссылочным полям.
CASCADE (каскадная) - при удалении записи родителя подразумевает удаление всех потомков. При модификации в родительской таблице в потомках должны изменяться значения ссылочных полей на новые. Каскад на вставку подразумевает вставку хотя бы одного потомка.
SET NULL - при удалении родителя устанавливает значения ссылочных полей потомка в Null. При этом данная стратегия не применима для идентифицирующих связей, связей не допускающих null значений и категорий.
Стратегии для каждой связи представлены на рисунке 3.1.
Рассмотрим сущности Команда - Футболист, Команда - Тренерский штаб, Команда - Матч, Турнир - Матч Между данными сущностями для родительских сущностей INSERT:NONE, DELETE:CASCADE, UPDATE:CASCADE. Т.е при вставке кортежа в родительскую таблицу ссылочная целостность не нарушается, при попытке удалить или модифицировать данные, возникнет ошибка ссылочной целостности. Для дочерних сущностей стратегия выглядит следующим образом: INSERT: RESTRICT, DELETE: NONE, UPDATE: RESTRICT. Таким образом, удаление кортежа из дочерней сущности не навредить ссылочной целостности, а при вставке и модификации она нарушится. Поэтому необходимо запретить вставку и модификацию значений полей внешних ключей.
Рисунок 3.1 - Стратегии целостности
Для сохранения ссылочной целостности могут быть также использованы представления, хранимые процедуры и триггеры.
Представление - статическое определение динамической таблицы, созданной из одной или более базовых таблиц в соответствии с заданными критериями выборки. С технической точки зрения представление - это хранимое в БД определение инструкции select с заданными в ней строками и столбцами, которые должны считываться при обращении к представлению. После создания представления к нему можно обращаться как к обычной таблице.
Создадим представление, которое включает в себя ФИО футболиста и название команды, за которую он выступает:
CREATE VIEW TEAMPLAYER (FIO, TEAM_NAME) ASFIO, TEAM_NAME FROM PLAYER P, TEAM T((P.TEAM_NUMBER = T.TEAM_NUMBER));
Созданное представление показано на рисунке 3.2.
Рисунок 3.2 - Представление TEAMPLAYER
Хранимая процедура - объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам. В хранимых процедурах могут выполняться стандартные операции с базами данных.
CREATE PROCEDURE COACH (COACH_DATE1 DATE, COACH_DATE2 DATE)(FIO VARCHAR(255), TEAM_NAME VARCHAR(255))BEGINSELECT C.FIO, T.TEAM_NAMECOACH C, TEAM T((C.TEAM_NUMBER = T.TEAM_NUMBER) AND (COACH_DATE BETWEEN :COACH_DATE1 AND :COACH_DATE2)):FIO, :TEAM_NAMESUSPEND;;
Для демонстрации ее работы выведены ФИО тренеров и название команды для тренеров дата рождения которых с 01.01.1985 по 01.01.1988. Результаты вызова процедуры пок?/p>