20169

Компоненты Visual FoxPro

Лекция

Информатика, кибернетика и программирование

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

Русский

2013-07-25

96 KB

20 чел.

9

Лекция 1

  1.  Компоненты Visual FoxPro.

Visual FoxPro  состоит из отдельных компонентов, которые используются для хранения и представления информации. Этими компонентами являются таблицы, представления данных, формы, отчеты, запросы, программы и библиотеки. Для создания форм и отчетов используются конструкторы, поэтому эти компоненты часто называют конструкторскими объектами. Конструкторские объекты являются составными объектами, т.е. состоят из более мелких объектов (таких как поля, кнопки, диаграммы, рамки и т.д.), которые называются объектами интерфейса.

К объектам интерфейса относятся:

Текстовые объекты

Прямоугольники и линии

Поля

Кнопки

Графические объекты

OLE - объекты

Страницы документов и т.д.

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

Компоненты Visual FoxPro:

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

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

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

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

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

Библиотеки классов предназначены для хранения классов, созданных в Visual FoxPro. Классы могут использоваться при создании форм.

  1.   Создание базы данных, таблиц и индексов.
    1.   Создание б. д.

Visual FoxPro является системой управления реляционными базами данных. В реляционной б.д. все все данные хранятся в виде прямоугольных таблиц, при этом все операции над базой данных сводятся к манипуляции с таблицами. Таблица состоит из строк и столбцов и имеет уникальное имя в базе данных. База данных содержит множество таблиц, связь между которыми устанавливается с помощью совпадающих полей. В каждой из таблиц содержится информация о каких-либо объектах одного типа (группы).

Н-р, в таблице ФТЭ содержится информация об эффектах, в таблице кодификаторов величин - список и коды величин, в таблице кодификаторов природы- список и коды природы. База данных содержит список этих таблиц и связей между ними. Visual FoxPro поддерживает четыре типа отношений между таблицами: один-к-одному, один-ко-многим, много-к-одному, много-ко-многим.

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

Обеспечить быстрый доступ к данным в таблицах

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

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

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

  1.   Создание таблицы

В Visual FoxPro  можно создавать как таблицы, входящие в базу данных, так и отдельные таблицы, аналогичные таблицам, создаваемым в предыдущих версиях FoxPro. При создании таблиц, входящих в базу данных, можно кроме наименования таблицы определить длинное имя таблицы, содержащее до 128 символов. Это имя затем будет отображаться в окне проекта,а также использоваться при создании форм, запросов и отчетов.

  1.   Типы полей

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

Текстовый CHARACTER, CHARACTER (binary) - максимальная ширина поля составляет 254 символа. Добавлен новый тип текстового поля Character(binary), который используется в том случае, если не требуется учитывать кодовую страницу отображаемых данных, т.е. для хранения символов с кодами ASCII от 0 до 255.

Числовой Integer, Numeric, Float, Double. Тип Integer используется для хранения   только целых чисел, при этом экономится место для хранения данных и вам не потребуется дополнительный формат для отображения данных в виде целых чисел. Поля Numeric и Float содержат числовые данные  в двоичном формате с фиксированной точкой. Данные этого типа занимают 8 байт оперативной памяти и могут иметь ширину от 1 до 20.  Тип Float оставлен для совместимости с предыдущими версиями. Тип Double предназначен для чисел с плавающей точкой и хранит 18 разрядов в сжатом виде. Такое поле занимает ровно 8 байт.

Логический тип Logical - содержит значения, соответствующие логической истине или логической лжи. Размер поля всегда -1.

Тип даты и даты-времени Date, DateTime очень похожи. Оба хранят даты. Каждый из них требует 8 байт для хранения даты в виде YYYYMMDD - 4 цифры на год, по 2  на месяц и день независимо от того, указывается век или нет. Для типа DateTime требуется еще 6 байт для хранения времени в виде HHMMSS, где HH - часы от 00 до 23, ММ - минуты, SS - секунды. Если вы превращаете тип Date в DateTime, то автоматически устанавливается время 12:00:00. Вы можете прибавить 1 к дате и увеличить ее на один день. Точно также вы можете прибавлять по 1 секунде к переменной типа DateTime.

