Модификация структуры данных БД
Во время эксплуатации БД по каким-либо причинам может возникнуть потребность в модификации существующей схемы данных базы.
При разработке БД “Видеопрокат” было сделано допущение, что фильм имеет только одно название. Но уже при переводе с оригинального языка зарубежный фильм получает русское название, под которым и происходит его прокат. Клиент может искать нужный ему фильм именно по оригинальному названию. И в данной реализации базы данных его поиск не увенчается успехом, даже если кассета с фильмом будет стоять в хранилище на самом видном месте. Лишение предприятия возможной прибыли от проката такой кассеты-невидимки является достаточным стимулом для поиска решения.
Введем новые элементы данных «Другое название фильма» и «Идентификатор другого названия фильма». Для них выпишем функциональные зависимости
«Идентификатор другого названия фильма» → «Другое название фильма»;
«Идентификатор другого названия фильма» → «Идентификатор фильма».
После повторного выполнения шагов алгоритма построения канонической модели получаем еще одно отношение в дополнение к уже известным:
· R10 – Другие названия фильмов (Идентификатор другого названия фильма, Другое название фильма, Идентификатор фильма)
Для новой схемы обобщенный ключ имеет вид: «Идентификатор другого названия фильма», «Идентификатор распределения», «Идентификатор выдачи». В нем, как и прежде, неявно присутствует многозначная зависимость, борьба с которой рассмотрена выше. После некоторой практики не составляет труда заметить еще одну, столь же неявную зависимость: «Идентификатор фильма» →→ «Идентификатор другого названия фильма» («Идентификатор распределения»). Избавление от нее происходит теми же средствами. Получаем два отношения: («Идентификатор фильма», «Идентификатор другого названия фильма») и («Идентификатор фильма», «Идентификатор распределения», «Идентификатор выдачи»). Первое отношение уже присутствует в схеме в виде отношения «Другие названия фильмов». Второе отношение и его декомпозиция рассматривались выше. Схема удовлетворяет свойству соединения без потерь информации.
Операции реляционной алгебры
Операндами реляционной алгебры являются отношения Ri, содержащие ki столбцов и ni строк.
Базисный набор операций
1. Объединение. R = R1 È R1. Ограничения: k1=k2 (формально) и заголовки должны быть равны (содержательно). Результирующее отношение содержит картежи обоих операндов, исключая дублирующие друг друга.
2. Вычитание. R = R1 \ R2. Ограничения: k1=k2 (формально) и заголовки должны быть равны (содержательно). Из R1 удаляются картежи, встречающиеся в R2.
3. Декартово произведение. R = R1 ´ R2. Ограничений нет. Получаемое отношение имеет все атрибуты своих операндов (при этом одноименные заменяются на пары вида <Имя отношения>.<Имя атрибута>), и каждый картеж первого отношения сопоставляется каждому картежу второго отношения. Появление дублирующих картежей исключено – если их нет в исходных отношениях.
4. Селекция. sF(R), где F – логическое выражение, заданное на атрибутах из R и имеет вид: <атрибут>q<значение>, где q – операция из набора {<, ≤,=, ≠, ≥ ,>}, связанных посредством операций (дизъюнкция), (конъюнкция), Ø(отрицание). Картеж из R попадает в результат, если при подстановке его содержимого в F получается истинное выражение. Проекция – это вырезка из таблицы по строкам, соответствующим логическому выражению F.
5. Проекция. pX(R), где X – множество атрибутов, подмножество атрибутов из R. Результатом является отношение, состоящее из атрибутов X, содержимым которого будут соответствующие части картежей операнда с удаленными дублями. Проекция – это вырезка из таблицы по столбцам.
Дополнительные операции
1. Пересечение. .
2. Соединение. .
3. Эквисоединение. Соединение, только F содержит выражения со знаком равенства.
4. Естественное соединение. Каждый картеж из R1 сопоставляется с каждым картежом из R2, и если значения всех одноименных атрибутов совпадают, то формируется новый картеж без дублирующихся атрибутов – он-то и помещается в результат. Обозначается он .
,
где – объединенное множество атрибутов,
, – пересечение множества атрибутов.
Свойства операций
1. Коммутативность: , .
2. Ассоциативность: , .
3. Операция проекции: , где ; , где .
4. Операция селекции: , , где Fi содержит только атрибуты из Ri и .