Базы Данных, 20 лекция (от 16 ноября)
Материал из eSyr's wiki.
БД 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 |
Вопросы к экзамену
1999
2000
2001
2002
2003
2004
2005
2006