Поле денежного типа Currency предназначено для хранения денежных сумм. Для этого поля определена точность, равная четырем знакам после запятой, которую вы не можете изменить. Данные этого типа занимают 8 байт в оперативной памяти. Максимально возможная сумма - чуть больше 922 триллионов.

Текстовое поле произвольной длины Memo и Memo (binary)- позволяет хранить длинные текстовые строки (более 254 символов). Memo-поля обеспечивают переменный размер сохраняемой строки на основе блочной структуры. блок состоит из фиксированного числа символов (по умолчанию - 64). Это означает, что каждые следующие 64 символа в строке требуют дополнительного блока. Н-р, если у вас есть строка из 72 байт, то для “лишних” 8 байт потребуется целый 64-символьный блок.

Размер блока можно менять с помощью команды SET BLOCKSIZE. Возможные размеры от 33 до 511 байт. Блоки большего размера кратны 512 байтам и обозначаются целыми числами от 1 до 32. Visual FoxPro допускает также блоки размера 0. В этом случае Visual FoxPro в процессе записи занимает байты по одному, поэтому память не расходуется понапрасну, однако производительность будет ниже, чем при большом размере блока.

Команда SET BLOCKSIZE должна располагаться до первой записи в Memo-поле. Когда вы создаете первую запись в Memo-поле, Visual FoxPro запоминает текущий размер блока в Memo-файле. Для того чтобы изменить размер блока в Memo-файле, вам придется перезаписать каждое Memo-поле. Запомните, что независимо от размера блока первый блок резервирует 8 байт под указатель.

Почему вас должен волновать размер блока? Чем он больше, тем больше лишней памяти тратится при просмотре Memo-поля, если записи сильно отличаются по длине. С другой стороны, чем больше блоков в Memo-поле, тем медленнее Visual FoxPro их выводит. Поэтому лучше всего размер блока установить равным наиболее вероятной длине записи.

Поле Memo(binary) - может содержать двоичные данные, такие как просканированные изображения и оцифрованная музыка.

Двоичное поле произвольной длины General  применяется для хранения графики. Это поле является специальной разновидностью Memo-поля. Данные поля General хранятся в том же FPT-файле, что и другие Memo-поля.

  1.   Свойства полей

Кроме этих основных параметров каждое поле обладает дополнительными свойствами, определяющими условия ввода данных:

Validation Rule - условие правильности ввода данных. Н-р, в таблице ФТЭ поле POGRESH (погрешность) не может принимать значение > 30. Это условие и вводится в качестве правила. Если условие не выполняется, то можно выдать свое сообщение, которое задается в текстовом поле Validation Text. Правилом проверки может быть любое логическое выражение. Если выражение слишком сложное и не помещается в одну строку, то можно вычислять его с помощью пользовательской функции. Единственное требование к такой функции - возвращаемое значение должно быть логического типа. Проверка значения поля производится в момент любого его изменения - при выходе из поля при просмотре вручную или при выполнении команд INSERT(вставить) и  REPLACE (заменить).

Default Value - задание значения поля по умолчанию. Тип выражения должен совпадать с типом поля. Значение по умолчанию будет присваиваться полю каждый раз при добавлении новой записи как в программе, так и при ручном редактировании таблицы.

Caption - заголовок поля. Он используется при при просмотре или редактировании таблицы в качестве заголовка столбца.

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

  1.   Использование опции NULL

    В предыдущих версиях FoxPro было невозможно определить, ввел ли пользователь пустое значение в поле преднамеренно или просто пропустил поле при вводе. Пустое поле, в зависимости от его типа, понимается как пустая строка символов, число ноль или логическая ложь. Однако все эти значения могут являться допустимыми значениями полей. Например, пустое поле города в адресе клиента может означать, что либо человек живет в поселке, либо название города просто забыли ввести. Нулевое значение в поле итоговой суммы товаров, купленных покупателем, может означать, что покупатель либо еще ничего не покупал, либо вернул все купленные товары из-за их плохого качества. Такая же неоднозначность проявляется и для полей логического типа. если женатый человек случайно пропустил вопрос “Женаты ли вы”, и соответствующее поле приняло значение логической лжи, что означает “нет”, то у жены этого человека потом наверняка возникнут вопросы по этому поводу.

