Инфологическая модель данных Инфологическая модель реляционной БД – это структурная схема объектов БД – её таблиц и логических связей между таблицами.
Слово "инфологическая" происходит от лат. "informatio" - разъяснение, сведения и греч. "logikě" - логика, т.е. инфологическая модель означает информационную модель данных, между которыми установлены логические связи. Массивы данных обычно сводятся в таблицы, а таблицы – в базы данных (БД).
Слово "реляционная" происходит от relation (англ.) – отношение, в математических моделях данных отношения изображают в виде таблиц, поэтому БД, состоящая из двумерных таблиц, называется реляционной. Реляционная БД (РБД)состоит из нескольких таблиц, содержащих массивы данных, между таблицами установлены логические связи, которые и объединяют их в единую базу данных.
Отношение БД (таблица) состоит из полей (другое название - атрибутов), т.е. столбцов таблицы, и записей (или кортежей), т.е. строк таблицы. Шапка таблицы с названиями полей называется схемой отношения. Связь между таблицами устанавливаются по ключевым атрибутам, которые в Access могут быть трёх типов: простой ключ, составной ключ и внешний ключ.
Простой ключ или ключевой атрибут (в русифицированной версии Access – первичный ключ или ключевое поле) должен однозначно идентифицировать (определять) любую запись в таблице БД. Например, поле Фамилия не может быть первичным ключом, т.к. в кортежах БД могут быть люди с одной фамилией, поле Корпус может означать и корпус прибора, и воинское подразделение и т.п., поэтому в качестве первичного выбирают уникальные атрибуты – Табельный номер, шифр изделия, Код дисциплины и т.п.
Составной ключ –это первичный ключ, состоящий из нескольких
атрибутов, например, по отдельности атрибуты Фамилия и Дата рождения не могут однозначно определить любую запись таблицы, а составной атрибут Фамилия+Дата рождения является уникальным (единственным), так как маловероятно, что в таблице могут иметься две записи с совпадающими значениями этих полей.
Внешний ключ –это атрибут, который служит для связи с другими таблицами и имеется во всех таблицах, между которыми устанавливается связи.Обычнотаблица БД имеет один ключевой атрибут (простой или составной) и один или несколько вторичных. Внешним ключом для подчинённой таблицы является первичный ключ. Для задания связи эти поля таблицы должны иметь одинаковые имена или хотя бы одинаковые форматы данных.
Одна таблица в БД является основной, родительской, а связанные с ней таблицы – подчинёнными, дочерними, которые, в свою очередь являются основными для своих подчинённых таблиц и т.д. На рис. 1 изображена структура реляционной БД "Факультет", содержащая таблицы Деканат, Кафедры, Преподаватели, Дисциплины, Группы и Студенты .
связь 1:1
связь 1:N
связь N:M
Рисунок 1 Инфологическая модель реляционной БД "Деканат"
Между таблицами БД может быть три вида связей:
· связь "один к одному" , 1:1, например, между деканатом и факультетом, т.к. у факультета – один деканат, и у деканата – один факультет,
· связь "один ко многим", 1:N, например, между кафедрой и преподавателями, т.к. у кафедры много преподавателей, а у каждого преподавателя – одна кафедра и
· связь"многие ко многим", N:M, например, между преподавателями и дисциплинами, т.к. один преподаватель читает несколько дисциплин, и одна дисциплина может читаться несколькими преподавателями.
Связи "один к одному" и "один ко многим" легко устанавливаются в Access, а связь "многие ко многим" напрямую не может быть реализована, но фактически она представляет собой две связи типа "один ко многим", поэтому для неё создаётся третья таблица, ключ которой состоит из двух полей, общих для двух таблиц со связью N:M. Таким образом, связь N:M заменяется на ещё одну таблицу, которая связывается с обеими таблицами двумя связями 1:N. В таблице связи, кроме ключевых атрибутов могут быть и другие описательные поля.
Например, связь N:M между таблицами-объектами ГРУППА и ДИСЦИПЛИНА реализуется с помощью третьей таблицы с именем ГРУП-ДИСЦ, которые связаны с исходными таблицами связями 1:N (рис. 2).
N M
1 N N 1
Рисунок 2 Замена связи N:M на таблицу с двумя связями 1:N
Таким образом, реализация связи "многие ко многим" добавляет в БД ещё один объект – таблицу связи.
Логическая модель реляционной БД – это инфологическая БД, в которой каждая её таблица представлена своей схемой – шапкой таблицы и показаны ключевые атрибуты, между которыми установлены логические связи между таблицами.
Целостность данных
Целостность данных - это система правил, используемых в СУБД Access для поддержания связей между записями в связанных таблицах, а также обеспечение защиты от случайного удаления или изменения связанных данных:
1 Поле таблицы, посредством которого реализована связь, является ключевым полем или имеет уникальный индекс (индекс – это значение поля в записи, по которому выполняется поиск этой записи).
2 Связанные поля таблиц имеют один тип данных (исключение - поле счетчика может быть связано с числовым полем, если оно имеет тип Длинное целое).
3 Обе таблицы принадлежат одной базе данных Access.
4 При изменении поля связи в записи родительской таблицы следует синхронно изменить значение поля связи в записях дочерней таблицы.
5 При удалении записи в родительской таблице следует удалить соответствующие записи в дочерней таблице.
Изменения или удаления в записях дочерней таблицы при одновременном изменении или удалении записи в родительской таблице называются каскадными изменениями или каскадными удалениями.
Таким образом, ссылочная целостность– это совокупность каскадных связей между отдельными таблицами БД.Нарушение хотя бы одной из них делает информацию в БД недостоверной.
СУБД обычно блокирует действия, которые нарушают целостность связей между таблицами, т.е. ссылочную целостность.
Пример 1 Создать реляционную БД Спортзал, состоящую из объектов Тренеры (Код тренера, Фамилия, Имя, Отчество, Дата рождения, Должность, Дисциплина, Код дисциплины, Телефон, Зарплата) , Спортсмены (Код спортсмена, Фамилия, Имя, Отчество, № группы, Телефон) и Виды спорта(Код дисциплины, Название дисциплины). Разработать инфологическую и логическую модели БД, структуру таблиц, установить связи. Ввод данных в таблицы выполнить посредством форм.
Порядок работы
1 Разработка инфологической модели БД Спортзал, т.е. определение всех таблиц БД и связей между ними.
По условию, БД должна содержать 3 таблицы: Тренеры, Спортсмены, Виды спорта. Между таблицами Тренеры и Виды спорта действует связь 1:M, между таблицами Виды спорта и Спортсмены – связь N:M. Связь "многие ко многим" между объектами Виды спорта и Спортсмены заменяем на новую таблицу с именем Оценки (Код спортсмена, Код дисциплины, Оценки) и двумя связями типа 1:N.
Всего в БД Кафедра получается 4 таблицы и 3 связи типа 1:N, её инфологическая модель имеет вид (рис. 3):
1:N
1:N 1:N
Рисунок 3 Инфологическая модель БД Спортзал
2 Составление логической модели БД, она должна показывать схему(структуру) каждой таблицы и связанные ключевые атрибуты (рис. 4).
Назначим ключевые атрибуты:
· в таблице Спортсмены - Код спортсмена,
· в таблице Тренеры: первичный ключ – Код тренера (для связи с внешними структурами, например, с Тренерским советом), внешний ключ - Код дисциплины,
· в таблице Виды спорта - Код дисциплины.
В таблице связи Оценки первичного ключа быть не может, т.к. данные в любом поле повторяются и идентификаторами записей быть не могут.
Рисунок 4 Логическая модель БД Спортзал
3 Создание реляционной БД в Access.
3.1 Создание РБД Спортзал:
§ загрузить Access, в появившемся окне выбрать пункт Новая база данных, затем щелкнуть по кнопке ОК;
§ в окне Файл новой базы данных задайте имя (пункт Имя файла)и выберите папку (пункт Папка),где ваша база будет находиться. По умолчанию Access предлагает имя базы dbl, а тип файла — Базы данных Access. Имя задайте Спортзал, а тип файла оставьте прежним;
§ щелкнуть по кнопке Создать.
3.2 Создать структуру таблицы Тренеры.Для этого:
§ в окне базы данных выберите объект Таблицы, а затем щелкните по кнопке Создать;
§ в окне Новая таблица выберите пункт Конструктори щелкните по кнопке ОК. В результате проделанных операций открывается окно таблицы в режиме конструктора, в котором следует определить поля таблицы;
§ определите поля таблицы в соответствии с табл. 1;
§ в качестве ключевого поля задайте «Код тренера». Для этого щелкните по полю «Код тренера» и по кнопке на панели инструментов или выполните команду Правка\ Ключевое поле;
§ закройте таблицу, задав ей имя Тренеры.
Таблица 1 Тренеры.
Имя поля
| Тип данных
| Размер поля
| Код тренера
| Числовой
| Целое
| Фамилия
| Текстовый
|
| Имя
| Текстовый
|
| Отчество
| Текстовый
|
| Дата рождения
| Числовой
| Целое
| Должность
| Текстовый
|
| Дисциплина
| Текстовый
|
| Код дисциплины
| Числовой
| Целое
| Телефон
| Числовой
| Целое
| Зарплата
| Денежный
|
| Заполнение таблицы данными будет сделано в режиме формы.
3.3 Создать структуру таблицы Виды спортааналогично п. 3.2 в соответствии с табл. 2.
Таблица 2 Виды спорта
Имя поля
| Тип данных
| Размер поля
| Код дисциплины
| Числовой
| Целое
| Название дисциплины
| Текстовый
|
|
В качестве ключевого поля задайте «Код дисциплины». Заполняться эта таблица будет также в режиме формы.
3.4 Создать структуру таблицы Спортсменыаналогично п. 3.2 в соответствии с табл. 3.
Таблица 3 Спортсмены
Имя поля
| Тип данных
| Размер
|
|
|
| Код спортсмена
| Числовой
| Целое
| Фамилия
| Текстовый
|
| Имя
| Текстовый
|
| Отчество
| Числовой
| Целое
| № группы
| Числовой
| Целое
| Телефон
| Числовой
| Целое
| В качестве ключевого поля задайте "Код спортсмена". Заполняться эта таблица будет также в режиме формы.
3.5 Создайте структуру таблицы Оценкианалогично п. 3.2 в соответствии с табл. 4.
Таблица 4 Оценки
Имя поля
| Тип данных
| Размер поля
| Код спортсмена
| Числовой
| Целое
| Код дисциплины
| Числовой
| Целое
| Оценки
| Числовой
| Целое
|
В этой таблице задавать ключевое поле не надо, так как данные во всех полях могут повторяться. Заполнение таблицы - в режиме формы.
3.6 Разработать схему данных, т.е. создать связи между таблицами. Для этого:
§ щелкните по кнопке на панели инструментов или выполните команду Сервис\ Схема данных. На экране появится окно «Схема данных»;
§ щелкните по кнопке на панели инструментов или выполните команду Связи\ Добавить таблицу;
§ в появившемся окне будет выделено название одной таблицы. Щелкните по кнопке Добавить;
§ переведите выделение на имя следующей таблицы и щелкните по кнопке Добавить. Аналогично добавьте оставшиеся две таблицы;
§ закройте окно, щелкнув по кнопке 3акрыть;
Создайте связь между таблицами Тренерыи Виды спорта.Дляэтого подведите курсор мыши к полю Код дисциплины в таблице Виды спорта,щелкните левой кнопкой мыши и, не отпуская ее, перетащите курсор на поле Код дисциплины в таблицу Тренеры, а затем отпустите кнопку мыши. На экране откроется окно Изменение связей;
§ установите флажок ("галочку") в свойстве Обеспечение целостности данных, щелкнув по нему;
§ установите флажок в свойстве Каскадное обновление связанных полей и Каскадное удаление связанных записей',
Задание каскадного обновления связанных полей и каскадного удаления связанных записей позволяет отредактировать записи только в таблице Виды спорта,а в таблице Тренерыэти данные изменятся автоматически. Например, если удалить из таблицы Виды спорта один предмет, то в таблице Тренерыудалятся все строки, связанные с этим предметом.
§ щелкните по кнопке Создать. Связь будет создана;
§ аналогично создайте связи между другими таблицами БД согласно рис. 4. Результат представлен на рис. 5;
§ закройте окно схемы данных, ответив ДАна вопрос о сохранении макета.
Рисунок 5 Структурная схема реляционной БД Спортзал
|