Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009, страница 96
Описание файла
PDF-файл из архива "Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009", который расположен в категории "". Всё это находится в предмете "информационное обеспечение разработок" из 8 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информационное обеспечение разработок" в общих файлах.
Просмотр PDF-файла онлайн
Текст 96 страницы из PDF
Для ее реализации необходимо с помощью клавиш-стрелок установить курсор на строку,перед которой необходимо вставить новое поле (в любом ее столбце) и нажат!) кнопку Insert (вставить) (рис. 12.4). При этом появляется новая строкас именем NewField. Далее по рассмотренной технологии можно ввести имянового поля и его параметры.Для удаления лишнего поля достаточно выделить его в окне Конструктора таблиц и нажать клавишу Delete (удалить). Если открытый на данныймомент индексный файл не содержит ссылок на удаляемое поле, то поле будет удалено. Если такие ссылки имеются, то появится предупреждающее сообщение.Переименование полей выполняется следующим образом. ОткрываетсяКонструктор таблиц со структурой нужной таблицы, выделяется и редактируется нужное поле, после чего полученная структура сохраняется. Если изменяемое поле входит в индексное выражение, то появляется предупреждающее сообщение.
При этом нужно изменить имя поля и отредактироватьсоответствующие индексные выражения.Переопределение характеристик полей, а именно типа, длины или числа десятичных знаков в числовом поле, иногда приводит к проблемам. Безпроблем выполняется увеличение длин полей. Для этого достаточно в Конструкторе таблиц выделить нужное поле и увеличить его длину.
При этомсоответствующий DBF-файл будет переписан и приобретет большие размеры.Проблемы могут возникнуть при попытке уменьшить размеры полей. Приэтом может произойти усечение строк в символьных полях до нужных размеров. Сократцение целой части числового поля может привести к потере той12. СУБД Visual FoxPro 8.0455части чисел, у которых она не помещается в отведенные размеры (в поле записывается символ звездочка). Сокращение количества знаков в дробнойчасти понижает точность представления числа.Возможны проблемы и при изменении типов полей. Например, преобразование числового поля в символьное возможно всегда при условии достаточного выделения места для образующихся символьных строк.
Это преобр а з о в а н и е о с у щ е с т в л я е т с я с помощью ф у н к ц и и STR( ). О б р а т н о епреобразование выполняется функцией VAL( ) и возможно только в тех случаях, когда строка начинается с цифр или пробелов. В противном случае полученное в результате преобразований числовое поле будет иметь нулевоезначение.Без проблем осуществляется преобразование даты в строку (функцияDTOC( ) ) и обратное преобразование (функция CTOD( ) ), при условии чтосимвольная строка содержит допустимые символы.12.8. Организация межтабличных связейВ Visual FoxPro можно связывать таблицы — устанавливать связи междуними.
При этом возможно установление постоянных и временных связеймежду таблицами. Постоянные связи можно установить в Конструкторе БД,и они прежде всего необходимы для поддержания целостности БД при обновлении содержимого таблиц. Временные связи между таблицами могутустанавливаться при создании экранных форм (для ввода и редактированияданных) и отчетов. Обычно это делается в случаях, когда имеющиеся постоянные связи по каким-либо причинам не подходят для создаваемой формыили отчета.Постоянные связи хранятся в словаре БД и автоматически устанавливаются при открытии таблиц. Приведем условия установления постоянных связей.1. Одна из связываемых таблиц является родительской, другая — дочерней.2. Для родительской таблицы индекс должен быть определен как первичный ключ (Primary) или ключ кандидат (Candidate).3. Для дочерней таблицы индекс может быть не уникальным.
По этомуиндексу дочерняя таблица будет связываться с родительской (внешнийключ).Создадим постоянные связи между таблицами. Для этого войдем в Конструктор БД и убедимся в наличии (или создадим) перечисленные ниже индексы (табл. 12.6).Часть 3. Современные СУБД и их применение456Таблица12.6Типы индексов БД BduИ м я тегаТаблицаТ и п индексаИ н д е к с н о е выражениеTZAGRi_zagrPrimaryFio+Predm+STR(Gruppa)TPREPi_fioPrimaryFioTPREPi_dolgnCandidateDolgnTPREPi_stagCandidateStagTSTAGi_stagPrimaryStagT_DOLGNi_dolgnPrimarydolgnПосле создания всех необходимых индексов в окне Конструктора БД (рис.12.4) будут представлены все таблицы в виде списка из полей и индексов,разделенных ключевым словом Indexes (индексы).
Если в таблице списокполей и индексов виден не полностью, его можно прокрутить вниз или вверх.На рис. 12.5 показаны установленные межтабличные связи.H ® 13Database DesignerШ Fields:stagd_stagCDlndexes:Ш Fields:fiostagdolgnkafdllndexes:i_slagi_dolgn? i fioJ^Fields:fiopredmgruppavidzanCBlndexes:i_zagrРис. 12.5. Межтабличные связи БД BdutJ12. СУБД Visual FoxPro 8.0457Для установления постоянной связи между родительской и дочерней таблицей необходимо:• установить указатель мыши на первичный ключ родительской таблицы;• нажав левую кнопку мыши, переместить указатель на индекс дочернейтаблицы, по которому устанавливается связь;• отпустить кнопку.На экране появится диалоговое окно Edit Relationship (правка связей),содержащее имена связываемых таблиц с раскрывающимися списками индексов.
В списках уже выбраны индексы, по которым должна осуществляться связь. Здесь же указывается тип связи между таблицами «один к одному»или «один ко многим». Для сохранения связи нажмем ОК, а при отказе —Cancel (отмена).Для удаления межтабличной связи требуется выполнить следующее:• навести указатель мыши на линию связи таблиц;• нажать правую кнопку мыши, что приведет к утолщению линии и появлению всплывающего меню;• выполнить команду Remove Relationship (удалить связь) всплывающего меню.В результате выделенная связь будет удалена.
Напомним, что установленные постоянные связи между таблицами используются прежде всего для обеспечения ссылочной целостности (непротиворечивости) БД при обновленииее содержимого. Для снижения возможных потерь данных рекомендуетсясначала устанавливать правила ссылочной целостности, а затем вводить данные в таблицы.12.9.
Обеспечение ссылочной целостностиОбеспечение ссылочной целостности означает определение допустимыхопераций над связанными между собой таблицами. Главное требование ссылочной целостности заключается в том, чтобы записи дочерних таблиц имели ссылки на записи в родительской таблице (дети должны иметь родителей). В родительской таблице могут быть записи, не имеющие связанных сними записей в дочерних таблицах (может быть семья без детей).
В VisualFoxPro поддержка ссылочной целостности выполняется с помощью одноименного Построителя. Чтобы открыть Построитель ссылочной целостности, достаточно выполнить следующее:• открыть БД с таблицами, для которых необходимо установить ссылочную целостность;• в контекстном меню Конструктора БД задать команду ReferentialIntegrity (ссылочная целостность), что и приведет к открытию окнаПостроителя ссылочной целостности данных (рис. 12.6).Часть 3. Современные458СУБД и ихприменениеR e f e r e n t i a l Integrity BuilderRules for Updating | Rules for DeletingRules for Inserting jWhich rule do you want to apply when a new record is inserted or an existing record isupdated in the child table?С Restrict: prohibits the insert if a matching key value does not exist in the parent table,ignore: allows the insert.Parent Tablet_dolgnt_prep* t_stagChild Tablet_prept_zagrt_prepUpdateCascadeCascadeRestrictDeleteRestrictRestrictIgnoreInsertRestrictRestrictШ Я ЕParent Tagi_dolgni_fioi_stagChild Tagi_dolgni fioi_stag•HelpOKCancelРис.
12.6. Диалоговое окно Referential Integrity BuilderВ окне Построителя перечислены все постоянные связи между таблицамиБД Bdu. Информация по каждой связи размещена в отдельной строке. Первыедва столбца содержат имена родительских и дочерних таблиц. Следующие тристолбца содержат правила поддержания ссылочной целостности в случае редактирования, удаления и добавления записей соответственно. Изначально всеправила содержат Ignore, но они определяются для каждой связи и каждой изтрех перечисленных операций.
Последние два столбца содержат индексы (теги)родительской и дочерней таблиц, по которым осуществляется связь.В диалоговом окне Построителя ссылочной целостности коррективам могут быть подвергнуты только столбцы с правилами. Наша задача — для каждой связи (пары родительской и дочерней таблицы) определить правила поддержания ссылочной целостности при выполнении каждой из трех возможныхопераций с данными этих таблиц (редактирования, добавления и удаления).Этот выбор можно осуществить двумя способами:• при выборе поля одного из столбцов с правилами Update (обновить),Delete (удалить) и Insert (вставить) появляется кнопка, нажатие которой приводит к появлению списка возможных правил;• при выборе одной из вкладок Rules for Updating (правила обновления), Rules for Deleting (правила удаления), Rules for Inserting (правила вставки) в верхней части таблицы появляются переключатели скомментариями для каждого из правил.Например, при выборе вкладки Rules for Updating (правила обновления)выбираются правила, связанные с изменениями значения первичного ключа12.