Visual FoxPro позволяет решить все эти конфликты путем использования нового значения поля - NULL. Для этого, во-первых, нужно выполнить команду SET NULL ON в командном окне или в программе. Во-вторых, нужно изменить структуру таблицы, установив опцию NULL для всех полей, которые должны принимать это значение. если вы этого не сделаете, Visual FoxPro будет выдавать сообщение об ошибке при попытке добавить запись с неопределенным  значением при помощи команд APPEND FROM или INSERT SQL. Значение NULL будет помещено во все поля, допускающие это значение и не содержащие информации.

Предостережение. По умолчанию использование неопределенного значения NULL в полях запрещено. Если при этом выполнена команда SET NULL ON, то поле нельзя пропустить, не введя в него информацию. Не допускайте появления пустых или неопределенных индексных полей. Для этого введите команду SET NULL ON и снимите флажки на индексных полях.

Правила использования опции NULL:

по умолчанию команда APPEND BLANK добавляет запись с пустыми полями, а не с неопределенными значениями.

при установке опции NULL на пустое символьное поле оно останется пустым

при установке опции NULL на числовое поле, имеющее нулевое значение, значение поля не изменяется

при сбросе опции NULL на символьное поле с неопределенным значением поле становится пустой строкой

при сбросе опции NULL на числовое поле с неопределенным значением в поле заносится число ноль.

  1.   Свойства таблицы и хранимые процедуры

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

Для определения выражения проверки достоверности ввода используются поле ввода Validation Rule, в которое вводится логическое выражение. Если значение этого выражения равно (.Т.), то считается, что пользователь ввел допустимые данные и разрешается выход из записи. В противном случае Visual FoxPro  не позволяет переместить указатель на другую запись и не записывает сделанные изменения, показывая при этом сообщение, заданное в поле Validation Text.

Для проверки правильности записей в Visual FoxPro  введена новая функция GETFLDSTATE(). Она позволяет определить, изменилось ли поле в текущей записи за время выполнения последней команды и была ли запись помечена на удаление.  Синтаксис функции:

GETFLDSTATE (имя поля ! номер поля [,псевдоним ! рабочая область])

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

Возвращаемое значение

Состояние записи

1

Значение поля не изменилось. Состояние признака удаления также не было изменено

2

Изменилось либо поле, либо признак удаления

  3

Поле в добавленной записи не изменилось и признак удаления этой записи сохранил свое значение

4

В добавленной записи изменилось либо поле, либо признак удаления

Эта информация выдается только для таблиц, включенных в базу данных. Информацию о всех полях текущей записи можно получить с помощью функции GETFLDSTATE(-1). В этом случае функция возвращает строку, в которой сначала находится состояние признака удаления, а за ним - состояния всех полей записи. Использование функции с аргументом 0 возвращает только состояние признака удаления. При использовании с любыми другими аргументами, кроме (-1), эта функция возвращает числовое значение.

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

Предостережение! 

Изменение любого поля записи из тела функции проверки в Visual FoxPro запрещается. Функция служит только для диагностики ошибок, но не для их коррекции.

Проверка правильности записей выполняется при закрытии окна просмотра или экранной формы, даже если не изменив текущей записи вы затронули ее содержимое.

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

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

Имеются ограничения на использование триггеров. Вы не можете:

перемещать указатель записи в текущей рабочей области

изменять значения полей текущей записи

закрыть текущую рабочую область или открыть в ней новый файл

Лучше всего использовать триггеры для обеспечения (поддержания) межтабличной целостности.

В окне свойств таблицы можно определить следующие триггеры:

INSERT - определяет действия, который будут выполняться после добавления или вставки новой записи в таблицу

UPDATE - определяет действия, которые будут выполняться после изменений записи таблицы

DELETE - определяет действия, которые будут выполняться после удаления записи из таблицы

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

Вызов перечисленных выше триггеров происходит в следующих случаях:

вызов INSERT:

при выполнении команд APPEND FROM, APPEND FROM ARRAY, APPEND BLANK

