- •Базы данных
- •1. Введение в базы данных
- •1.1. Базы данных и информационные системы
- •1.2. Архигсюура информационной системы
- •1.3. Системы управления базами данных
- •1.4. Локальные информационные системы
- •1.5. Способы разработки и выполнения приложений
- •1.6. Схема обмена данными при работе с бд
- •2. Модели и типы данных
- •2.1. Иерархическая модель
- •Сотоудники
- •2.2. Сетевая модель
- •2.3. Реляционная модель
- •2.4. Постреляционная модель
- •2.5. Многомерная модель
- •1996 1994 Петров Смирнов Яковлев
- •2.6. Объектно-ориентированная модель
- •2.7. Типы данных
- •3. Реляционная модель данных
- •3.1. Определение реляционной модели
- •3.2. Индексирование
- •3.3. Связывание таблиц
- •3.4. Контроль целостности связей
- •3.5. Теоретические языки запросов
- •I аспределенное Удаленное Распределен- Удаленн! 1йдо- Распределен- предстаеление представление ная функция ступ к данным наяЬд
- •4.5. Информационные системы в Интернете и интранете
- •Часть 2. I Ъоектиросанн ? и использование бд
- •7. Средства автоматизации проектирования
- •7.1. Основные определения
- •7.8. Рекомендации по применению case-систем
- •9. Дополнительные вопросы применения баз данных
- •9.1. Программно-аппаратные платформы
- •9.2. Перспективы развития субд
- •9.3. Стандартизация баз данных
- •9.4. Характеристика технологии ado.Net
- •10.1. Общая характеристика
- •10.2. Новые возможности Microsoft Access 2002
- •10.3.Средства поддержки проектирования
- •10.4. Создание основных элементов бд
- •IQdbl mdb
- •Option Compare Database Public Function funl() beep End Function
- •10.5. Работа с гиперссылками
- •10.6. Использование языка sql
- •Аргументы макрокоманды ' Инструкция sQl. Select distinctrow tof
- •10.7. Защита баз данных
- •10.9. Обслуживание баз данный
- •10.10. Репликация баз данных
- •Реплицируемые объекты
- •Реплицируемые объекты
- •10.11. Работа с мультимедиа-данными
- •Тип объекта
- •Comic Chat Boom Microsoft Graph so Music Prop pry Page 2 1 Option f ropery Page21 Ры-ndox FableВидео-клип
- •10.12. Создание файлов приложений
- •10.13. Страницы доступа к данным
- •Краткая характеристика отличий сДд от форм и отчетом
- •10.14. Разработка проекта
- •Распределение атрибутов по вариантам
- •11.1. Пользовательский интерфейс
- •11.2. Характеристика проекта
- •11.3. Компиляция и выполнение проекта
- •11.4. Разработка приложения
- •11.5. Средства интегрированной среды разработки
- •Управление параметрами среды
- •11.6. Базы данных и средства работы с ними
- •Компоненты приложений для баз данных
- •11.7. Создание таблиц базы данных
- •11.8. Создание приложения bde
- •Значения свойств компонентов
- •11.9. Работа с отчетами
- •12. Субд Visual FoxPro 8.0
- •12.1. Общая характеристика
- •12.2. Новые возможности Visual FoxPro 8.0
- •12.3. Элементы проекта
- •12.4. Интерфейс Visual FoxPro
- •12.5. Средства автоматизации разработки
- •12.6. Создание баз данных
- •12.7. Таблицы и индексы
- •12.8. Организация межтабличных связей
- •12.9. Обеспечение ссылочной целостности
- •12.10. Создание запросов
- •Variables:
- •13. Microsoft sql Server 2000
- •13.1. Характеристика sql Server
- •13.2. Язык запросов Transact-sql
- •13.3. Системные базы данных и таблицы
- •13.4. Создание баз данных
- •13.5. Работа с таблицами
- •15.1. Принципы функционирования Web-приложений
- •15.2. Архитектура Web-приложений, публикующих бд
- •15.3. Обзор Web-серверов
- •15.4. Использование Personal Web-server
- •15.5. Использование Microsoft Internet Information Server
- •15.6. Использование Apache дляMicrosoft Windows 9х/2000
- •Вы видите это вместо ожидаемой страницы?
- •15.7. Варианты создания Web-узла
- •16. Интерфейсы программирования Web-приложений
- •16.1. Общий интерфейс взаимодействия cgi
- •18. Публикация бд средствами Microsoft Access
- •18.1. Характеристика вариантов публикации
12.9. Обеспечение ссылочной целостности
Обеспечение ссылочной целостности означает определение допустимых операций над связанными между собой таблицами. Главное требование ссылочной целостности заключается в том, чтобы записи дочерних таблиц имели ссылки на записи в родительской таблице (дети должны иметь родителей). В родительской таблице могут быть записи, не имеющие связанных с ними записей в дочерних таблицах (может быть семья без детей). В Visual FoxPro поддержка ссылочной целостности выполняется с помощью одноименного Построителя. Чтобы открыть Построитель ссылочной целостности, достаточно выполнить следующее:
открыть БД с таблицами, для которых необходимо установить ссылочную целостность;
в контекстном меню Конструктора БД задать команду Referential Integrity (ссылочная целостность),что и приведет к открытию окна Построителя ссылочной целостности данных (рис. 12.6).
' Referential Integrity Builder
R es for t .dating ^?и1еь for 1 dieting Rules ft nsemng
| Wtiic h rule do you want to apply when a new record is inserted or an existing record is ! updated m the child table9
■§•'
<♦
|
Parent Table |
Child Table |
Updatf |
!te |
Insert |
ParentjaB,. |
Child Tag |
Ж. |
|
rfolgn |
t_prep |
Cascade |
Res'.rict |
Restrr |
i_dolgn |
i eloign |
|
|
t вгев |
t zaar |
i ascade |
Restrict |
Restrict |
i fio |
i fio |
|
» |
t stag |
t jorep |
Restrict |
ignore |
|
: stag |
i_stag |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
■w |
OK
Cancel
Hell
или ключа кандидата в родительской таблице. При этом возможен выбор одного из трех правил, приведенных в табл. 127.
Таблица 12 7
Правила изменения значений первичного ключа
Наименование |
Описание |
Cascade |
При изменении значений полей первичного ключа или ключа- kjhj [идата в родительской таблице автоматически осуществляется измене! 'ие всех соответ ствующих значений в дочерней таблице — каскадное изменение |
Restrict |
Запрещается изменение первичного ключа или кпюча-кандидтг j в роди гельскои таблице, если в дочерней таблице имеется хотя бы одна запись, внешний ключ которой содержит изменяемое значение. / |
Ignore |
Допускается произвольное измечение значений полей первичного ключа или ключа-кандидата родительской таблицы. Целостность данных не ■ одце^жиеазтся |
Выбор любого из правил осуществляется установкой соответствующего переключателя. Выбранное правило отображается в соответствующей стро ке столбца Update (обновить). При удалении записей из связанных таблиц (вкладка Rules for Deleting — правила удаления) требуется использование также трех правчл (табл. 1?.8). Таблица 12.8 Правила удаления записей из связанных таблиц | |
Наименование |
Описание |
Cascade |
Удаление записей в родитепьской таолице автоматически приводит к каскадному удалению всех запис ей дочепней таблицы, имеющих аналогичные значения соответствуютlero внешнего ключа. |
Hestrict |
Запрещается удаление записи в родительское таблице, если в дочерней таблице имеется хотя 6^1 одна запись, внешний ключ которой содержит значение, совпадающее со значением первичного ключа или ключа-кандидата в удаляемой записи. При попытке удаления записи выдается сообщение об ошибке, которую можно обработать программно |
Ignore |
Допускается неограниченное удаление записей родительской таблицы Целостность данных не поддерживается. |
Правила для добавления записей применимы со стороны дочерней таблицы. Их всего два (табл. 12.9).
Таблица 12.9
Правила добавления записей
Наименование |
Описание |
Restrict |
Запрещается добавление записи к дочерней таблице, если в родительской таблице отсутствует запись, значение первичного ключа или ключа-кандидата которой не совпадает со значением внешнего ключа добавляемой записи. |
Ignore |
Допускается неограниченное добавление записей в дочернюю таблицу. Целостность данных не поддерживается. |
По окончании выбора правил выйдем из Построителя, нажав ОК. При выходе появляется запрос подтверждения сделанных изменений. В случае подтверждения в БД создается ряд хранимых процедур и триггеров. Если такие процедуры и триггеры уже существуют, то перед их перезаписью создается резервная копия. Теперь все наши требования по обеспечению ссылочной целостности данных сохраняются в словаре БД и реализуются при работе с ней.
При формировании правил ссылочной целостности (рис. 12.6) мы рассуждали следующим образом.
Изменение значений ключевых полей родительских таблиц. Таблица Т_Ргер является дочерней по отношению к таблицам TDolgn иTStag, в свою очередь, для нее дочерней является таблицаT Zagr. Не будем исключать возможность изменения названия должности или фамилии преподавателя. Соответствующие поля являются ключевыми. При необходимости такие изменения необходимо произвести в родительских таблицах соответственно: должность в —T Dolgn, а фамилию в — Т Ргер. В этом случае они синхронно (каскадно) изменятся в дочерних таблицах. Запретим изменения значений ключевого поляstag (стаж) в родительской таблицеT_Stag.
Удаление записей в родительских таблицах. Запретим удаление записей в родительских таблицах, имеющих в дочерних таблицах записи с совпадающими значениями внешних ключевых полей.
Изменение (добавление) записей в дочерней таблице. Запретим ввод записей в дочерние таблицы, не соответствующие одной из записей в родительской таблице.
Проверим средства обеспечения ссылочной целостности в дейст вии.
Откроем БД Bdu с помощью командыFile |Open (файл | открыть) системного менюVisual FoxPro (если она закрыта). В появившемся окне Конструктора БД откроем для просмотра таблицу Тprep. Для этого установим курсор на эту таблицу и, вызвав всплывающее меню, зададим командуBrowse (просмотр).
Выполним изменение, например, название должности (преп на ст. преп.) сначала в дочерней, а затем в родительской таблице. Изменения будут видны только после обновления изображения таблиць. (закрытия и повторного открытия таблицы).
Замечание.
При необходимости произвести добавление или изменение защищенных данных (режим Restrict) нужно снять защиту и после выполнения требуемых действий повторно установить защиту.