Информационное обеспечение систем управления





НазваниеИнформационное обеспечение систем управления
страница10/19
Дата публикации05.12.2014
Размер3.02 Mb.
ТипРеферат
100-bal.ru > Информатика > Реферат
1   ...   6   7   8   9   10   11   12   13   ...   19
СОТРУДНИК является атрибут Паспорт, он принят в качестве внешнего ключа FOREIGN KEY для отношения КАРЬЕРА.

Рассмотрим в новой интерпретации пример с поставщиками и поставками деталей. Предположим, что нам требуется хранить информацию о наименовании поставщиков, наименовании и количестве поставляемых ими деталей, причем каждый поставщик может поставлять несколько деталей и каждая деталь может поставляться несколькими поставщиками. Ранее (см. подраздел 2.3) данные хранились в трех таблицах, можно как вариант предложить хранить их в одной следующей таблице.

П

ФИО

Д

Наим.

Кол.

П1

Иванов

Д1

Болт

300

П1

Иванов

Д2

Гайка

200

П1

Иванов

Д3

Шпонка

400

П2

Петров

Д1

Болт

300

П2

Петров

Д2

Гайка

400

П3

Сидоров

Д2

Гайка

200


Потенциальным ключом этого отношения может выступать пара атрибутов {№П, №Д}. Приведенный однотабличный способ хранения данных обладает рядом недостатков.

Что произойдет, если изменилось ФИО поставщика? Оно повторяется во многих кортежах отношения, и его нужно одновременно изменить во всех кортежах, где оно встречается, иначе данные станут противоречивыми. То же самое с наименованиями деталей. Значит, данные хранятся в нашем отношении с большой избыточностью.

Далее, как отразить факт, что некоторый поставщик, например Петров, временно прекратил поставки деталей? Если мы удалим все кортежи, в которых хранится информация о поставках этого поставщика, то мы потеряем данные о самом Петрове как потенциальном поставщике. Выйти из этого положения, оставив в отношении кортеж типа (2, Петров, NULL, NULL, NULL) мы не можем, т.к. атрибут №Д входит в состав потенциального ключа и не может содержать NULL-значений. То же самое произойдет, если некоторая деталь временно не поставляется никаким поставщиком. Получается, что мы не можем хранить информацию о том, что есть некий поставщик, если он не поставляет хотя бы одну деталь, и не можем хранить информацию о том, что есть некоторая деталь, если она никем не поставляется.

Подобные проблемы возникают потому, что мы смешали в одном отношении различные объекты предметной области   и данные о поставщиках, и данные о деталях, и данные о поставках деталей. Говорят, что это отношение плохо нормализовано (см. подраздел 4.2).

Не случайно в подразделе было предложено разнести данные по трем таблицам – ПОСТАВЩИКИ, ПОСТАВКИ и ДЕТАЛИ. Для нас сейчас важно выяснить, каким образом данные, хранящиеся в этих отношениях взаимосвязаны друг с другом. Эта связь определяется семантикой предметной области и описывается фразами: "ПОСТАВЩИКИ выполняют ПОСТАВКИ", "ДЕТАЛИ поставляются через ПОСТАВКИ". Эти две взаимосвязи косвенно определяют новую взаимосвязь между ПОСТАВЩИКАМИ и ДЕТАЛЯМИ – "ДЕТАЛИ поставляются ПОСТАВЩИКАМИ".

Перечисленные фразы отражают различные типы взаимосвязей. Чтобы более точно отразить предметную область, можно иначе переформулировать фразы: "Один ПОСТАВЩИК может выполнять несколько ПОСТАВОК", "Одна ДЕТАЛЬ может поставляться несколькими ПОСТАВЩИКАМИ". Это пример взаимосвязи типа "один-ко-многим".

Взаимосвязь между ПОСТАВЩИКАМИ и ДЕТАЛЯМИ можно переформулировать так: "Несколько ДЕТАЛЕЙ может поставляться несколькими ПОСТАВЩИКАМИ". Это пример взаимосвязи типа "много-ко-многим".