когда вы добавляете новую запись в режиме BROWSE или EDIT

при выполнении команд IMPORT (импортирует данные из файла внешнего формата, создавая новую таблицу Visual FoxPro), INSERT-SQL, RECALL

при снятии метки об удалении записи в режиме BROWSE или EDIT

вызов UPDATE:

при наступлении любого события, которое приводит к модификации записи (н-р, при изменении значения поля)

при выполнении команд GATHER (замещает данные в текущей записи таблицы содержимым таблицы), REPLACE, REPLACE FROM ARRAY, UPDATE-SQL (обновляет записи в таблице)

вызов DELETE:

при выполнении команды DELETE

когда вы помечаете запись для удаления в режиме BROWSE или EDIT

При создании триггеров необходимо учитывать особенности их вызова:

выполнение команды PACK не приводит к вызову триггеров

выполнение команды ZAP(удаление из таблицы всех записей, оставляя лишь структуру) не вызывает триггер DELETE

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

момент вызова триггера зависит от выбранного режима буферизации данных (при работе в сети) - используется для защиты данных в многопользовательской среде. Буферизация - в 2-х режимах, выбор режима определяет время блокирования одной или нескольких записей, а также момент и условия их освобождения.

Свойства таблицы при необходимости можно менять программным путем с помощью новых команд ALTER TABLE и ALTER COLUMN. Н-р, потребовалось изменить название города по умолчанию:

ALTER TABLE tabl1 ALTER COLUMN gorod SET DEFAULT ‘Астрахань

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

  1.   Типы индексов

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

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

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

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

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

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

  1.   Определение отношений между таблицами.

В Visual FoxPro можно устанавливать постоянные и временные отношения между таблицами. Постоянные отношения хранятся в словаре базы данных. Они автоматически используются каждый раз при открытии таблиц. Наличие постоянных отношений особенно полезно при создании представлений, запросов, форм и отчетов. Временные отношения создаются командой SET RELATION и в отличие от постоянных отношений аннулируются при выходе из Visual FoxPro  или при выполнениии новой команды SET RELATION.

При определении типа отношений (один-к-одному, один-ко-многим, много-к-одному, много-ко-многим) необходимо соблюдать следующие правила:

исходная (та, которую относят к другой, т.е. дочерняя) таблица должна иметь индекс PRIMARY или CANDIDATE. Определить постоянное отношение исходя из обычного (REGULAR)  или уникального (UNIQUE) индекса невозможно.

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

  1.   Определение условий целостности данных

Установленные отношения между таблицами могут быть использованы для задания условий целостности данных. Целостность данных является одним из самых важных требований, предъявляемых к базам данных. Н-р, в таблице природы удалим запись с механической природой (код и название), в связанной с ней таблице ФТЭ вы не сможете определить название природы по коду. Т.е. говорят, что в этом случае нарушена ссылочная целостность.

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

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

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

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

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

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

Правила для добавления записей действуют со стороны дочерней таблицы:

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

IGNORE - не выполняется никаких проверок на целостность.

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

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

  1.   Определения других типов ссылочной  целостности

Конструктор ссылочной целостности - это не единственный способ определения общих правил поддержания ссылочной целостности базы данных. Существует множество других правил, таких как:

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

Ограниченная замена - аналогична ограниченной вставе. Она не позволяет изменить запись, если новое значение этой записи не удовлетворяет ни одному из внешних ключей.

Запрещенное удаление - предотвращает удаление записи из дочерней  таблицы, если на нее есть ссылки в родительской таблице. Н-р, в таблице банковских реквизитов нельзя удалять записи, если на них есть ссылки в таблице клиентов.

Запрещенная замена - запрещает изменение записи дочерней таблицы, пока на нее есть ссылки в родительской таблице.

Каскадное удаление - удаляет все дочерние записи при попытке удалить родительскую запись.

Объединяющая замена - при изменении дочерней записи такие же изменения деляются автоматически во всех родительских записях.

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

Обнуляющая замена - позволяет изменить ключевое поле дочерней записи, но при этом все ссылки на эту запись принимают значение (.NULL.)

