
- •1. Введение в курс
- •1.1. Введение в базы данных, содержание и цели курса, основные понятия
- •1.1.1. О чём этот курс
- •1.1.2. Основные определения
- •1.1.3. Способы организации знаний в базах знаний
- •1.1.4. Применение баз знаний
- •1.1.5. Виды моделей баз данных
- •2. Теория баз данных
- •2.1. История развития представлений о базах данных
- •2.1.1. Области применения вычислительной техники
- •2.1.2. Базы данных и информационные системы
- •2.1.3. История развития баз данных
- •2.1.4. Этапы развития баз данных
- •2.2. Основные термины и определения теории бд, виды бд и их отличия
- •2.2.1. Классификация бд
- •2.3. Реляционные бд, понятие сущности и связи
- •2.3.1. Общие определения
- •2.3.2. Факты о реляционной модели данных
- •2.3.3. Достоинства реляционной модели данных
- •2.3.4. Недостатки реляционной модели данных
- •2.3.5. Целостность бд
- •2.3.6. Отношения
- •2.3.7. Кортежи и отношения
- •2.3.8. Связи
- •2.3.9. Ключи отношений
- •2.3.10. Ссылочная целостность
- •2.3.11. Консистентность данных
- •2.4. Многоуровневая архитектура баз данных, понятие физического и логического уровней баз данных
- •2.4.1. Определения
- •2.4.2. Многоуровневая структура баз данных
- •2.4.3. Постоянная и переменная длина записи
- •2.4.4. Способы представления данных
- •2.4.5. Простейший вариант – плоский файл
- •2.4.6. Факторизация по значениям поля
- •2.4.7. Индексирование по полям
- •2.4.8. Комбинация простых представлений
- •2.4.9. Использование цепочек указателей
- •2.4.10. Многосписочные структуры
- •2.4.11. Инвертированная организация
- •2.4.12. Иерархическая организация
- •2.4.14. Промежуточный итог
- •2.4.15. Методы индексирования
- •2.4.16. Индексирование по комбинации полей
- •2.4.17. Селективный индекс
- •2.4.18. Индексация по методу сжатия
- •2.4.19. Фронтальное сжатие
- •2.4.20. Сжатие окончания
- •2.4.21. Символьные указатели
- •2.4.23. Индексно-последовательная организация
- •2.4.24. Сбалансированные деревья
- •2.4.25. Ведение файла
- •2.4.26. Хэширование
- •2.4.28. Итог
- •2.5. Алгоритмы хэширования
- •2.5.1. Введение
- •2.5.2. Хэширование
- •2.5.2. Факторы эффективности хэширования
- •2.5.3. Размер участка памяти
- •2.5.4. Плотность заполнения
- •2.5.5. Алгоритмы хэширования
- •2.5.6. Размещение записей в области переполнения
- •2.5.7. Итог
- •2.6. Механизмы обработки и хранения данных в бд
- •2.6.1. Введение
- •2.6.2. Механизмы обработки и хранения данных в ms-sql 6.0-6.5
- •2.6.3. Механизмы обработки и хранения данных в ms-sql 7.0 и более поздних версиях
- •2.6.4. Метод доступа isam
- •2.6.5. Метод доспута MyIsam
- •2.6.6. Метод доступа vsam
- •2.6.7. Включение записей в *sam-файлы
- •2.6.8. Размещение индексов для *sam-файлов
- •2.6.9. Метод доступа InnoDb
- •2.6.10. Итог
- •2.7. Физическое представление древовидных и сетевых структур
- •2.7.1. Введение
- •2.7.2. Древовидные структуры
- •2.7.3. Сетевые структуры
- •2.7.4. Итог
- •3.1.4. Стандарты разработки бд/субд
- •3.1.5. Sql и его стандарты
- •Часть 1 – sql/Структура (sql/Framework) – определяет общие требования соответствия и фундаментальные понятия sql.
- •3.1.6. Использование методологии idef1x
- •3.1.7. Пример логической и физической схемы в ErWin
- •3.1.8. Минимальный набор стандартных таблиц
- •3.1.8. Итог
- •3.2. Средства автоматизированного проектирования бд
- •3.2.1. Введение
- •3.2.2. Case-технологии
- •3.2.3. Достоинства case-технологий
- •3.2.4. Промежуточные выводы и определения
- •3.2.5. Методологии структурного моделирования
- •3.2.6. Методология sadt (idef0)
- •3.2.7. Методологии информационного моделирования
- •3.2.8. Нотация Чена
- •3.2.9. Нотация Мартина
- •3.2.10. Нотация ide1x
- •3.2.11. Нотация Баркера
- •3.2.12. Язык информационного моделирования
- •3.2.13. Case-средства
- •3.2.14. Процесс создания модели бд в ErWin
- •3.2.15. Процесс создания модели бд в Sparx ea
- •3.2.16. Итог
- •3.3. Особенности проектирования бд на логическом и физическом уровнях
- •3.3.1. Введение
- •3.3.2. Модель бд
- •3.3.4. Банки данных
- •3.3.5. Модели данных
- •3.3.6. Этапы проектирования бд
- •3.3.7. Проектирование бд: внешний уровень
- •3.3.8. Проектирование бд: инфологический уровень
- •3.3.9. Проектирование бд: даталогический уровень
- •3.3.10. Уровни sql
- •3.3.11. Проектирование бд: физический уровень
- •3.3.12. Итог
- •3.4. Прямое и обратное проектирование бд
- •3.4.1. Введение
- •3.4.2. Понятие нормализации
- •3.4.3. Требования нормализации
- •3.4.4. Примеры аномалий
- •3.4.5. Нормальные формы
- •3.4.6. Зависимости
- •3.4.6. Первая нормальная форма
- •3.4.7. Вторая нормальная форма
- •3.4.8. Третья нормальная форма
- •3.4.9. Нормальная форма Бойса-Кодда
- •3.4.10. Четвёртая нормальная форма
- •3.4.11. Пятая нормальная форма
- •3.4.12. Доменно-ключевая нормальная форма
- •3.4.13. Ещё раз, кратко, все нормальные формы
- •3.4.14. Ещё раз, кратко, в ErWin
- •3.5.2. Показатели качества бд
- •3.5.3. Итог
3.2.15. Процесс создания модели бд в Sparx ea
Создаём новый проект…
Рисунок 3.2.15.1 – Создание нового проекта в Sparx EA
Указываем, что в проекте будет БД (обратите внимание: Sparx EA позволяет создавать очень много интересных и полезных компонентов проекта).
Рисунок 3.2.15.2 – Выбор компонентов проекта в Sparx EA
В «шаблонной» схеме уже есть две таблицы. Можно редактировать их (и добавлять новые), а можно их удалить и начать всё «с нуля».
Рисунок 3.2.15.3 – Удаление шаблонной части схемы в Sparx EA
Добавляем сущность (таблицу)…
Рисунок 3.2.15.4 – Добавление сущности в Sparx EA
Указываем имя таблицы и вид СУБД…
Рисунок 3.2.15.5 – Указание параметров сущности в Sparx EA
В контекстном меню таблицы выбираем «Attributes»…
Рисунок 3.2.15.6 – Переход к созданию атрибутов сущности в Sparx EA
Указываем все необходимые свойства атрибута и нажимаем «Save»…
Рисунок 3.2.15.7 – Создание атрибутов сущности в Sparx EA
После добавления всех атрибутов таблица «Students» примет вот такой вид…
Рисунок 3.2.15.8 – Сущность в Sparx EA
После создания всех таблиц получаем такую схему…
Рисунок 3.2.15.9 – Схема БД в Sparx EA без связей
Для установки связи между таблицами используем инструмент «Association»…
Рисунок 3.2.15.10 – Установка связи между сущностями в Sparx EA
Теперь связь нужно «настроить»…
Рисунок 3.2.15.11 – Установка параметров связи между сущностями в Sparx EA
Долгая и мучительная работа с этим контекстным меню покажет, что мы кое-что забыли. Возвращаемся к редактированию таблицы «Students» и вручную добавляем атрибут gr_id (integer). Теперь указываем его в качестве поля внешнего ключа, ещё немного играем с настройками связи (тип линии, кардинальность и т.п.)
Примечание: в Sparx EA в отличие от ErWin связи нужно проводить ОТ ДОЧЕРНЕЙ СУЩНОСТИ К РОДИТЕЛЬСКОЙ.
В итоге мы получим вот такое…
Рисунок 3.2.15.12 – Связь между сущностями в Sparx EA
Продолжая в том же духе, создаём (вручную!) промежуточную таблицу для связи M-M между «Students» и «Subjects», устанавливаем связи и т.д.
Наконец, когда схема готова (обратите внимание, Sparx EA не делает различия между логическим и физическим уровнем схемы), её можно экспортировать в SQL-скрипт, пригодный для генерации реальной БД в, например, MySQL.
Выполняем такие действия…
Рисунок 3.2.15.13 – Генерация схемы БД в Sparx EA
Рисунок 3.2.15.14 – Экспорт схемы БД в Sparx EA в файл
И, наконец, получаем готовый аккуратный скрипт в диалекте SQL нужной нам СУБД (в данном случае – MySQL).
Вот первые несколько строк скрипта для генерации БД, создание модели которой мы рассматривали…
И, наконец, получаем готовый аккуратный скрипт в диалекте SQL нужной нам СУБД (в данном случае – MySQL).
Вот первые несколько строк скрипта для генерации БД, создание модели которой мы рассматривали…
DROP TABLE IF EXISTS Students;
DROP TABLE IF EXISTS Subjects;
DROP TABLE IF EXISTS Groups;
CREATE TABLE Students
( st_id INTEGER NOT NULL,
st_fio VARCHAR(200) NOT NULL,
st_birthdate INTEGER,
st_address VARCHAR(50),
st_isbudget BIT NOT NULL DEFAULT 1,
gr_id INTEGER,
PRIMARY KEY (st_id),
KEY (gr_id));
CREATE TABLE Subjects
( sb_id INTEGER NOT NULL,
sb_name VARCHAR(250),
PRIMARY KEY (sb_id));
CREATE TABLE Groups
( gr_id INTEGER NOT NULL,
gr_code VARCHAR(10),
PRIMARY KEY (gr_id));
ALTER TABLE Students ADD CONSTRAINT FK_Students_Groups
FOREIGN KEY (gr_id) REFERENCES Groups (gr_id);