В реляционных базах данных основными являются взаимосвязи типа "один-ко-многим". Взаимосвязи типа "много-ко-многим" реализуются использованием нескольких взаимосвязей типа "один-ко-многим".

Отношение, входящее в связь со стороны "один", называют родительским (главным, ведущим) отношением. Отношение, входящее в связь со стороны "много", называется дочерним (ведомым) отношением.

Механизм реализации взаимосвязи "один-ко-многим" состоит в том, что в дочернее отношение добавляются атрибуты, являющиеся ссылками на ключевые атрибуты (PRIMARY KEY) родительского отношения. Эти атрибуты и являются внешними ключами (FOREIGN KEY), определяющими, с какими кортежами родительского отношения связаны кортежи дочернего отношения. Такие атрибуты еще называют мигрирующими из родительского отношения в дочернее.

Внешний ключ отношения   это набор атрибутов отношения, содержащий ссылки на первичный ключ другого отношения. Отношение, содержащее первичный ключ, на который ссылается некоторый внешний ключ, называется родительским отношением. Отношение, содержащее внешний ключ, называется дочерним отношением.

Уточним понятие внешнего ключа. Если отношение С связывает сущности (отношения) А и В, то оно должно включать внешние ключи, соответствующие первичным ключам сущностей А и В (см. пример связи ПОСТАВКИ с атрибутами №Д и №П).

Если сущность В обозначает сущность А, то она должна включать внешний ключ, соответствующий первичному ключу сущности А. (пример с сущностями СОТРУДНИК и КАРЬЕРА на рис. 5.2).

В отношении ПОСТАВКИ атрибуты №П и №Д являются ссылками на ключевые атрибуты отношений ПОСТАВЩИКИ и ДЕТАЛИ, и, следовательно, являются внешними ключами. Заметим, что данные отношения свободны от недостатков, описанных выше, когда все данные предлагалось хранить в одном отношении. Действительно, при изменении наименования поставщика или детали, это изменение происходит только в одном месте. Если поставщик прекратил поставки всех деталей, то удаляются соответствующие кортежи в отношении ПОСТАВКИ, данные же о самом поставщике остаются без изменений. Перечислим свойства внешних ключей.

  • Внешний ключ, также как и потенциальный, может быть простым и составным.

  • Внешний ключ должен быть определен на тех же доменах, что и соответствующий первичный ключ родительского отношения.

  • Внешний ключ, как правило, не обладает свойством уникальности. В дочернем отношении может быть несколько кортежей, ссылающихся на один и тот же кортеж родительского отношения.

  • Если внешний ключ все-таки обладает свойством уникальности, то связь между отношениями имеет тип "один-к-одному".

  • Хотя каждое значение внешнего ключа обязано совпадать со значением потенциального ключа в некоторой записи родительского отношения, то обратное, вообще говоря, неверно. Например, могут существовать поставщики, не поставляющие никаких деталей.

  • Для внешнего ключа не требуется, чтобы он был обязательным компонентом некоторого потенциального ключа дочерней таблицы (как получилось в примере с поставщиками и деталями).

  • NULL-значения для атрибутов внешнего ключа допустимы только в том случае, когда атрибуты внешнего ключа не входят в состав никакого первичного ключа.

Внешние ключи данной таблицы фактически служат ссылками на записи в других таблицах, поэтому эти ссылки не должны указывать на несуществующие объекты. Это требование определяет идейное содержание понятия ссылочной целостности или целостности внешних ключей.

Правило целостности внешних ключей   внешние ключи должны быть согласованными, т.е. для каждого значения внешнего ключа в дочернем отношении должно существовать соответствующее значение первичного ключа в родительском отношении.