Удаление по умолчанию - аналогично обнуляющему удалению, но ссылки на удаленную запись принимают значение не (.NULL.), а какое-то определенное значение по умолчанию.

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

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

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

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

Контейнерный файл базы данных.

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

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

Имя поля

Тип данных

Длина

Назначение поля

OBJECTID

Integer

4

Ключевое поле - порядковый номер

PARENTID

Integer

4

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

OBJECTTYPE

Character

10

Длинное имя объекта

OBJECTNAME

Character

128

Двоичный код свойств этого объекта

PROPERTY

Memo(binary)

4

Двоичный код программ этого объекта

CODE

Memo(binary)

4

Флажки, обеспечивающие ссылочную целостность данных

RIINFO

Character

6

Поле расширения, которое можно использовать в своих целях

USER

Memo

4

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

Use baza1.dbc

Browse

Имя базы данных, к которой относится таюлица, фиксируется в заголовке файла таблицы .DBF. Включение маркера файла .DBC в заголовке .DBF-файла повлекло за собой некоторое увеличение размера этого заголовка и послужило причиной того, что .DBF-файлы FoxPro версии2.х, не имеют обратной совместимости с файлами VFP. Если вы захотите сохранить файл .DBF формата VFP в формате FoxPro 2.x, вся информация о связи с б.д. будет потеряна.


 

А также другие работы, которые могут Вас заинтересовать

9294. Операция. Способы формирования хирургического шва 18.76 KB
  Лекция Операция. Способы формирования хирургического шва. Операция - способ хирургического вмешательства, заключающегося в проведении специального механического воздействия на органы и ткани с лечебной и диагностической целью. Операция...
9295. Послеоперационный период 21.51 KB
  Лекция №14 Послеоперационный период Воздействие патологических факторов, обусловленных болезнью и операционной травмой, вызывает состояние, которое именуется системной постагрессивной реакцией. Классификация: Ближайший период (с 1 по 5-7 день)...
9296. Общие принципы лечения переломов костей 19.25 KB
  Общие принципы лечения переломов костей И стоит вопрос так, от того что студенты знают, лекции редко читают, нескольких слов. Травматизм занимает третье место, после респираторных заболеваний У мужчин 15-29 лет стоит на первом месте. Требуют гопитал...
9297. Деонтология в хирургии 21.89 KB
  Лекция №16 Деонтология в хирургии Термин деонтология введен вначале 19 века английским философом и священником Бентом, как название науки о профессиональном поведении человека. Деонтология – учение о нравственных аспектах действия врача в сфе...
9298. Травматизм. Социально-экономическое значение. Принципы оказания медицинской помощи 24.51 KB
  Травматизм. Социально-экономическое значение. Принципы оказания медицинской помощи. Травма - воздействие на организм человека внешних факторов, которые вызывают анатомические и функциональные нарушения (сотрясение, ушибы, растяжения, разрывы, с...
9299. Травматический шок. Этиология и патогенез. Принципы лечения 23.15 KB
  Травматический шок. Этиология и патогенез. Принципы лечения Шок – внезапно возникшее критическое состояние организма, проявляющееся быстропрогрессирующим ухудшением функций жизненно важных систем. Термин введен в 1737 году французским хирургом Л...
9300. Синдром длительного сдавления 18.66 KB
  Лекция №19 Синдром длительного сдавления. В локализации повреждений преобладает как правило, сдавление конечностей (60% всех случаев СДС - нижние конечности, и 20% - верхние). При уже развившейся острой почечной недостаточности летальность дост...
9301. Медицина катастроф. Классификация. Организация медицинской помощи 26.56 KB
  Лекция №20 Медицина катастроф. Классификация. Организация медицинской помощи. Рост тяжелых антропогенных и природных катаклизм, сопровождающийся значительным материальным ущербом и огромными человеческими жертвами стал поводом и основной причиной дл...
9302. Ожоговая травма. Ожоговая болезнь. Современные принципы терапии 24.23 KB
  Лекция №21 Ожоговая травма. Ожоговая болезнь. Современные принципы терапии. Ожоги - повреждение тканей, вызванные воздействием термической, химической, электрической или лучевой энергии. В первую очередь поражаются кожные покровы (4-6% массы те...