Что такое СУБД - система управления базой данных
(DBMS - Database Management System )?
1. Система, которая предоставляет доступ к данным очень большого объема.
2. Система, которая поддерживает эффективный (быстрый) доступ к данным.
3. Система, которая поддерживает доступ к данным одновременно для многих пользователей.
4. Система, которая поддерживает безопасный и атомарный (неделимый) доступ к данным.
Реляционная модель.
§ Базируется (строится) на таблицах, например таких
acct# | name | Balance |
|
| 12345 | Sally | 1000.21 |
| 34567 | Sue | 285.48 |
| ... | ... | ... |
§ Используется большинством современных СУБД
Три аспекта изучения и исследования СУБД.
1. Моделирование и проектирование баз данных.
§ Позволяет выявить некоторые проблемы до перехода к реализации.
2. Программирование: запросы и операции над данными из базы (например, модификация данных).
§ SQL = “интерактивное общение с базой данных”
3. Реализация СУБД.
Настоящий курс = (1) + (2), (3) – не рассматривается.
E/R модель (модель сущностей-связей).
Представление данных основано на диаграммах.
§ Сущность – это объект = “нечто существующее”
§ Множество сущностей - это класс = множество “экземпляров (т. е. подобных)” сущностей (объектов)
§ Атрибут – это свойство объекта (сравните с элементом структуры данных)
§ На диаграмме: объект изображается прямоугольником, атрибут – овалом.
Связи.
§ В связи участвуют два или более множества объектов.
§ На диаграмме обозначаются ромбами.
![]() | |
| |
Экземпляр связей.
Конкретный экземпляр (представитель) связи между сущностями представляет собой таблицу, в которой:
§ По одному столбцу для каждого множества сущностей из связи.
§ По одной строке для каждого набора (кортежа) объектов (по одному из каждого такого множества), между которыми существует связь.
Например:
Студент | Предмет |
Sally | CS145 |
Sally | CS245 |
Joe | CS145 |
... | ... |
Множественные связи.
Обычно рассматриваются бинарные связи (т. е. связи между двумя объектами).
§ Тем не менее, есть случаи, когда надо связать три объекта или более
§ Например, нужно связать множества объектов «Студенты», «Предметы» и «Преподаватели». Диаграмма в этом случае может выглядеть так:
![]() | |
| |
§ Правильно, если все студенты слушают предмет, который ведет какой-то один преподаватель. Связь «Студент»-«Преподаватель» реализована через «Предмет»
§ Но если студенты разделены на подгруппы и в каждой подгруппе свой преподаватель? В этом случае студенты будут связаны с разными преподавателями, ведущими один предмет. Чтобы описать этот случай нужен 3-ой (тройной, тернарный) способ связи.
![]() |
Например:
Студент | Предмет | Преподаватель |
Ann | CS145 | Don |
Bob | CS145 | Edy |
Cal | CS245 | Don |
... | ... | ... |
Пример: Пиво-Бары-Посетители
§ будет использоваться в течение всего курса
Виды связей.
![]() | |
![]() | |
0..n 0..n 0..n 0
Многие-ко-многим Многие-к-одному Один-к-одному
Представление связи Многие-к-одному.
E/R: линия со стрелкой в сторону «к-одному»
§ Линия со стрелкой и закругленным концом = «ровно один»
Пример: Посетители – Пиво – Любимый сорт
Представление связи «один-к-одному».
§
Обозначается линией со стрелками в обоих направлениях ( соответствует случаю 0приведенному выше).
§ Иногда важно подчеркнуть, что в связи между объектами один из объектов обязан существовать – на этот объект будет указывать круглая стрелка, назовем эту связь «один-к-ровно-одному».
В этой диаграмме, «Производитель» – объект, в схемах, приведенных ранее – атрибут. Где правильный вариант?
Атрибуты связи.
![]() |
§ Изображение для 3-ого (тернарного) способа связи:
![]() |
![]() |
§ Это действительно множественная (3-ая) связь.
§ Цена зависит от обоих объектов: бара и сорта пива.
§ Замечание: стрелка во множественной связи означает «все остальные объекты определяют один из этих»
§ Нет общего подхода для описания
§ Если цена зависит, например, только от сорта пива, то можно используя 2 бинарные связи: Цена-Пиво и Пиво-Бар
§ Еще лучше: просто сделать цену атрибутом пива
Преобразование множественной связи в бинарную.
§ Громоздко в E/R, но необходимо для некоторых «объектно-ориентированных» моделей
§ Создается новый объект-связь для представления строк множества связей
§ Например, (Joe's Bar, Bud, $2.50) для «Продаж»
§ Другие объекты связываются как «многие-к-ровно-одному» с новым объектом-связью
![]() |
Роли.
Иногда множество объектов может быть связано с самим собой.
§ Для отличия конец связи помечается меткой, которая называется ролью.

![]()
![]()
Муж Жена
![]()
![]()
![]()
| Жена |
d1 | d2 |
d5 | d4 |
... | ... |
![]()
![]()
1 2
![]()

| Друг3 |
d1 | d2 |
d1 | d3 |
d2 | d1 |
d2 | d4 |
... | ... |
§ Замечание: Друзья – есть симметрия, Семья - нет
§ В E/R модели нет способа отобразить симметрию.
Вопрос по модели:
Могли бы мы заменить связь «женаты» с двумя ролями: муж и жена – симметричной связью «супруги»?
Подклассы.
Подкласс = частный случай = меньше объектов = больше свойств.
Пример: Эль – это вид пива. Дополним свойства (=атрибуты и связи) пива, атрибутом «цвет» для этого вида (эль).
Подклассы в E/R модели.
§ Подклассы образуют дерево (не множественное наследование)
§ Is a – треугольник указывает на подкласс
Различия в определении подкласса.
1. E/R модель: Сущность (объект) имеет компоненты в каждом из множеств объектов, к которым она логически принадлежит.
§ Свойства объекта являются объединением свойств этих компонент распределены по множествам объектов
2. Объектно-ориентированная модель: Объект (сущность) принадлежит только одному классу.
§ Объект наследует свойства своих суперклассов.
![]() |

Pete's Ale
![]() |
Ключи.
Ключ – это множество таких свойств (атрибутов) объекта, что не существует 2-х объектов с одинаковыми свойствами (значениями ключевых атрибутов).
§ В E/R модели, каждое множество объектов должно иметь ключ. В случае, когда множество имеет несколько ключей, роль ключа «назначается» одному из них.
§ В E/R диаграммах ключ обозначается подчеркиванием атрибутов, определяющих ключ.
Пример.
Допустим, что «name» - это ключ для множества объектов «Beers».
![]() |
§ Название сорта пива является ключом и для Ales.
§ В общем случае, ключ корневого объекта – это ключ и всех остальных объектов.
Пример: Составной ключ.
![]() |
§ Возможно, что «Время» + «Аудитория» тоже ключ, но это не отмечается как ключ.