Причины нарушения ссылочной целостности. Ссылочная целостность может нарушиться в результате операций, которые изменяют состояние взаимосвязанных отношений базы данных. Таких операций три   вставка, обновление и удаление кортежей в отношениях. В определении ссылочной целостности участвуют минимум два отношения   родительское и дочернее. В каждом из них возможны эти три операции. Поэтому следует рассмотреть шесть различных вариантов. Три для родительского и столько же для дочернего отношений.

Вставка кортежа в родительском отношении. При вставке кортежа в родительское отношение возникает новое значение первичного ключа. Исходя из реалий предметной области, допускается существование кортежей в родительском отношении, на которые нет ссылок из дочернего отношения. Поэтому вставка кортежей в родительское отношение не нарушает ссылочной целостности.

Обновление кортежа в родительском отношении. При обновлении кортежа в родительском отношении может измениться значение первичного ключа. Если есть кортежи в дочернем отношении, ссылающиеся на обновляемый кортеж, то значения их внешних ключей станут некорректными. Обновление кортежа в родительском отношении может привести к нарушению ссылочной целостности, если это обновление затрагивает значение первичного ключа.

Удаление кортежа в родительском отношении. При удалении кортежа в родительском отношении удаляется значение первичного ключа. Если есть кортежи в дочернем отношении, ссылающиеся на удаляемый кортеж, то значения их внешних ключей станут некорректными. Следовательно, удаление кортежей в родительском отношении может привести к нарушению ссылочной целостности.

Вставка кортежа в дочернее отношение. Нельзя вставить кортеж в дочернее отношение, если вставляемое значение внешнего ключа не соответствует значению первичного ключа в родительском отношении. Следовательно, вставка кортежа в дочернее отношение может привести к нарушению ссылочной целостности.

Обновление кортежа в дочернем отношении. При обновлении кортежа в дочернем отношении возможна попытка некорректного изменения значение внешнего ключа. Обновление кортежа в дочернем отношении может привести к нарушению ссылочной целостности.

Удаление кортежа в дочернем отношении. Очевидно, при удалении кортежа в дочернем отношении ссылочная целостность не нарушается.

Таким образом, ссылочная целостность в принципе может быть нарушена при выполнении одной из четырех следующих операций.

  1. Обновление кортежа в родительском отношении.

  2. Удаление кортежа в родительском отношении.

  3. Вставка кортежа в дочернее отношение.

  4. Обновление кортежа в дочернем отношении.

Стратегии поддержания ссылочной целостности. В практической деятельности существуют две основные стратегии поддержания ссылочной целостности.

RESTRICT (ОГРАНИЧИТЬ)   не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. Это самая простая стратегия, требующая только проверки, имеются ли кортежи в дочернем отношении, связанные с некоторым кортежем в родительском отношении.

CASCADE (КАСКАДИРОВАТЬ)   разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительском отношении и каскадно выполняется в дочернем отношении. В реализации этой стратегии имеется одна тонкость, заключающаяся в том, что дочернее отношение само может быть родительским для некоторого третьего отношения. При этом может дополнительно потребоваться выполнение какой-либо стратегии и для этой связи и т.д. Если при этом какая-либо из каскадных операций (любого уровня) не может быть выполнена, то необходимо отказаться от первоначальной операции и вернуть базу данных в исходное состояние. Это самая сложная стратегия, но она хороша тем, что при этом не нарушается связь между кортежами родительского и дочернего отношений.

Эти стратегии являются стандартными и присутствуют во всех СУБД, в которых имеется поддержка ссылочной целостности.

В практической деятельности существуют также дополнительные стратегии поддержания ссылочной целостности.

SET NULL (УСТАНОВИТЬ В NULL)   разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на NULL-значения. Эта стратегия имеет два недостатка. Во-первых, для нее требуется допустить использование NULL-значений. Во-вторых, кортежи дочернего отношения теряют всякую связь с кортежами родительского отношения. Установить, с каким кортежем родительского отношения были связаны измененные кортежи дочернего отношения, после выполнения операции уже нельзя.

SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ)   разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию. Достоинство этой стратегии по сравнению с предыдущей в том, что она позволяет не пользоваться NULL-значеними. Недостатки заключаются в следующем. Во-первых, в родительском отношении должен быть некий кортеж, потенциальный ключ которого принят как значение по умолчанию для внешних ключей. В качестве такого "кортежа по умолчанию" обычно принимают специальный кортеж, заполненный нулевыми значениями (не NULL-значениями!). Этот кортеж нельзя удалять из родительского отношения, и в этом кортеже нельзя изменять значение потенциального ключа. Таким образом, не все кортежи родительского отношения становятся равнозначными, поэтому приходится прилагать дополнительные усилия для отслеживания этой неравнозначности. Это плата за отказ от использования NULL-значений. Во-вторых, как и в предыдущем случае, кортежи дочернего отношения теряют всякую связь с кортежами родительского отношения. Установить, с каким кортежем родительского отношения были связаны измененные кортежи дочернего отношения, после выполнения операции уже нельзя.

IGNORE (ИГНОРИРОВАТЬ)   выполнять операции, не обращая внимания на нарушения ссылочной целостности.

Конечно, это не стратегия, а отказ от поддержки ссылочной целостности. В этом случае в дочернем отношении могут появляться некорректные значения внешних ключей, и вся ответственность за целостность базы данных ложится на пользователя.

В дополнение к приведенным стратегиям пользователь может придумать свою уникальную стратегию поддержания ссылочной целостности.

Применение стратегий поддержания ссылочной целостности. Рассмотрим, как применяются стратегии поддержания ссылочной целостности при выполнении операций модификации базы данных, приводящие к нарушению ссылочной целостности.

1. При обновлении кортежа в родительском отношении допустимыми обычно считаются следующие стратегии.

RESTRICT (ОГРАНИЧИТЬ)   не разрешать обновление первичного ключа, если имеется хотя бы один кортеж в дочернем отношении, ссылающийся на обновляемый кортеж.

CASCADE (КАСКАДИРОВАТЬ)   выполнить обновление первичного ключа и каскадно изменить значения внешних ключей во всех кортежах дочернего отношения, ссылающихся на обновляемый кортеж.

SET NULL (УСТАНОВИТЬ В NULL)   выполнить обновление первичного ключа и во всех кортежах дочернего отношения, ссылающихся на обновляемый кортеж, изменить значения внешних ключей на NULL-значение.

SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ)   выполнить обновление первичного ключа и во всех кортежах дочернего отношения, ссылающихся на обновляемый кортеж, изменить значения внешних ключей на некоторое значение, принятое по умолчанию.

IGNORE (ИГНОРИРОВАТЬ)   выполнить обновление первичного ключа, не обращая внимания на нарушения ссылочной целостности.

2. При удалении кортежа в родительском отношении допустимыми обычно считаются следующие стратегии.

RESTRICT (ОГРАНИЧИТЬ) - не разрешать удаление, если имеется хотя бы один кортеж в дочернем отношении, ссылающийся на удаляемый кортеж в родительском отношении.

CASCADE (КАСКАДИРОВАТЬ)   выполнить удаление и каскадно удалить все кортежи в дочернем отношении, ссылающиеся на удаляемый кортеж.

SET NULL (УСТАНОВИТЬ В NULL)   выполнить удаление и во всех кортежах дочернего отношения, ссылающихся на удаляемый кортеж, изменить значения внешних ключей на NULL-значение.

SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ)   выполнить удаление и во всех кортежах дочернего отношения, ссылающихся на удаляемый кортеж, изменить значения внешних ключей на некоторое значение, принятое по умолчанию.

IGNORE (ИГНОРИРОВАТЬ)   выполнить удаление, не обращая внимания на нарушения ссылочной целостности.

3. При вставке кортежа в дочернее отношение допустимыми обычно считаются следующие стратегии.

