- •Введение в базы данных
- •Отношения между прикладными программами и субд
- •Системы обработки баз данных
- •История баз данных
- •Организационный контекст
- •Реляционная модель
- •Коммерческие субд для микрокомпьютеров
- •Клиент-серверные приложения баз данных
- •Базы данных с использованием Интернет-технологий
- •Распределенные базы данных
- •Объектно-ориентированные субд
- •Банк данных
- •Основные понятия и определения
- •Пользователи банков данных
- •База данных
- •Архитектура базы данных. Физическая и логическая независимость
- •Схемы и отображения
- •Независимость от данных
- •Система управления базами данных – субд
- •Процесс прохождения пользовательского запроса
- •Введение в разработку баз данных
- •Метаданные
- •Индексы
- •Метаданные приложений
- •Подсистема средств проектирования
- •Подсистема обработки
- •Ядро субд
- •Создание базы данных
- •Процесс разработки базы данных
- •Моделирование данных
- •Функции субд
- •Модели данных
- •Объектные или инфологические модели данных
- •Модели данных на основе записей или даталогические
- •Реляционная модель данных
- •Преподаватели
- •Сетевая модель данных
- •. Физические модели данных
- •Концептуальное моделирование
- •Реляционная модель
- •Структура реляционных данных
- •Кортежи
- •Внешний ключ
- •Альтернативная терминология
- •Математические отношения
- •Отношения в базе данных
- •Реляционные ключи
- •Реляционная целостность
- •Целостность сущностей
- •Ссылочная целостность
- •Реляционные языки
- •Реляционная алгебра
- •Учебный проект DreamHome
- •Реляционная алгебра (продолжение)
- •Выборка (или ограничение)
- •Проекция
- •Декартово произведение
- •Объединение
- •Разность
- •Операции соединения
- •Tema-соединение (θ-join)
- •Естественное соединение
- •Внешнее соединение
- •Полусоединение
- •Пересечение
- •Деление
- •Другие языки
- •Примеры применения реляционной алгебры
- •Обзор жизненного цикла информационных систем
- •Жизненный цикл приложения баз данных
- •Проектирование базы данных
- •Проектирование баз данных на основе восходящего подхода (Метод нормализации или декомпозиции)
- •Цель нормализации
- •Проблемы, вызываемые использованием единственного отношения (аномалии обновления)
- •Проблема вставки
- •Проблема обновления
- •Проблемы удаления
- •Функциональные зависимости
- •Процесс нормализации
- •Декомпозиция без потерь и функциональные зависимости
- •Первая нормальная форма (1 нф) (из Коннолли)
- •Вторая нормальная форма (2нф)
- •Третья нормальная форма (знф)
- •Нормальная форма Бойса-Кодда (нфбк)
- •4 И 5 нормальные формы (4нф и 5нф)
- •Пример нормализации
- •. Другая декомпозиция отношения консультант
- •Некоторые комментарии к декомпозиционному алгоритму проектирования
- •Некоторые модификации алгоритма проектирования Избыточные функциональные зависимости
- •Транзитивные зависимости
- •Добавление атрибутов в фз
- •Правила вывода
- •Алгоритм проектирования бд методом декомпозиции (восходящий метод)
- •Проверка отношений на завершающей фазе их проектирования
- •Задачи к текущему материалу
- •Пример аномалий для 2нф
- •Нормальная форма Бойса—Кодда (нфбк) с примером аномалий для 3 формы
- •Язык sql
- •Запрос одиночной таблицы
- •Проектирование в sql
- •Выборка в sql
- •Сортировка
- •Встроенные функции sql
- •Встроенные функции и группировка
- •Запрос нескольких таблиц
- •Вложенные запросы
- •Соединение с помощью sql
- •Сравнение вложенного запроса и соединения
- •Внешнее соединение
- •Операторы exists и not exists
- •Изменение данных
- •Insert into запись
- •Insert into запись
- •Insert into третьекурсник
- •Удаление данных
- •Модификация данных
- •Запрос на sql с exist и not exist (реализация реляционной операции Деления)
- •Операция внешнего соединения таблиц в access (Мои замечания)
- •Псевдонимы столбцов и таблиц
- •Уточнения запроса
- •Теоретико-множественные операции
- •Декартово произведение наборов записей
- •Объединение наборов записей (union)
- •Пересечение наборов записей (intersect)
- •Intersect corresponding (id_компонента, Тип_компонента)
- •Вычитание наборов записей (except)
- •Операции соединения
- •Естественное соединение (natural join)
- •Условное соединение (join... On)
- •Соединение по именам столбцов (join... Using)
- •Внешние соединения
- •Левое соединение {left outer join)
- •Правое соединение {right outer join)
- •Внешнее соединение Преподаватель-Изучение-Предмет. Создание в access. Пример
- •Операторы exists и not exists
- •Низходящее проектирование бд на основе er-модели Модель «сущность—связь» и ее варианты
- •Реализация низходящего проектирования бд на основе er-модели
- •Типы сущностей
- •Способы представления сущностей на диаграмме
- •Атрибуты
- •Типы связей
- •Представление связей на диаграммах
- •Атрибуты связей
- •. Структурные ограничения
- •Показатель кардинальности
- •Степень участия
- •Примеры er-проектирования
- •Модель «сущность—связь» в другом рассмотрении
- •Элементы модели «сущность—связь»
- •Сущности
- •Атрибуты
- •Идентификаторы
- •Три типа бинарных связей
- •Диаграммы «сущность—связь»
- •Изображение атрибутов в диаграммах «сущность—связь»
- •Слабые сущности
- •Представление многозначных атрибутов при помощи слабых сущностей
- •Подтипы сущностей
- •Пример er-диаграммы
- •Документирование делового регламента
- •Модель «сущность—связь» и case-средства
- •Диаграммы «сущность—связь» в стиле uml
- •Сущности и связи в uml
- •Представление слабых сущностей
- •Представление подтипов
- •Конструкции ооп, введенные языком uml
- •Роль uml в базах данных на сегодняшний день
- •Примеры
- •Вопросы группы I
- •Вопросы группы II
- •Литература по курсу «базы и банки данных»
Низходящее проектирование бд на основе er-модели Модель «сущность—связь» и ее варианты
Модель «сущность—связь» (entity-relationship model, E-R model) представляет собой совокупность понятий и графических символов для построения концептуальных схем. Модель «сущность—связь» была предложена Питером Ченом и опубликована им в 1976 году. В своей статье Чен описал основные элементы модели. Позже к этой модели были добавлены подтипы (речь о которых пойдет далее), результатом чего стала расширенная модель «сущность—связь» (extended E-R model). На сегодняшний день, как правило, когда говорят о модели «сущность-связь», имеют в виду именно расширенный ее вариант.
Версии модели «сущность—связь»
Идеи, лежащие в основе расширенной модели «сущность—связь», были взяты на вооружение широким кругом профессионалов в области моделирования данных и проектирования баз данных, и сегодня почти все проекты по моделированию данных используют ту или иную ее модификацию. К сожалению, в ходу имеется несколько различных версий этой модели. Одна из них, носящая название информационной инженерии (information engineering, IE), была разработана Джеймсом Мартином в 1990 году. Она меньше всего распространена в современной промышленности, и мы не будем рассматривать ее далее.
В 1993 году. Национальный институт стандартов и технологии (National Institute of Standards and Technology) анонсировал еще одну версию модели «сущность—связь» в качестве национального стандарта США. Данная версия получила название IDEF1X, что расшифровывается как «Integrated Definition 1, Extended» — «Единый стандарт, версия 1, расширенная». Этот стандарт включает в себя основные идеи модели «сущность—связь», но использует для их представления другие графические символы. В стандарте IDEF1X предусмотрены средства для разработки как концептуальных, так и внутренних схем, а также методы преобразования первых во вторые.
На этом, однако, путаница не кончается. Новая объектно-ориентированная модель разработки под названием UML (Universal Modeling Language — универсальный язык моделирования) также взяла за основу модель «сущность—связь», но при этом ввела свои собственные символы и привнесла объектно-ориентированную специфику.
В конечном счете мы имеем исходную модель «сущность—связь», расширенную модель «сущность—связь», информационную инженерию, национальный стандарт IDEF1X и UML. Эту ситуацию можно заклеймить как абсурдную (таковой она в действительности и является), однако тем самым мы не сможем в ней ничего изменить. Вопрос звучит так: что мы со всем этим будем делать?
Выбор версии модели
Проще всего было бы вскинуть руки и сказать: «Чем связываться со всеми этими версиями, давайте лучше сосредоточимся на расширенной модели „сущность-связь", а остальные версии рассмотрим потом, если понадобится». Проблема заключается в том, что когда модель IDEF1X стала национальным стандартом, компании, занимавшиеся разработкой средств для моделирования данных, были вынуждены обеспечить соответствие своих продуктов этому стандарту, чтобы иметь возможность продавать их правительственным учреждениям. Игнорировать такой большой рынок было бы непростительно, поэтому большинство популярных в настоящее время программных продуктов для моделирования данных, например, ERWin и Visio, используют IDEF1X. А это значит, что именно с версией IDEF1X вам, вероятнее всего, придется сталкиваться в вашей практике, и даже чаще, чем с расширенной моделью «сущность—связь».
В то же время, растущая популярность объектно-ориентированной системной разработки и объектно-ориентированного программирования дала толчок распространению UML. Однако изначально UML предназначался в первую очередь для моделирования процессов и программ, и, по мнению многих, он пока не готов к использованию в качестве полноценного средства моделирования данных. Должно пройти еще какое-то время, прежде чем UML достигнет той стадии зрелости, на которой находятся модель IDEF1X и информационная инженерия. Кроме того, если вы не знакомы с концепциями объектно-ориентированного программирования, UML может оставить у вас странное впечатление.
По правде говоря, какое бы решение мы ни приняли в этой ситуации, оно все равно будет неудовлетворительным. Тем не менее, наш подход будет таков: знание классической расширенной модели «сущность—связь» необходимо, потому что содержащиеся в ней идеи и символы лежат в основе всех без исключения версий, а также потому, что данная модель столь широко распространена в промышленности. К несчастью, без знания модели IDEF1X также не обойтись, поскольку вам наверняка придется работать со средствами моделирования данных, а они по большей части следуют именно этой версии. Ну и, наконец, следует по крайней мере ориентироваться в символах, используемых в UML.
Исходя из вышесказанного, структура этой главы будет такова. Сначала будет описана расширенная модель «сущность—связь» в ее классическом варианте. Далее мы представим версию IDEF1X, которая не только использует другие символы, но и по-другому классифицирует связи. В заключительном разделе главы будет вкратце рассмотрено использование модели «сущность—связь» в UML.
В оставшейся части книги будет использоваться либо расширенная модель «сущность—связь», либо стандарт IDEF1X. Хотя временами это будет затруднять изложение, мы не видим другого способа хорошо подготовить вас к решению задач, с которыми вы можете столкнуться в ходе вашей будущей карьеры.
