
- •Введение
- •Содержание
- •1. Файловые системы
- •История развития
- •Файловые системы, принципы построения
- •Работа с типизированным файлом
- •Недостатки файловых систем
- •Задание
- •Реляционная таблица
- •Определение домена
- •Создание таблиц в среде Microsoft Access
- •Задание
- •Реляционные ключи
- •Связь между таблицами
- •Обеспечение целостности данных
- •Построение схемы данных средствами Microsoft Access
- •Мастер подстановок
- •Задание
- •Концепция ER-модели
- •Задание
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (BCNF)
- •Четвёртая нормальная форма (4NF)
- •Пятая нормальная форма (5NF)
- •Задание
- •Выборка значений из таблиц – SELECT
- •Порядок сортировки – ORDER BY
- •Ограничение набора данных – WHERE
- •Предикат существования EXISTS
- •Агрегатные функции
- •Группировка данных – Group By
- •Псевдонимы столбцов
- •Псевдонимы таблиц
- •Объединение нескольких таблиц
- •Построение запросов в среде Microsoft Access
- •Задание
- •Вставка новой записи – INSERT
- •Редактирование данных – UPDATE
- •Удаление записей – DELETE
- •Задание
- •Основные типы данных SQL-92
- •Язык определения данных – DDL
- •Задание
- •Подготовка отчёта в среде Access
- •Задание
- •3-х уровневая архитектура ANSI-SPARC
- •Создание форм для ввода данных в Microsoft Access
- •Задание
- •Строка соединения ADO
- •Соединение с хранилищем данных, компонент TADOConnection
- •Установка соединения
- •Пример соединения без регистрации пользователя
- •Информирование о БД
- •Задание
- •Базовый класс доступа к данным TDataSet
- •Открытие и закрытие набора данных
- •Обновление набора данных
- •Перемещение по набору данных
- •Создание закладок и переход к закладке
- •Редактирование записей в наборе
- •Фильтрация набора данных
- •Организация поиска данных
- •Взаимодействие с элементами управления данными
- •Задание
- •Поле таблицы – класс TField
- •Классификация полей по функциональному назначению
- •Классификация полей по типу обслуживаемых данных
- •Обращение к отдельному объекту-полю
- •Задание
- •Поля подстановки
- •Вычисляемые поля
- •Организация отношения главная-подчинённая таблица
- •Задание
- •Поля BLOB
- •Задание
- •Источник данных – компонент TDataSource
- •Общие черты компонентов отображения данных
- •Сетка базы данных – компонент TDBGrid
- •Статический текст – компонент TDBText
- •Строка ввода БД – компонент TDBEdit
- •Многострочный текстовый редактор БД – TDBMemo
- •Изображение БД – компонент TDBImage
- •Список БД – TDBListBox
- •Комбинированный список БД – TDBComboBox
- •Флажок БД – TDBCheckBox
- •Радиогруппа БД – TDBRadioGroup
- •Компонент – TDBCtrlGrid
- •Навигатор – TDBNavigator
- •Задание
- •Создание базы данных
- •Удаление базы данных
- •Создание таблиц
- •Пример создания таблиц средствами Transact SQL
- •Создание представлений
- •Задание
- •Определение и использование переменных
- •Операторы управления Transact-SQL
- •Базовые функции Transact-SQL
- •Хранимые процедуры
- •Триггеры
- •Задание
- •Запрос TADOQuery
- •Хранимая процедура TADOStoredProc
- •Транзакции и их изоляция
- •Управление транзакциями и компонент TADOConnection
- •Задание
- •Построение простейшего документа XML
- •Атрибуты
- •Определение документа DTD
- •Задание

24
Рисунок 3.9. – Настройка поля Spec_ID таблицы студентов
В элементе “Источник строк” введите инструкцию на структурированном языке запросов:
SELECT * FROM Spec ORDER BY SpName;
Эта команда укажет, на то, что в качестве источника данных будет выступать весь перечень специальностей из таблицы, в дополнение ко всему список упорядочится по алфавиту.
Нам осталось внести два изменения. Укажите, что присоединяются два столбца (свойство “Число столбцов”) и размеры этих столбцов 0 и 4 сантиметра (свойство ширина столбцов). Закройте конструктор, не забыв сохранить изменения. Откройте таблицу Students в режиме редактирования данных. Благодаря мастеру подстановок вместо невыразительных значений ключей поле Spec_ID научилось отображать истинные названия специальностей.
Задание
Проанализируйте таблицы, созданные вами на лабораторной работе № 2. Определите ключевые поля, выявите и устраните повторяющиеся данные.
Ставропольский государственный университет, кафедра КБ