RESTRICT (ОГРАНИЧИТЬ)   не разрешать вставку, если внешний ключ во вставляемом кортеже не соответствует ни одному значению первичного ключа родительского отношения.

SET NULL (УСТАНОВИТЬ В NULL)   вставить кортеж, но в качестве значения внешнего ключа занести не предлагаемое пользователем некорректное значение, а NULL-значение.

SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ)   вставить кортеж, но в качестве значения внешнего ключа занести не предлагаемое пользователем некорректное значение, а значение, принятое по умолчанию.

IGNORE (ИГНОРИРОВАТЬ)   вставить кортеж, не обращая внимания на нарушения ссылочной целостности.

4. При обновлении кортежа в дочернем отношении допустимыми обычно считаются следующие стратегии.

RESTRICT (ОГРАНИЧИТЬ)   не разрешать обновление, если внешний ключ в обновляемом кортеже становится не соответствующим ни одному значению первичного ключа родительского отношения.

SET NULL (УСТАНОВИТЬ В NULL)   обновить кортеж, но в качестве значения внешнего ключа занести не предлагаемое пользователем некорректное значение, а NULL-значение.

SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ)   обновить кортеж, но в качестве значения внешнего ключа занести не предлагаемое пользователем некорректное значение, а значение, принятое по умолчанию.

IGNORE (ИГНОРИРОВАТЬ)   обновить кортеж, не обращая внимания на нарушения ссылочной целостности.

5.4. Технологии обеспечения ссылочной целостности в VFP

Понятие ссылочная целостность данных определяет допустимые действия со связанными таблицами. В FoxPro целостность данных системой не поддерживалась. Разработчик необходимый уровень ссылочной целостности обеспечивал программно.

B VFP имеется конструктор ссылочной целостности данных, который обеспечивает один из возможных вариантов, рассмотренных в предыдущем подразделе. Кроме того, используя триггеры и хранимые процедуры можно организовать любой уровень обеспеченности ссылочной целостности.

Понятие ссылочная целостность имеет смысл по отношению не менее чем к двум связанным таблицам – главной (родительской) и подчиненной (дочерней). Смысл этого понятия проиллюстрируем примером. Пусть есть два DBF-файла (родители BR и дети BD), связанные по типу 1:М. Естественно требовать удаления записи из BR в случае увольнения сотрудника, но при этом необходимо не забыть удалить все соответствующие записи о детях. Нет детей без родителей; хотя сотрудники могут не иметь детей. В VFP есть механизм автоматического удаления записей из дочерней таблицы в случае удаления соответствующей записи в главной таблице. Это конструктор ссылочной целостности данных   Referential Integrity.

Для доступа к конструктору ссылочной целостности необходимо выполнить следующую последовательность действий.

Открыть DBC-файл со связанными динамически главной и дочерней таблицами, для которых нужно обеспечить ссылочную целостность.

Нажав правую кнопку мыши на связи или два раза щелкнув левой кнопкой, открыть окно Edit Relation ship, выбрать кнопку Referential Integrity, которая откроет конструктор ссылочной целостности. В окне конструктора отражаются все возможные действия для родительского DBF-файла. На каждое действие (добавление, изменение и удаление) и для каждой связи можно создать свое правило. Например, для случая изменения ключевого значения в главной таблице (операция UPDATE) можно выбрать:

Ignore   игнорирует ссылочную целостность и позволяет изменять главный ключ, не учитывая при этом подчиненную таблицу;

Cascade   заменяет все записи в подчиненной таблице, удовлетворяющие старому ключевому значению главной таблицы, на новое значение;

Restrict   проверяет, имеются ли в подчиненной таблице записи, удовлетворяющие значению текущего главного ключа, и при их наличии запрещает изменения главного ключа.

Правила для удаления записей из главной таблицы (операция DELETE) аналогичны правилам изменения ключа. А вот правило добавления записей (операция INSERT) действуют со стороны подчиненной таблицы. Здесь возможно два варианта:

