Фамилия И.О., № группы № задания Максимальный балл Результат 1 15 2 20 3 35 ИТОГО 70 1. E/R диаграммы и отношения (15 баллов) Addr Name Hight Name Length PPiiaannoo TTyyppee M Maannff Width By Of PPiiaannoo M Mooddeell EElleeccttrroonniicc Power Price TTrraaddiittiioonnaall Processor Wood На приведенной диаграмме объектов-связей (E/R диаграмме) представлена информация о моделях пианино (Piano Model), производителях пианино (Manf), типах пианино (Piano Type). Тип характеризуется названием (Name) и размерами (Hight, Length, Width). Модели пианино подразделяются на традиционные и электронные (одна и та же модель может быть и традиционной и электронной, или только электронной, или только традиционной). Для традиционной модели указывается тип древесины, из которого эта модель изготовлена (Wood), для электронной – мощность (Power) и тип процессора (Processor). а) (10 баллов) На основе приведенной диаграммы постройте реляционную (ые) модель (и). Не забудьте подчеркнуть ключи у каждого отношения. 1ый вариант модели: Manf(Name, addr) PianoType(Name, height, length, width) PianoModel(ManfName, TypeName, price) Electronic(ManfName, TypeName, power, processor) Traditional(ManfName, TypeName, wood) 2ой вариант модели: Manf(Name, addr) PianoType(Name, height, length, width) PianoModel(ManfName, TypeName, price, power, processor, wood) б) (5 баллов) Учитывает ли приведенная диаграмма тот факт, что один и тот же производитель может выпускать 2 различные модели одного типа. Например, производитель S выпускает 2 модели типа BDP, которые отличаются друг от друга размерами и (или) ценой? Если да, то поясните как, если нет, то поясните, как изменить диаграмму, чтобы учесть этот факт. Не учитывает, т.к. ключ сущности PianoModel, где должна храниться цена – {ManfName, TypeName}. Чтобы учесть факт выпуска моделей одного типа, отличающихся ценой и (или) размерами, можно ввести суррогатный ключ, порядковый номер, в сущность PianoType. В этом случае наименование будет неключевым атрибутом. 2. Функциональные зависимости (20 баллов, по 5 баллов за каждый пункт задания): Пусть есть отношение R(A,B,C,D,E) с функциональными зависимостями A -> B, B -> C, C -> A, D -> E и E -> D. а) Определите ключи отношения R. {A,D}, {A,E}, {B,D}, {B,E}, {C,D}, {C,E}. б) Сколько суперключей имеет отношение R? {A,D}, {A,E}, {B,D}, {B,E}, {C,D}, {C,E}, {A,B,D}, {A,C,D}, {A,D,E}, {A,B,E}, {A,C,E}, {B,D,E}, {B,C,D}, {C,D,E}, {B,C,E}, {A,B,C,D}, {A,B,D,E}, {A,C,D,E}, {A,B,C,E}, {B,C,D,E}, {A,B,C,D,E}. в) Разобьем отношение R на 2 отношения R1(A, B) и R2(A, C, D, E). Определите, какие функциональные зависимости будут выполняться для отношений R1 и R2. В ответ включите функциональные зависимости с единственным атрибутом в левой части, из которых следуют все остальные зависимости. Для R1(A, B): {B->A, A->B} Для R2(A, C, D, E): {A->C, C->A, D->E, E->D} г) Приведите пример отношения R, для которого выполняются исходные функциональные зависимости, но не выполняется многозначная зависимость AB ->> CD. ABCDE 1 1 1 1 1 1 1 1 0 0 3. Реляционная алгебра и SQL (35 баллов, по 5 баллов за каждый пункт): Пусть имеется база данных с отношениями: Articles (ID, dateline, headline, author, text) Keywords (ID, keyword) Отношение Articles содержит информацию о новых статьях: уникальный ID, дату написания статьи (dateline), название (headline), ФИО автора (author) и текст статьи (text). Отношение Keywords – это список терминов (ключевых слов) статьи. Это отношение содержит 0 или более терминов для каждой статьи. а) Напишите на языке SQL-стандарт команду определения структуры отношения Articles, в которой учитывается следующее ограничение dateline, author->ID, т.е. ни один автор не может разместить сразу несколько статей в одну дату. Сформулируйте это ограничение, как ограничение CHECK уровня отношения. SELECT . . . CHECK(NOT EXISTS( SELECT * FROM Articles aa WHERE dateline = aa.dateline AND author = aa.author )); б) Напишите на языке SQL-стандарт запрос для поиска названий статей, в которых присутствует термин ‘SQL’. SELECT headline FROM Articles, Keywords WHERE Articles.ID = Keywords.ID AND keyword = 'SQL'; в) Напишите на языке РЕЛЯЦИОННОЙ АЛГЕБРЫ запрос для поиска ID статей, для которых в базе данных есть, по крайней мере, 3 термина (ключевых слова). ID( k>=3 (ID, COUNT(keyword)->k (Keywords))). г) Напишите на языке SQL-стандарт запрос для поиска ID тех статей, в тексте которых появляется, в любом контексте, слово “СУЩНОСТЬ”. SELECT ID FROM Articles WHERE text LIKE '%СУЩНОСТЬ %'; д) Постройте представление, состоящее из 3 атрибутов (автор, термин, дата). Отберите из исходных отношений авторов, для которых какой-либо термин появляется более 3 раз в разных статьях. Включите в представление наименьшую из дат отобранных статей. Определение представления приведите на языке SQL. CREATE VIEW AS SELECT author, keyword, MIN(dateline) FROM Articles, Keywords WHERE Articles.ID = Keywords.ID GROUP BY author, keyword HAVING COUNT(*) >= 3; е) Напишите на языке РЕЛЯЦИОННОЙ АЛГЕБРЫ запрос для получения ФИО авторов, в статьях которых не присутствует термин ”RELATION”. author keyword<>’relation’ Keywords Articles ж) Напишите на языке SQL команду для изменения теста статьи на заголовок, если в столбце текст занесено значение NULL. UPDATE Articles SET text = headline WHERE text IS NULL;