25
IV. Модель “сущность-связь” (ER-модель)
Вид занятия – практическое занятие. Время занятия – 2 часа.
При проектировании структур сравнительно простых баз данных разработчик не сталкивается с существенными трудностями. Тому подтверждение пример БД по учёту студентов ВУЗа. Мы легко разработали 2-х табличную физическую модель, позволяющую хранить требуемые данные. Ситуация кардинально меняется, при постановке задач более высокой степени сложности. Даже профессиональному создателю БД тяжело с первой попытки сформировать корректную физическую модель будущей базы данных. Именно поэтому при разработке серьёзных БД процессу физического моделирования предшествует построение более простых моделей БД: концептуальной и логической. На сегодняшнем занятии мы рассмотрим один из методов формирования высокоуровневой концептуальной модели предложенный в 1976 году Ченом. Анонсируемая модель называется моделью
“сущность-связь” (Entity-Relationship model, или просто ER-моделью).
Концепция ER-модели
Идея модели “сущность-связь” зиждется на трёх понятиях: тип сущности (entity type), атрибут и тип связи (relationship type).
ТИП СУЩНОСТИ – это физический или абстрактный объект, подлежащий учёту в БД. Позднее (на физическом этапе моделирования) тип сущности превратится в реляционную таблицу.
Для выявления типов сущностей необходимо проанализировать всю информацию, подлежащую учёту в будущей БД. Если объект отвечает на вопрос “Кто?” или “Что?”, то это первый признак, что перед нами тип сущности. Примерами типов сущностей могут стать: “Студент”, “Специальность”, “Автомобиль”, “Товар”. Типы сущности разделяются на сильные и слабые.
Под слабым типом сущности понимается, тип сущности, зависящий от какого-то другого типа сущности.
Сильный тип сущности не зависит от какого-то другого типа сущности.
В нашем примере тип сущности “Студент” зависит от типа сущности “Специальность”, таким образом “Студент” считается слабым, а “Специальность” – сильным типом сущности. На диаграммах сильный тип сущности изображается в виде прямоугольника с именем сущности внутри него, а каждый слабый тип сущности – в виде прямоугольника с двойным контуром (рис. 4.1).
Рисунок 4.1. – Изображение типов сущностей на диаграммах
© Осипов Д.Л., 2011

26
Каждый физический или абстрактный объект обладает какими-то характеристиками. У человека есть, имя, пол, возраст, профессия… У автомобиля: марка, цвет, объём двигателя... Для описания этих объектов типы сущности также должны быть вооружены определёнными свойствами, называемыми атрибутами.
АТРИБУТ – свойство типа сущности. На физическом этапе моделирования на основе атрибутов создаются поля таблиц.
В первую очередь атрибуты подразделяются на простые, составные и производные. Простой атрибут описывают одно независимое свойство типа сущности, составной – способен работать с несколькими свойствами. Примером простого атрибута может стать пол человека или дата рождения, примером составного – имя, отчество и фамилия. Производный (вычисляемый) атрибут представляет собой значение, полученное за счёт обработки данных, содержащихся в других атрибутах типа сущности. Например, возраст человека в годах можно получить за счёт вычитания из текущей даты данных хранящихся в атрибуте даты рождения.
При изображении модели атрибуты рисуются в виде эллипсов, присоединенных линией к соответствующей сущности и помеченных именем атрибута. Эллипс, содержащий производный атрибут окружается пунктирным контуром. Если атрибут является составным, то входящие в его состав атрибуты изображаются в виде присоединенных к нему эллипсов. Если атрибут входит в состав первичного ключа, то его название подчёркивается. На рисунке 4.2 предложен один из вариантов ER-модели будущей таблицы студентов.
Рисунок 4.2. – Представление атрибутов в ER-модели
Зачастую, на первом этапе формирования ER-модели, проектировщик БД ошибочно принимает типы сущностей за атрибуты. Так и мы бы могли дополнить тип сущности “Students” атрибутом специальности. Такая ошибка выявляется при исследовании способов взаимодействия типов сущностей между собой.
Для организации взаимодействия между типами сущностей применяются типы свя-
зи.
ТИП СВЯЗИ представляет собой ассоциацию между типами сущностей.
Ставропольский государственный университет, кафедра КБ

27
Отличительным признаком наличия типа связи между двумя типами сущностей считается возможность вставки глагола между названиями типов сущностей. Например:
“Студент” учится по “Специальности”. “Фирма” расположена в “Городе”.
На диаграммах связь обозначается в виде ромба, внутри которого записывается имя связи. Ромбик имеет двойной контур, если связь соединяет слабый тип сущности с сильным типом сущности. Для снижения уровня детализации допускается, чтобы на ERдиаграмме отображались только первичные ключи типов сущностей (см. рис .4.3).
Рисунок 4.3. – Представление типа связи на ER-диаграмме
Вполне возможна ситуация, когда типом связи охватывается одна и та же таблица. Такое часто бывает при построении иерархических структур, например организационной структуры предприятия. Такой тип связи называется рекурсивной связью. В последнем случае на каждом плече связи помечается ролевое имя этой связи (рис. 4.4.).
Структура
предприятия
Начальник Подчинённый
Зависит
Рисунок 4.4. – Рекурсивный тип связи
К базовым видам связи относят: а) Связь “один к одному”.
б) Связь “один ко многим”. в) Связь “многие ко многим”.
Ставропольский государственный университет, кафедра КБ

28
Рисунок 4.5. – Варианты видов связи на ER-диаграмме
Для выявления какой именно вид связи должен использоваться между двумя типами сущностей строят диаграмму для экземпляров сущностей. О наличии связи “один к одному” (рисунок а) следует говорить в тех случаях, когда каждая из гипотетических компаний (К1,К2,…, Kn) в состоянии обслуживать только в один из городов. И наоборот – каждый из городов в состоянии содержать только одну компанию. На рисунке б) приведён пример связи один – ко многим. Такой вид связи проявляется в тех случаях, когда, например, в одном городе может размещаться несколько компаний, а компания, в свою очередь, в состоянии обслуживать только один город. И, наконец, связь “многие ко многим” (рисунок в) имеет место в случае отсутствия ограничений на количество компаний в городах.
Рисунок 4.6. – Варианты видов связи
Стоит отметить, что возникновение на диаграмме связи “один к одному” как правило свидетельствует, что один из типов сущностей выбран не верно, и он скорее всего является обычным атрибутом.
Появление на ER-диаграмме связи “многие ко многим” приводит к тому, что при построении физической модели появляется третья таблица. Она выполняет роль диспетчера (коммутатора между основными таблицами). Диспетчер преобразует связь “многие ко многим” в две связи вида “один ко многим”.
Рисунок 4.7. – Пример реализации связи многие ко многим с помощью таблицыкоммутатора
Ставропольский государственный университет, кафедра КБ