Restrict   запрещает добавление записи к подчиненной таблице, если в главной таблице отсутствует запись с подходящим значением ключа.

Ignore – игнорируются правила ссылочной целостности.

После назначения всех правил при нажатии <OK> появляется системный запрос   "хотите ли сохранить сделанные изменения и выйти?". При положительном ответе происходит создание в текущем DBC-файле ряда триггеров и хранимых процедур, которые предназначаются для обеспечения выбранного варианта правил ссылочной целостности. Если соответствующие триггеры и процедуры уже существовали ранее, то перед их перезаписью делается резервная копия.

После завершения работы конструктора ссылочной целостности можно открыть конструктор таблицы для просмотра созданных триггеров. Можно также просмотреть хранимые процедуры, нажав кнопку Edit Stored Procedures на панели инструментов конструктора DBC-файлов.

Триггеры   это логические выражения (или процедуры пользователя), которые вычисляются, когда пользователь удаляет (DELETE Trigger); вставляет (INSERT Trigger); изменяет (UPDATE Trigger) запись. Если значение выражения .F., то изменения не допускаются. Триггеры всегда выполняются после всех других проверок и в основном предназначены для обеспечения поддержки ссылочной целостности данных. Процедуры триггеров   это хранимые процедуры DBC-файла. Например, после каждого удаления записи в таблице товаров можно запрограммировать в процедуре, связанной с DELETE Trigger, подсчет остатков товара. Если остаток меньше заданной величены, то следует отправить сообщение по электронной почте поставщику.

5.5. Организация динамических связей

В реляционной СУБД и сущности и связи представляются в одной и той же форме   в виде отношений (файлов с расширением DBF). Если мы определили связь и представили её в виде DBF-файла, то эта связь будет существовать до тех пор, пока мы не уничтожим данный файл. Это так называемая “статическая” связь. Кроме такой связи можно средствами VFP организовать между отношениями динамические связи.

Организовать динамические связи в VFP можно двумя способами: средствами базового языка и средствами визуального программирования. В первом случае связь существуют, пока включено питание в ВС, или выполняется программа, где эта связь определена, или в данной программе эта связь не будет отменена. Во втором случае связь будет определена до тех пор, пока существует контейнер, в котором она сохранена, или в данном контейнере она не будет уничтожена.

Другими словами, в VFP допускается работа сразу с многими DBF-файлами и при этом возможно установление разнообразных динамических связей между ними.

Динамические связи организуются для достижения двух целей. Во-первых, для обеспечения синхронного движения указателей записей в связанных DBF-файлах. Во-вторых, для автоматизации процесса обеспечения ссылочной целостности данных в определенном DBC-файле.

Указатели записей в связанных DBF-файлах двигаются синхронно. При этом следует четко различать понятия родительского и дочернего файлов. DBF-файл, в котором указатель записи движется произвольно – по желанию конечного пользователя, считается ведущим, старшим или родительским. А DBF-файлы, в которых указатель следует за указателем старшего DBF-файла, называют ведомыми, младшими или дочерними.

В старшем и младших DBF-файлах должны существовать поля, несущие какой-то общий признак, по этим полям и устанавливается связь. В противном случае, хотя связь и возможна, но она бессмысленна.

Допускается сцепление одного отношения с несколькими другими. Младшие файлы в свою очередь, могут быть связаны с DBF-файлами следующего уровня и т.д.

Возможно установление двух типов связей между записями двух DBF-файлов. Связь типа одна_запись-к-одной автоматически перемещает указатель в младшем DBF-файле таким образом, что он всегда устанавливается на первую встреченную им запись с совпадающим признаком. Остальные такие записи, если они есть, остаются “не замеченными”. Такая связь устанавливается командой SET RELATION. Связь типа одна_запись-ко-многим позволяет обратиться ко всем записям младшего DBF-файла с совпадающим признаком. Такая связь реализуется парой команд SET RELATION и SET SKIP TO. Оба типа связей могут быть распространены на несколько баз сразу.

