Базы Данных, 20 лекция (от 16 ноября)
Материал из ESyr's Wiki pages.
БД 16.11.06
Лектор решил контрольную не проводить. Бугага. Но цели он достиг – народу стало побольше
Связи-ассоциации
Языек ОЦЛ
Связи-ассоциации
Есть уровень вовлечения в связь.
Простые ассоциации: Объекты не зависимы, то есть могут существовать сами по себе. То есть обязательного наличия партнёров явно не требуется.
Агрегатные связи
Композитные ассоциации
Пример: есть класс Аудитория. У неё есть атрибуты число квадратнеых метров, граф положение, и так далее. В ней есть парты. Здесь есть некоторая ассоциация – в аудитории есть от 0 до любого числа парт. Но она может обладать таким свойством – если аудитория на ремонт закрывается, то парты из неё выносятся. Это есть агрегатная композиция. Она показывает, что парты являются составной части аудитории. Если для парты связь обязательна, но если аудитория закрывается на ремонт, то это должно подействовать на все парты в аудитории. Это действие не запросов, а обновление БД. Если это состояние такое, которое не допускает наличия парт, то с ними надо что-то сделать.
Другой пример:
Унверситет. Есть факультеты. Если уничтожается универ, то уничтожаются факультеты. В терминах РБД это каскадное удаление. Вопрос: мы можем воткнуть факультеты внутрь универсиетта, то есть денормализовали. Декан принадлежность факультета, он конечно сотрудник университета, но он в первую очередь
//Убивать студентов при закрытии факультета...
Если мы хотим запретить по книгам искать библиотеки, то в современных БД можно определить представление.
Диаграмы классов в общем-то и всё.
Разницы между диаграммами классов и ER-диаграммами нет.
Object Constraint Language
7 ноября был в Москве Билл Гейтс, и, как выяснилось, он – умный мужик.
Вопрос – имеют ли OCL и SQL одинаковую мощность.
Он дал четверокурснику задачу – придумать ограничение в OCL, которое нельзя написать в SQL, или наоборот, Он ничего не придумал.
Лектору что-то подсказывает, что по этому поводу можно сделать 3-4-5 статей.
Свойства OCL, заимствованные из UML (метаметамодель)
Класс, атрибут, операции
Объект – экземпляр класса (instance)
До и во время экзамена лектор сказал придерживаться его точки зрения относительно instance, но не потому что она абсолютно правильльная, а потому, чтл она по крайней мере понятна.
Ассоциации – бинарная
Тип данных (Boolean, Integer, Real, String – размытые понятия)
Значение – экземпляр типа данных
Пятёрка, она одна пятёрка, и в африке пятёрка, она только пятёрка, и нельзя её сделать шестёркой, и она пятёрка и она всегда будет пятёркой.
Идентификатор объекта. Два объекта назывваются идентичными, когда у них одинаковые идентификаторы. На самом деле, что в UML, что в ODMG очень сильно затуманивается операция сравнения. Есть операция мелкого сравнения (когда объект равен, если это он же), и есть операция глубокого сравнения (когда равны внутренности).
Объект м. б. ассоциирован с другими объектами
Значения, сравнение значений
Структурные ТД
Множество (set)
Мультимножество (bag)
Последовательность (sequence)
Лектора глубоко потрясает операция UNION над двумя списками.
context <class_name> inv;
<ocl_выражение – логическое>
Операции над значениями скалярных типов – скалярные выражения
Этот язык – это язык, который ориентирован на то, чтобы писать ограничения целостности. От языка ограничений до языка запросов один маленький шажочек.
Операции над объектами
Операции над мнвами, мультимнвами, последовательностями
Логические, ариф, строковые (конкатенаця, сравнение, взятие подстроки, ...)
Операции над атрибутами.
Получение значения атрибута
переход по экземпляру ассоциации
вызов операции объекта
<объект>.<имя атрибута>
<объект>.<имя операции>()
<объект>.<имя роли, противополож>
Коллекции
<коллекция> -> <имя_операции> (<список_параметров> - логвыр)
select
collect – выраж, генерир значения или объекты
незапноБ осталось чуть-чуть времени
OCL – язык не простой, а очень простой.
Вопрос, который любит задавать лектор: чем отличается OCL от языка исчисления кортежей. Разница одна. Здесь (в ОЦЛ) есть фактически одна переменная. Что мы не можем сделать с помощью этого языка – мы не можем сделать соединение, можем сделать только полусоединение.
Рисунок.
Ограничение:
Возраст служащего от 18 до 100 лет
context Служащие self.возраст>18 and self.возраст<100
Подумать, какие можно придумать ограничения
Базы Данных
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Календарь
пт | чт | пт | чт | пт | чт | пт | чт | пт | чт | |
Сентябрь
| 01 | 07 | 14 | 15 | 21 | 22 | 28 | 29 | ||
Октябрь
| 05 | 06 | 12 | 13 | 19 | 20 | 26 | 27 | ||
Ноябрь
| 02 | 03 | 09 | 16 | 17 | 23 | 24 | 30 | ||
Декабрь
| 07 | 08 | 14 | 15 |