6. Модификация базовых отношений
Для успешной и продуктивной работы с различными базовыми отношениями очень часто разработчикам необходимо каким-либо образом модифицировать это базовые отношения.
Какие основные необходимые варианты модификации встречаются чаще всего в практике проектирования баз данных? Перечислим их:
1) вставка кортежей.
Очень часто нужно в уже сформированное базовое отношение вставить новые кортежи;
2) обновление значений атрибутов.
А необходимость этой модификации в практике программирования встречается еще чаще, чем предыдущая, ведь при поступлении новой информации об аргументах вашей базы данных неминуемо придется какую-то старую информацию обновлять;
3) удаление кортежей.
И с примерно равной вероятностью возникает необходимость удалить из базового отношения те кортежи, присутствие которых в вашей базе данных более не требуется в силу новой поступившей информации.
Итак, мы обозначили основные моменты модификации базовых отношений. Как же можно достичь каждой из поставленных целей? В системах управления базами данных чаще всего существуют встроенные, базовые операторы модификации отношений. Дадим их описание в записи на псевдокоде:
1) оператор вставки в базовое отношение новых кортежей. Это оператор Insert. Выглядит он следующим образом:
Insert into имя базового отношения (имя атрибута,..)
Values (значение атрибута,..);
Металингвистический символ «,..», поставленный после имени атрибута и значения атрибута, говорит нам, что этот оператор допускает одновременное добавление нескольких атрибутов в базовое отношение. В этом случае необходимо имена атрибутов и значения атрибутов перечислять через запятую в согласованном порядке.
Ключевое слово into в сочетании с общим названием оператора Insert означает «вставить в» и показывает, в какое отношение необходимо вставить указанные в скобках атрибуты.
Ключевое слово Values в этом операторе и означает «значения», «величины», которые и присваиваются этим вновь объявленным атрибутам;
2) теперь рассмотрим оператор обновления значений атрибутов в базовом отношении. Этот оператор называется Update, что в переводе с английского и означает буквально «обновить». Дадим полный общий вид этого оператора в записи на псевдокоде и расшифруем ее:
Update имя базового отношения
Set {имя атрибута – значение атрибута},..
Where условие;
Итак, в первой строчке оператора после ключевого слова Update записывается имя базового отношения, в котором необходимо произвести обновления.
Ключевое слово Set переводится с английского «задать», и в этой строчке оператора указываются имена атрибутов, которые необходимо обновить, и соответствующие новые значения атрибутов.
В одном операторе можно обновить сразу несколько атрибутов, что следует из применения металингвистического символа «,..».
В третьей строке после ключевого слова Where записывается условие, показывающее, какие именно атрибуты данного базового отношения необходимо обновить;
3) оператор Delete, позволяющий удалять какие-либо кортежи из базового отношения. Запишем его полный вид на псевдокоде и разъясним значение всех отдельных синтаксических единиц:
Delete from имя базового отношения
Where условие;
Ключевое слово from в сочетании с названием оператора Delete переводится как «удалить из». И после этих ключевых слов в первой строчке оператора указывается имя базового отношения, из которого необходимо удалить какие-либо кортежи.
А во второй строчке оператора после ключевого слова Where («где») указывается условие, по которому отбираются кортежи, более не требующиеся в нашем базовом отношении.
Лекция № 9. Функциональные зависимости
1. Ограничение функциональной зависимости
Ограничения уникальности, накладываемые объявлениями первичного и кандидатных ключей отношения, является частным случаем ограничений, связанных с понятием функциональных зависимостей.
Для объяснения понятия функциональной зависимости, рассмотрим следующий пример.
Пусть нам дано отношение, содержащее данные о результатах какой-то одной конкретной сессии. Схема этого отношения выглядит следующим образом:
Сессия (№ зачетной книжки, Фамилия, Имя, Отчество, Предмет, Оценка);
Атрибуты «№ зачетной книжки» и «Предмет» образуют составной (так как ключом объявлены два атрибута) первичный ключ этого отношения. Действительно, по двум этим атрибутам можно однозначно определить значения всех остальные атрибутов.
Однако, помимо ограничения уникальности, связанной с этим ключом, на отношение непременно должно быть наложено то условие, что одна зачетная книжка выдается обязательно одному конкретному человеку и, следовательно, в этом отношении кортежи с одинаковым номером зачетной книжки должны содержать одинаковые значения атрибутов «Фамилия», «Имя» и «Отчество».
3. Производные правила вывода
Другим примером правил, с помощью которых можно, при необходимости вывести новые правила функциональной зависимости, являются так называемые производные правила вывода.
Что это за правила, как они получаются?
Известно, что если из одних правил, уже существующих, законными логическими методами вывести другие, то эти новые правила, называемые производными, можно использовать наряду с исходными правилами.
Необходимо специально отметить, что эти самые произвольные правила являются «производными» именно от пройденных нами ранее правил вывода Армстронга.
Сформулируем производные правила вывода функциональных зависимостей в виде следующей теоремы.
Теорема.
Следующие правила являются производными от правил вывода Армстронга.
Правило вывода 1. ├ X ∪ Z → X;
Правило вывода 2. X → Y, X → Z ├ X ∪ Y → Z;
Правило вывода 3. X → Y ∪ Z ├ X → Y, X → Z;
Здесь X, Y, Z, W, так же как и в предыдущем случае, – произвольные подсхемы схемы отношения S.
1. Первое производное правило называется правилом тривиальности и читается следующим образом:
«Выводится правило: “объединение подсхем X и Z функционально влечет за собой X”».
Функциональная зависимость с левой частью, являющейся подмножеством правой части, называется тривиальной. Согласно правилу тривиальности ограничения тривиальной зависимости выполняются автоматически.
Интересно, что правило тривиальности является обобщением правила рефлексивности и, как и последнее, могло бы быть получено непосредственно из определения ограничения функциональной зависимости. Тот факт, что это правило является производным, не случаен и связан с полнотой системы правил Армстронга. Подробнее о полноте системы правил Армстронга мы поговорим чуть позднее.
2. Второе производное правило называется правилом аддитивности и читается следующим образом: «Если подсхема X функционально определяет подсхему Y, и X одновременно функционально определяет Z, то из этих правил выводится следующее правило: “X функционально определяет объединение подсхем Y и Z”».