- •Введение
- •Введение в системы управления базами данных
- •Основные понятия баз данных
- •Некоторые правила построения баз данных
- •Реляционные отношения между таблицами. Целостность данных
- •Отношение «один-к-одному»
- •Отношение «один-ко-многим»
- •Отношение «многие-ко-многим»
- •Нормализация
- •Индексирование
- •Использование языка sql ms access
- •Общие сведения о ms access
- •Запуск ms Access
- •Порядок работы при создании объектов Объект Таблица.
- •Объект Форма.
- •Объект Запрос.
- •Объект Отчёт.
- •Объект Макрос.
- •Автоматический запуск макроса.
- •Регистрация дат создания и изменения записей с помощью макроса.
- •Объект Модуль.
- •Использование субд Microsoft Access на примере создания базы данных по учету товаров
- •Использование суБд access на примере задачи об открытии фирмы по продаже жилья
- •Использование суБд access на примере ведения карточки студента
- •Практические задания для самостоятельной работы
- •База «Жители» состоит из 3-х следующих таблиц: «Район», «Здание», «Жильцы».
- •Вариант 2. "Жильё"
- •Вариант 3. "Население"
- •Вариант 4. "Вакансии"
- •Вариант 5. "Автомагазины"
- •Вариант 6. "Реализация"
- •Вариант 7. "Поставщики-детали"
- •Вариант 8. "Покупатели"
- •Вариант 9. "Станции техобслуживания"
- •Вариант 10. "Магазины запчастей"
- •Вариант 11. "Больница"
- •Вариант 12. "Служащие"
- •Контрольные вопросы по теме
- •Список литературы
Отношение «один-ко-многим»
Связь "один-ко-многим" является самой распространенной для реляционных баз данных. Она позволяет моделировать иерархические структуры данных. Различают две разновидности этой связи: в первом случае всякой записи в родительской таблице должны соответствовать записи в дочерней таблице, во втором случае некоторые записи в родительской таблице могут не иметь записей в дочерней таблице.
Пример отношения "один-ко-многим" приведен на рисунке 1.2.
Таблица «Товары» Таблица «Отпуск товаров»
Товар |
Ед. изм. |
Цена ед. |
|
Товар |
Дата |
Кол-во (ед) |
Сахар |
Кг |
12 |
|
Сахар |
10.01.03 |
100 |
Макароны |
Кг |
10 |
|
Сахар |
15.01.03 |
200 |
Куры |
Кг |
60 |
|
Сахар |
12.02.03 |
50 |
Фанта |
бут.1 л |
15 |
|
Макароны |
20.02.03 |
1000 |
|
|
|
|
Макароны |
10.03.03 |
500 |
|
|
|
|
Фанта |
09.01.03 |
2000 |
Рис. 1.2. Отношение "один-ко-многим”
Отношение «многие-ко-многим»
Ниже приведены таблицы (смотри рисунок 1.3), состоящие в отношении "многие-ко-многим". В каждой учебной группе, как правило, ведут занятия несколько преподавателей. Каждый преподаватель может вести, во-первых, несколько разных предметов и, во-вторых, преподавать в разных группах.
Таблица «Группы» Таблица «Преподаватели и предметы»
Группа |
№ предмета |
|
№ предмета |
ФИО |
Предмет |
Кафедра |
1Ф1 |
10 |
|
10 |
Иванов В.В. |
Информатика |
ТИ-1 |
1Ф1 |
12 |
|
12 |
Иванов В.В. |
Теория систем |
ТИ-1 |
1Ф1 |
62 |
|
12 |
Петров П.П. |
Теория систем |
РИО |
1У1 |
62 |
|
10 |
Васин И.И. |
Информатика |
ТИ-1 |
|
|
|
62 |
Лавров И.И. |
Философия |
ЭИ-1 |
… |
… |
|
… |
… |
… |
… |
Рис. 1.3. Отношение "многие-ко-многим”
Ссылочную целостность рассмотрим на примере наиболее часто встречающейся связи между таблицами "один-ко-многим". Возможны два вида изменений, которые приведут к утере связей между записями в родительской и дочерней таблицах:
-
изменение значения поля связи в записи родительской таблицы без изменения значений полей связи в соответствующих записях дочерней таблицы;
-
изменение значения поля связи в одной из записей дочерней таблицы без соответствующего изменения значения поля связи в родительской и дочерней таблицах.
Рассмотрим первый случай. Заменим в таблице «Товары» в поле «Товар» «Сахар» на «Рафинад». В результате в дочерней таблице «Отпуск товаров» для поля «Рафинад» нет сведений об его отпуске со склада, а некоторые записи таблицы «Отпуск товаров» содержат сведения об отпуске товара «Сахар», о котором нет информации в таблице «Товары».
Рассмотрим второй случай. Заменим в одной из записей таблицы «Отпуск товаров» значение поля связи «Сахар» на «Рафинад». В результате в дочерней таблице «Отпуск товаров» недостоверны сведения об отпуске товара «Сахар» и одна из записей таблицы «Отпуск товаров» содержат сведения об отпуске товара «Рафинад», данные о котором отсутствуют в таблице «Товары».
И в первом, и во втором случае произошло нарушение целостности базы данных, т.е. хранящаяся в ней информация становится недостоверной.
СУБД обычно блокирует действия, которые нарушают целостность связей между таблицами, т.е. нарушают ссылочную целостность. Когда говорят о ссылочной целостности, имеют в виду совокупность связей между отдельными таблицами во всей БД. Нарушение хотя бы одной такой связи делает информацию в БД недостоверной. Чтобы предотвратить потерю ссылочной целостности, используют механизм каскадных изменений. Например, в СУБД Access на этапе формирования связей надо для этого сначала установить флажок «Обеспечение целостности данных», а далее флажки «Каскадное обновление связанных полей» и «Каскадное удаление связанных полей».