Формат команды, устанавливающий связь вида одна_запись-с-одной:

SET RELATION TO <ключ1> INTO <область1>
[,<ключ2> INTO <область2>…] [ADDITIVE].


Команда связывает указатель записи родительского DBF-файла в текущей рабочей области с указателями записей из других рабочих областей, имена которых указаны после опции INTO. Связующее поле со стороны родительской таблицы (ключ) указывается в данной команде. Обязательное условие для дочернего DBF-файла (с которым устанавливается связь)   он должен быть проиндексирован по связуемому полю. Следовательно, открытый индекс определяет условие связи со стороны дочернего DBF-файла.

Например, пусть есть два DBF-файла, в первом BAZA хранятся общие сведения о всех сотрудниках кафедры, а во втором BND – информация о плановой и фактической нагрузках по семестрам для преподавателей.

BAZA.DBF

TABN

FIO

KDOL

ZP




BND.DBF

TABN

ONF1

ONF2

ONP1

ONP2

ONF

ONP

Поля ONF1, ONP1 – фактический и плановый объёмы нагрузки на дневном отделении по первому семестру; ONF2, ONP2 – по второму семестру; ONF, ONP – общий объём. Для того чтобы посмотреть состояние дел с учебной нагрузкой по каждому преподавателю кафедры, следует выполнить следующий командный файл

SELECT A

USE BND

USE BAZA INDEX indTABN IN b

SET RELATION TO TABN INTO b

BROWSE FIELDS B.FIO, ONF1, ONP1, ONF2, ONP2

В этом примере установлена связь вида

М
ожно установить связь с несколькими DBF-файлами одновременно. Пусть необходимо связать старший DBF-файл, который уже связан с другим файлом, некоторый третий, четвёртый и т.д. DBF-файл, тогда следует во все последующие команды SET RELATION включить слово ADDITIVE, которое обеспечивает сохранение связей, установленных ранее.

Связь между всеми файлами разрывается командой SET RELATION TO без параметров. Связь с отдельным файлом в заданной <области> отменяется командой SET RELATION OF INTO <область>.

Рассмотрим пример связи с несколькими DBF-файлами. Пусть есть файл, в котором хранятся сведения о нагрузке на заочном отделении.

BNZ.DBF

TABN

ONF1

OBF2

ONP1

ONP2

ONF

ONP

Необходимо посмотреть для каждого преподавателя объёмы нагрузки фактический по отделениям и общий. Это можно сделать командами

USE BAZA

SET FILTER TO KDOL <=5

SKIP

USE BND IN b INDEX indTABND

USE BNZ IN c INDEX indTABNZ

SET RELATION TO TABN INTO b [, TABN INTO c]/

[SET RELATION TO TABN INTO c ADDITIVE]

BROWSE FIELDS FIO, B.ONF, C.ONF, ZN=B.ONF+C.ONF

SET RELATION OF INTO c

В этом примере установлена связь вида

С
ледующая команда устанавливает связь вида одна_запись-со-многими между двумя или несколькими базами данных:

SET SKIP TO [<обл.1>[, <обл.2>]…].

При этом с каждой записью из старшего DBF-файла могут быть сцеплены несколько записей из младшего файла. Связь может быть установлена сразу с несколькими младшими DBF-файлами, находящимися в указанных областях.

Прежде чем использовать команду SET SKIP TO, необходимо выполнить начальное сцепление вида одна_запись-с-одной командой SET RELATION. Удаление связи вида одна_запись-со-многими осуществляется командой SET SKIP TO без параметров.

Рассмотрим пример организации связи по схеме одна_запись-со-многими. Для этого предположим, что существует DBF-файл, где хранятся сведения о детях сотрудников кафедры. Чтобы посмотреть даты рождения всех детей сотрудников кафедры (у одного сотрудника может быть несколько детей, и предполагается, что исключена возможность работы обоих родителей на кафедре) выполним следующий командный файл

