Что такое СУБД - система управления базой данных (DBMS - Database Management System )? 1. Система, которая предоставляет доступ к данным очень большого объема. 2. Система, которая поддерживает эффективный (быстрый) доступ к данным. 3. Система, которая поддерживает доступ к данным одновременно для многих пользователей. 4. Система, которая поддерживает безопасный и атомарный (неделимый) доступ к данным. Реляционная модель. Базируется (строится) на таблицах, например таких acct# 12345 34567 ... name Sally Sue ... Balance 1000.21 285.48 ... Используется большинством современных СУБД Три аспекта изучения и исследования СУБД. 1. Моделирование и проектирование баз данных. Позволяет выявить некоторые проблемы до перехода к реализации. 2. Программирование: запросы и операции над данными из базы (например, модификация данных). SQL = “интерактивное общение с базой данных” 3. Реализация СУБД. Настоящий курс = (1) + (2), (3) – не рассматривается . E/R модель (модель сущностей-связей). Представление данных основано на диаграммах. Сущность – это объект = “нечто существующее” Множество сущностей - это класс = множество “экземпляров (т.е. подобных)” сущностей (объектов) Атрибут – это свойство объекта (сравните с элементом структуры данных) На диаграмме: объект изображается прямоугольником, атрибут – овалом. Ф.И.О. Телефон Номер Рост Студенты Связи. В связи участвуют два или более множества объектов. На диаграмме обозначаются ромбами. Студенты Изучает Предметы Экземпляр связей. Конкретный экземпляр (представитель) связи между сущностями представляет собой таблицу, в которой: По одному столбцу для каждого множества сущностей из связи. По одной строке для каждого набора (кортежа) объектов (по одному из каждого такого множества), между которыми существует связь. Например: Студент Sally Sally Joe ... Предмет CS145 CS245 CS145 ... Множественные связи. Обычно рассматриваются бинарные связи (т.е. связи между двумя объектами). Тем не менее, есть случаи, когда надо связать три объекта или более Например, нужно связать множества объектов «Студенты», «Предметы» и «Преподаватели». Диаграмма в этом случае может выглядеть так: Студенты Изучает Предметы Преподает Преподаватели Правильно, если все студенты слушают предмет, который ведет какой-то один преподаватель. Связь «Студент»-«Преподаватель» реализована через «Предмет» Но если студенты разделены на подгруппы и в каждой подгруппе свой преподаватель? В этом случае студенты будут связаны с разными преподавателями, ведущими один предмет. Чтобы описать этот случай нужен 3-ой (тройной, тернарный) способ связи. Предметы Студенты Регистрация Преподаватели Например: Студент Ann Bob Cal ... Предмет CS145 CS145 CS245 ... Преподаватель Don Edy Don ... Пример: Пиво-Бары-Посетители будет использоваться в течение всего курса name addr license Bars Serves Frequents Beers name Drinkers Likes manf name addr Виды связей. 0..n 0..n Многие-ко-многим 0..n 0..1 Многие-к-одному 0..1 0..1 Один-к-одному Представление связи Многие-к-одному. E/R: линия со стрелкой в сторону «к-одному» Линия со стрелкой и закругленным концом = «ровно один» Пример: Посетители – Пиво – Любимый сорт name addr license Bars Serves Frequents Favorite Beers name Drinkers Likes manf name addr Представление связи «один-к-одному». Обозначается линией со стрелками в обоих направлениях ( соответствует случаю 0..1 0..1 приведенному выше). Иногда важно подчеркнуть, что в связи между объектами один из объектов обязан существовать – на этот объект будет указывать круглая стрелка, назовем эту связь «один-к-ровно-одному». Manfs Bestseller Beers Произведено В этой диаграмме, «Производитель» – объект, в схемах, приведенных ранее – атрибут. Где правильный вариант? Атрибуты связи. price Bars Sells Beers Изображение для 3-ого (тернарного) способа связи: price Prices Bars Sells Beers Это действительно множественная (3-ая) связь. Цена зависит от обоих объектов: бара и сорта пива. Замечание: стрелка во множественной связи означает «все остальные объекты определяют один из этих» Нет общего подхода для описания Если цена зависит, например, только от сорта пива, то можно используя 2 бинарные связи: Цена-Пиво и Пиво-Бар Еще лучше: просто сделать цену атрибутом пива Преобразование множественной связи в бинарную. Громоздко в E/R, но необходимо для некоторых «объектноориентированных» моделей Создается новый объект-связь для представления строк множества связей Например, (Joe's Bar, Bud, $2.50) для «Продаж» Другие объекты связываются как «многие-к-ровно-одному» с новым объектом-связью BarBeerPrice TheBar Bars TheBeer Beers ThePrice Prices Роли. Иногда множество объектов может быть связано с самим собой. Для отличия конец связи помечается меткой, которая называется ролью. Женаты Муж Жена Посетители Муж d1 d5 ... Жена d2 d4 ... Друзья 1 2 Посетители Друг1 d1 d1 d2 d2 ... Друг3 d2 d3 d1 d4 ... Замечание: Друзья – есть симметрия, Семья - нет В E/R модели нет способа отобразить симметрию. Вопрос по модели: Могли бы мы заменить связь «женаты» с двумя ролями: муж и жена – симметричной связью «супруги»? Подклассы. Подкласс = частный случай = меньше объектов = больше свойств. Пример: Эль – это вид пива. Дополним свойства (=атрибуты и связи) пива, атрибутом «цвет» для этого вида (эль). Подклассы в E/R модели. Подклассы образуют дерево (не множественное наследование) Is a – треугольник указывает на подкласс name Beers isa color Ales manf Различия в определении подкласса. 1. E/R модель: Сущность (объект) имеет компоненты в каждом из множеств объектов, к которым она логически принадлежит. Свойства объекта являются объединением свойств этих компонент распределены по множествам объектов 2. Объектно-ориентированная модель: Объект (сущность) принадлежит только одному классу. Объект наследует свойства своих суперклассов. name Beers manf isa Pete's Ale color Ales Ключи. Ключ – это множество таких свойств (атрибутов) объекта, что не существует 2-х объектов с одинаковыми свойствами (значениями ключевых атрибутов). В E/R модели, каждое множество объектов должно иметь ключ. В случае, когда множество имеет несколько ключей, роль ключа «назначается» одному из них. В E/R диаграммах ключ обозначается подчеркиванием атрибутов, определяющих ключ. Пример. Допустим, что «name» - это ключ для множества объектов «Beers». name Beers manf isa color Ales Название сорта пива является ключом и для Ales. В общем случае, ключ корневого объекта – это ключ и всех остальных объектов. Пример: Составной ключ. Код Факультет Время Предметы Аудитория Возможно, что «Время» + «Аудитория» тоже ключ, но это не отмечается как ключ.