Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 97
Текст из файла (страница 97)
СУБД Visual FoxPro 8.0459или ключа-кандидата в родительской таблице. При этом возможен выбор одного из трех правил, приведенных в табл. 12.7.Т а б л и ц а 12.7Правила изменения значений первичного ключаНаименованиеОписаниеCascadeП р и и з м е н е н и и з н а ч е н и й полей первичного ключа или ключакандидата в родительской таблице автоматическиосуществляется и з м е н е н и е всех соответствующих значений вдочерней таблице — каскадное изменение.RestrictЗ а п р е щ а е т с я и з м е н е н и е п е р в и ч н о г о ключа или к л ю ч а - к а н д и д а т ав родительской таблице, если в д о ч е р н е й таблице и м е е т с я хотябы о д н а з а п и с ь , в н е ш н и й к л ю ч к о т о р о й с о д е р ж и т и з м е н я е м о езначение.IgnoreДопускается произвольное изменение значений полейпервичного ключа или ключа-кандидата родительской таблицы.Целостность данных не поддерживается.Выбор любого из правил осуществляется установкой соответствующегопереключателя.
Выбранное правило отображается в соответствующей строке столбца Update (обновить).При удалении записей из связанных таблиц (вкладка Rules for Deleting —правила удаления) требуется использование также трех правил (табл. 12.8).Таблица 12.8Правила удаления записей из связанных таблицОписаниеНаименованиеCascadeУдалениеприводиттаблицы,внешнегозаписей в родительской таблице автоматическик каскадному удалению всех записей дочернейимеющих аналогичные значения соответствующегоключа.RestrictЗ а п р е щ а е т с я удаление записи в родительской таблице, если вд о ч е р н е й т а б л и ц е и м е е т с я х о т я бы о д н а з а п и с ь , в н е ш н и й ключкоторой содержит значение, совпадающее со значениемпервичного ключа или ключа-кандидата в удаляемой записи. Припопытке удаления записи выдается с о о б щ е н и е об ошибке,которую можно обработать программно.IgnoreДопускается неограниченное удаление записей родительскойтаблицы.
Целостность данных не поддерживается.Часть 3. Современные СУБД и их применение460Правила для добавления записей применимы со стороны дочерней таблицы. Их всего два (табл. 12.9).Т а б л и ц а 12.9Правила добавления записейНаименованиеОписаниеRestrictЗапрещается добавление записи к дочерней таблице, если вродительской таблице отсутствует запись, значение первичногоключа или к л ю ч а - к а н д и д а т а к о т о р о й н е с о в п а д а е т со з н а ч е н и е мвнешнего ключа добавляемой записи.IgnoreДопускается неограниченное добавление записей в дочернюютаблицу. Целостность данных не поддерживается.По окончании выбора правил выйдем из Построителя, нажав ОК. Привыходе появляется запрос подтверждения сделанных изменений.
В случаеподтверждения в БД создается ряд хранимых процедур и триггеров. Если такие процедуры и триггеры уже существуют, то перед их перезаписью создается резервная копия. Теперь все наши требования по обеспечению ссылочнойцелостности данных сохраняются в словаре БД и реализуются при работе сней.При формировании правил ссылочной целостности (рис. 12.6) мы рассуждали следующим образом:1. Изменение значений ключевых полей родительских таблиц.
ТаблицаТ Р г е р является дочерней по отношению к таблицам T D o l g n и T_Stag,в свою очередь, для нее дочерней является таблица T Z a g r . Не будемисключать возможность изменения названия должности или фамилиипреподавателя. Соответствующие поля являются ключевыми. При необходимости такие изменения необходимо произвести в родительскихтаблицах соответственно: должность в — T_Dolgn, а фамилию в —Т Ргер. В этом случае они синхронно (каскадно) изменятся в дочернихтаблицах. Запретим изменения значений ключевого поля stag (стаж) вродительской таблице T Stag.2.
Удаление записей в родительских таблицах. Запретим удаление записей в родительских таблицах, имеющих в дочерних таблицах записи ссовпадающими значениями внешних ключевых полей.3. Изменение (добавление) записей в дочерней таблице. Запретим вводзаписей в дочерние таблицы, не соответствующие одной из записей вродительской таблице.Проверим средства обеспечения ссылочной целостности в действии.12. СУБД Visual FoxPro 8.0461Откроем БД Bdu с помощью команды File | Open (файл | открыть) системного меню Visual FoxPro (если она закрыта). В появившемся окне Конструктора БД откроем для просмотра таблицу Т_ргер.
Для этого установим курсорна эту таблицу и, вызвав всплывающее меню, зададим команду Browse (просмотр).Выполним изменение, например, название должности (преп па сг. преп.)сначала в дочерней, а затем в родительской таблице. Изменения будут виднытолько после обновления изображения таблицы (закрытия и повторного открытия таблицы).Замечание.При необходимости произвести добавление или изменение защищенныхданных (режим Restrict) нужно снять защиту и после выполнения требуемых действий повторно установить защиту.12.10. Создание запросовПосле создания таблиц БД и ввода в них данных требуется организоватьдоступ к хранящейся в БД информации для просмотра и обработки.
Одним изосновных способов решения названной задачи является создание запросов.СредстваформированиязапросовВыборка информации из БД может осуществляться: с помощью командыSELECT SQL языка Visual FoxPro, которая является аналогом соответствующей команды языка SQL; с помощью Мастера запросов и с помощью Конструктора запроса.Команда SELECT имеет множество возможностей (опций). Ее упрощенное представление имеет следующий вид:SELECT СгшсокВыбираемыхПолейFROM СписокТаблиц-исгочника данных [ INTO ИмяТаблицы получателя данных|[WHERE УсловиеВыборки][GROUP BY УсловиеГруппировки][ORDER BY УсловиеУпорядочивания выводимых данных][ТО FILE ИмяФайла | Т О PRINTER — направление вывода данных]Квадратные скобки указывают на необязательность опции.Конструктора запроса позволяет:• выбирать данные из одной или нескольких таблиц, используя сложныекритерии;Часть 3.
Современные СУБД и их применение462• устанавливать временные связи между таблицами;• выбирать поля и записи таблиц с требуемыми данными;• выполнять вычисления с использованием выбранных данных.Работа с Конструктором запроса сводится к заполнению форм запроса.Результатом запроса всегда является таблица, которая может быть сохраненав массиве или в созданной новой таблице, отображена на экране или оформлена в виде отчета.
Данные, содержащиеся в результирующей таблице, могутбыть представлены в виде графика или гистограммы. Рассмотрим формирование запросов с помощью Конструктора запроса.Для вызова Конструктора запроса после открытия БД можно воспользоваться командой File | New (файл | Создать) системного меню Visual FoxPro.При выполнении этой команды открывается диалоговое окно New (рис. 12.2),в котором нужно выбрать переключатель Query (Запрос) и нажать кнопкуNew File (Новый файл). В открывшемся диалоговом окне Add Table or View(Добавить таблицу или просмотр) следует выбрать одну или несколько таблиц и нажать ОК.
В результате откроется окно Конструктора запроса (рис.12.7), содержащее выбранные таблицы, а в системном меню Visual FoxPro появится пункт Query (Запрос).uery Designer - QuerylштшQuery Designer@ol%NI Wil oil <f|fiostagdolgnkafJ!lLfMds j | Join j Filter ] Order By j Group By j MiscellaneousAvailable fields:T_prep.fioT_prep.stagT_prep. dolgnT_prep.kafSelected fields:ijAdd A l l »R amovezl•:'< Remove AlFunctions and expressions:Рис. 12.7. Окно Конструктора запроса с таблицей T P R E P12.
СУБД Visual FoxPro 8.0463После того как определена таблица (одна или несколько) для формирования запроса в диалоговом окне Конструктора необходимо:• выбрать поля, содержащие искомые данные;• задать критерии выборки, упорядочения и группировки данных;• указать, куда выводится результат запроса.Д л я р е ш е н и я п е р е ч и с л е н н ы х задач К о н с т р у к т о р с о д е р ж и т : п а н е л ь д л я ото-бражения таблиц, используемых в запросе (в рассматриваемом примере наней находится одна таблица T_PREP), и вкладки (табл. 12.10).Таблица 12.10Назначение вкладок диалогового окна Конструктора запросовВкладкаНазначениеFieldsВыборка полей в результирующую таблицуJoinЗ а д а н и е условий объединения таблицFilterЗ а д а н и е фильтра (условий отбора записей)Order ByЗадание критерия упорядочиванияGroup ByЗ а д а н и е условий группировки данныхMiscellaneousДополнительные установки (признак выборки повторяющихсязначений, количество выбираемых данных)Поле Functions and expressions (функции и выражения) используется длявключения в запрос функции или выражения.По окончании формирования запроса в диалоговом окне Конструкторарезультат выполнения запроса можно оценить выполнив команду Query | RunQuery (Запрос | выполнить запрос) системного меню.Для повторного выполнения запроса, сформированного в окне Конструктора,его необходимо сохранить.