DET.DBF

FIO

TABN

DR





SELECT A

USE BAZA

USE DET IN B INDEX indTABND

SET RELATION TO TABN INTO b

SET SKIP TO b

BROWSE FIELDS FIO, B.FIO, B.DR

В команде BROWSE клавиши CtrlY, CtrlT доступны, но они действуют только на старшую базу. Повторяющиеся записи в старшей базе отображаются “заполненными”, как в следующей таблице.

FIO

B.FIO

B.DR

Шалобанов С.В.

Шалобанов С.В.

Шалобанов С.С.

Шалобанов А.С.

12.10.88

03.12.79

Лелянов Б.Н.

Лелянов Б.Н.

Лелянова Т.Б.

Лелянов А.Б.

23.11.70

14.03.81
1   ...   6   7   8   9   10   11   12   13   ...   19

Похожие:

Информационное обеспечение систем управления icon«Учебно-методический комплекс дисциплины «Информационное обеспечение систем управления»

Информационное обеспечение систем управления iconПояснительная записка
«Современная организация и технология документационного обеспечения управления». Он связан с курсами «Документоведение», «Информационное...
Информационное обеспечение систем управления iconИсследование систем управления процесс определения организационной...
Место исследований систем управления в комплексе дисциплин по теории и практке управления
Информационное обеспечение систем управления iconПрограммное обеспечение для отладки систем управления упругими объектами
Целью данной работы является разработка программного обеспечения для лабораторного стенда для изучения систем управления упругими...
Информационное обеспечение систем управления iconРабочая программа дисциплины «Информационное обеспечение, базы данных»
Факультет информационных систем и технологий Кафедра Прикладной математики и вычислительной техники
Информационное обеспечение систем управления iconУчебная программа по дисциплине " информационное обеспечение управления "
Изучение теоретических, методических и практических вопросов разработки, внедрения и совершенствования информационного обеспечения...
Информационное обеспечение систем управления iconРоссийской Федерации Самарский государственный архитектурно-строительный...
Информационные системы” являются информационные системы и сети, их математическое, информационное и программное обеспечение, способы...
Информационное обеспечение систем управления iconРабочая программа дисциплины «Архитектура ЭВМ и вычислительных систем»...
«Автоматизированные системы обработки информации и управления» (по отраслям) и 230105 «Программное обеспечение вычислительной техники...
Информационное обеспечение систем управления iconИсследование систем управления
Целью работы является рассмотрение частных методов исследования систем управления, а именно эксперимент, наблюдение и опрос
Информационное обеспечение систем управления iconПримерная тематика рефератов по курсу «Исследование систем управления»
Современный менеджмент и необходимость исследования систем управления социально-экономической организацией
Информационное обеспечение систем управления iconОрганизационно-правовое обеспечение правовой деятельности
Информационное обеспечение организации и проведения внеучебной работы
Информационное обеспечение систем управления iconИсследование систем управления Специальности: «Менеджмент организации»
«Исследование систем управления» является ведущей,в учебном процессе среди смежных дисциплин
Информационное обеспечение систем управления iconРеферат по дисциплине "Избирательное право" тема: Информационное...
Информационное обеспечение выборов. Правовое регулирование предвыборной агитации в РФ
Информационное обеспечение систем управления iconИнформационное обеспечение управления
В настоящее время классификационные схемы (классификаторы) строятся не только на основе соподчинения понятий (метод иерархии), но...
Информационное обеспечение систем управления iconКурсовая работа По дисциплине «Базы данных»
Программное обеспечение для создания систем управления базами данных
Информационное обеспечение систем управления iconРабочая программа учебной дисциплины «исследование систем управления»
Студенты научатся методам планирования эксперимента и организации исследования систем управления и научатся использовать приобретенные...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск