21020

РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ В VISUAL FOXPRO

Контрольная

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

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

Русский

2013-08-02

149 KB

14 чел.

2   РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ В VISUAL FOXPRO

2.1  ФАЙЛЫ  БАЗЫ ДАННЫХ VISUAL FOXPRO

База данных в Visual FoxPro состоит из набора файлов различного назначения. Главным файлом БД является файл, имеющий имя, соответствующее имени БД, и расширение *.dbc. Он дополняется  файлом примечаний (расширение *.dct) и индексным файлом (расширение *. dcx), имеющими такое же имя. Главный файл и его файл примечаний содержат информацию о составе БД, требования к данным, хранимые процедуры БД и другую общую информацию о БД.

Файлы с расширениями *.dbf  предназначены для хранения таблиц БД. В каждом таком файле  хранится отдельная таблица. При наличии в таблице полей примечаний (полей типа memo) табличный файл дополняется файлом примечаний, имеющим такое же имя, но расширение *.fpt. В файле примечаний сохраняется текстовая информация memo-полей, разбитая на блоки заданного размера. Файл примечаний автоматически открывается при открытии своего табличного файла и закрывается вместе с ним.

Кроме файла примечаний, табличный файл может дополняться одним или несколькими файлами с расширениями *.cdx  и   *.idx, предназначенными для хранения созданных для таблицы индексов. Индексы создаются для упорядочивания данных, ускорения поиска и отбора информации по различным ключевым выражениям и установления связей между таблицами. Каждый индекс указывает последовательность следования записей таблицы в соответствии с заданным для него ключевым выражением. Индексный idx-файл использует устаревший формат и предназначен для хранения одного индекса. Имя idx-файла произвольно и определяется при создании индекса.  Индексный cdx-файл используется для независимого хранения произвольного числа индексов. Индексы, хранящиеся в cdx-файле, называются тегами (tag) этого файла. Индексные  cdx-файлы имеют две разновидности. Структурный cdx-файл имеет такое же имя, как табличный файл, и автоматически открывается и закрывается вместе с ним.  Неструктурный cdx-файл имеет произвольное имя, определяемое при создании, и должен открываться и закрываться пользователем или программой.

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

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

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

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

2.2   СОЗДАНИЕ БАЗЫ ДАННЫХ VISUAL FOXPRO

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

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

2.2.1  Создание БД с помощью конструктора базы данных

Для создания базы данных в диспетчере проектов нужно выбрать элемент Databases дерева проекта и нажать кнопку New. В открывшемся окне диалога Create выбирается тип файла Database, задаются имя и место размещения создаваемой базы данных. После нажатия кнопки Сохранить на экране откроется пустое окно конструктора базы данных, в котором и будет формироваться структура создаваемой БД.

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

Подменю Database содержит набор команд работы с БД и ее элементами (таблица 2.1).

Инструментальная панель Database Designer содержит набор кнопок, дублирующих команды New Table, Add Table, Remove Table, New Remote View, New Local View, Modify Table, Browse Table, Edit Stored Procedures и Connections подменю Database.

Таблица 2.1 - Команды подменю Database

Команда

Назначение

New Table

Создает новую таблицу БД

Add Table

Добавляет существующую таблицу в базу данных

New Remote View

Создает удаленное представление данных

New Local View

Создает локальное представление данных

Modify

Модифицирует структуру выбранной таблицы

Browse

Показывает содержимое таблицы в режиме Browse

Remove

Удаляет таблицу из БД и стирает, если задано, с диска

Find Object

Находит заданный объект в окне конструктора БД

Rebuild Table Indexes

Перестраивает индексы

Remove Deleted Records

Физически удаляет помеченные для удаления записи

Edit Relationship

Редактирует отношения между таблицами

Edit Referential Integrity

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

Edit Stored Procedures

Вызывает на редактирование  набор хранимых процедур

Connections

Выводит на экран окно задания соединения Connections 

Arrange

Упорядочивает и выравнивает объекты БД

Refresh 

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

Clean Up Database

Очищает базу данных от помеченных для удаления объектов

Properties

Выводит на экран окно свойств Database Properties 

Контекстное меню конструктора базы данных содержит наиболее часто используемые команды из подменю Database, команду Help, а также команды для раскрытия уровней вложенности объектов в окне конструктора базы данных (Expand All) и их свертывания (Collapse All).

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

2.2.2   Другие способы создания БД

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

а) Интерактивное создание с помощью пунктов меню File/New с последующим выбором опций Database/New file. Созданная БД будет независимой и для введения ее в проект необходимо выполнить операцию добавления к проекту.

б) Программное создание с помощью команды CREATE DATABASE.

2.3   СОЗДАНИЕ ТАБЛИЦЫ БАЗЫ ДАННЫХ

2.3.1 Создание таблицы с помощью конструктора таблицы

Создание таблицы обычно выполняется интерактивно с помощью конструктора таблицы. Для создания таблицы в этом случае запускается любым способом операция добавления новой таблицы (кнопка New диспетчера проекта или кнопка New Table инструментальной панели Database Designer, команда New Table подменю Database или контекстного меню). В открывшемся окне диалога Create выбирается тип файла Table/DBF, задаются имя и место размещения создаваемой таблицы. После нажатия кнопки Сохранить на экране откроется пустое окно конструктора таблицы Table Designer, в котором будет определяться описание таблицы и ее индексов.

Окно конструктора таблицы содержит вкладки Fields, Indexes и Table. Во вкладке Fields, которая является активной при открытии окна диалога, определяются поля таблицы и описываются их свойства. Вкладка Indexes служит для определения индексов таблицы, a вкладка Table предназначена для определения требований к данным на уровне таблицы.

Задание набора полей таблицы

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

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

Тип данных поля выбирается в позиции Type из списка допустимых типов. Основными типами данных Visual FoxPro для полей таблиц являются следующие типы (таблица 2.2).

Таблица 2.2 – Типы данных Visual FoxPro

Тип

Обозначение

Описание

Character

C

Символьное поле заданной длины (до 254 символов)

Date

D

Поле даты (содержит день, месяц и год)

DateTime

T

Поле даты и времени (содержит день, месяц, год, час, минуту, секунду и миллисекунду)

Logical

L

Логическое поле (содержит .T. или .F.)

Numeric

N

Числовое поле с фиксированной точкой. Задается общая длина (до 20 позиций) и число знаков после точки.

Integer

I

Целое число, размер 4 байта

Double

B

Число с плавающей точкой двойной точности, размер 8 байтов

Memo

M

Текстовое поле произвольной длины. Значение хранится в файле примечаний *.fpt, а в таблице храниться лишь ссылка на место хранения

В позиции Width задается ширина поля, если она не фиксирована, в позиции Decimal - количество десятичных знаков для типа Numeric.

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

Задание свойств полей таблицы

Требуемые свойства поля, выбранного в списке, задаются в следующих элементах вкладки Fields.

а) Позиция NULL. Установка пометки разрешает использовать в поле значение NULL. Значение NULL в явном виде указывает отсутствие информации в поле, что позволяет отличать незаполненное поле от поля, заполненного пустым или нулевым значением. Значение NULL вводится в поле нажатием клавиш Ctrl+0 при интерактивном вводе данных или присвоением полю значения  .NULL.  при программной записи данных.

б) Поле Format. Задается формат отображения данных в формах, отчетах и окне Browse.

в) Поле Input Mask. Задается формат ввода данных.

г) Поле Caption. Задается заголовок поля, используемый при выводе заголовков в формах, отчетах и окне Browse.

д) Поле Rule. Задается логическое выражение, описывающее условие правильности введенных в поле данных. Проверка правильности данных выполняется при попытке выхода из поля. Если выражение условия принимает значение .T., то введенное значение считается верным и выход из поля разрешается.

е) Поле Message. Задается текст сообщения, выводимого при обнаружении неправильного ввода данных.

ж) Поле Default value. Задается значение по умолчанию, автоматически заносимое в поле при создании новой записи.

Поля области Map field type to classes предназначены для выбора библиотеки и имени класса, которые будут использоваться для автоматического создания объектов в форме при перетаскивании данного поля таблицы на форму.

Задание свойств таблицы

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

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

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

в) Поле Message. Задается текст сообщения, выводимого при обнаружении неправильного ввода данных.

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

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

- регистрация работы пользователя с записями;

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

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

Создание индексов для таблицы

Вкладка Indexes позволяет создавать новые индексы, а также просматривать, изменять и удалять имеющиеся индексы. Все индексы, представленные в данном окне, сохраняются в структурном индексном файле. Создание idx-файлов или неструктурных cdx-файлов необходимо выполнять программным путем.

На вкладке Indexes каждый индекс описывается в отдельной строке.

В позиции Name указывается имя индекса. Имя должно иметь длину не более 10 символов, начинаться с буквы или знака подчеркивания и быть уникальным в таблице.

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

В позиции Type выбирается тип индекса. В Visual FoxPro используются четыре типа индексов (таблица 2.3), различающихся требованиями к сохраняемым значениям индексного выражения.

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

В позиции Order выбирается возрастающий или убывающий порядок расположения данных в индексе.

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

Таблица 2.3 – Типы индексов Visual FoxPro

Тип

Описание

Primary

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

Candidate

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

Regular

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

Unique

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

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

Использование свободных таблиц может быть полезным:

- для совместного использования информации несколькими БД;

- для хранения данных в формате, доступном для различных видов БД;

- для хранения редко использующихся данных, загромождающих БД.

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

2.3.2  Другие способы создания таблиц и индексов

Для создания таблиц и индексов можно использовать также следующие способы.

а) Интерактивное создание таблицы с помощью пункта меню File/New с последующим выбором опций Table/New file. Созданная таблица будет независимой от проекта и для введения ее в проект необходимо выполнить операцию добавления к проекту.

б) Программное создание таблицы с помощью команды CREATE TABLE.

в) Программное создание индекса с помощью команды INDEX ON. С помощью данной команды могут быть созданы как idx-файлы, так и cdx-файлы разного типа.

г) Программное создание таблиц и индексов по имеющемуся образцу. Используются команды COPY STRUCTURE, CREATE FROM, COPY FILE, COPY INDEXES, COPY TAG.

2.4   СОЗДАНИЕ ОТНОШЕНИЙ МЕЖДУ ТАБЛИЦАМИ БД

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

Установление отношения при проектировании БД

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

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

Задание условий ссылочной целостности

Для определения условий ссылочной целостности нужно выполнить команду Referential Integrity, выбрав ее из системного меню Visual FoxPro,  из контекстного меню конструктора базы данных или нажав соответствующую кнопку панели инструментов Database Designer. Команда также может быть выполнена из окна редактирования связи Edit Relationship, вызываемого двойным щелчком на линии связи или соответствующей командой системного или контекстного меню. В результате откроется окно конструктора условий целостности данных Referential Integrity Builder, которое содержит перечень всех установленных отношений между таблицами. Таблица описания условий ссылочной целостности содержит:

- наименования родительской и дочерней таблиц;

- наименования индексов, используемых для связи;

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

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

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

а) Для попытки изменения в родительской таблице значения ключа, использующегося для связи (Rules for Updating) можно выбрать следующие реакции:

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

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

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

б) Для попытки удаления записи в родительской таблице (Rules for Deleting) можно выбрать следующие реакции:

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

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

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

в) Для попытки добавления новой записи в дочернюю таблицу или редактирования в дочерней таблице значения индексного выражения, использующегося для связи (Rules for Inserting), можно выбрать следующие реакции:

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

- Ignore. Разрешаются любые значения индексного выражения связи в дочерней таблице. Целостность связей при этом не поддерживается.

Таким образом, при выборе правила Cascade Visual FoxPro будет выполнять корректирующее действие, а при выборе правила Restrict - блокирующее действие для поддержки целостности связи. Для исполнения этих действий при выходе из окна  конструктора условий целостности данных Visual FoxPro генерирует программный код (RI code) соответствующих триггеров. Данный код включается в состав хранимых процедур и может быть просмотрен с помощью операции Edit Stored Procedures, запускаемой из системного меню или инструментальной панели Visual FoxPro. Создание триггеров отобразится также появлением их вызовов в полях триггеров конструктора таблиц.

Другие способы контроля связей между таблицами

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

2.5  ВВОД И ОБНОВЛЕНИЕ ИНФОРМАЦИИ В БД

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

- выборки данных из БД для их просмотра;

- редактирования записей таблиц БД для обновления информации;

- добавления записей в таблицы БД для ввода новой информации;

- удаления записей таблиц БД для стирания устаревшей информации.

Основная работа пользователей с данными БД осуществляется через приложения. В приложениях операции с данными БД реализуются с помощью интерфейсных элементов ввода-вывода (таких, как табличный элемент, поле ввода, список выбора и т.д.) и команд модификации данных (таких, как SELECT, APPEND BLANK, REPLACE, DELETE и т.д.), включаемых в программный код приложения. Вопросы разработки приложений для работы с данными БД будут рассматриваться в следующих разделах практикума.

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

Познакомимся с основными возможностями непосредственной работы с данными через интерфейс Visual FoxPro.

Для работы с данными некоторой таблицы БД следует открыть эту таблицу и вывести ее на экран для просмотра и контроля. Это действие можно выполнить многими способами:

- с помощью пункта File/Open системного меню Visual FoxPro или соответствующей кнопки инструментальной панели;

- с помощью окна Data Session, используя его кнопки Open и Browse;

- с помощью окна Project Manager, используя его кнопку Browse или соответствующий пункт его контекстного меню;

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

- с помощью окна Command, вводя команды USE и BROWSE с необходимыми параметрами.

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

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

а) Изменение имеющейся записи выполняется путем непосредственного редактирования в таблице.

б) Добавление новой одиночной записи в таблицу осуществляется выбором из системного меню Visual FoxPro пункта Table / Append New Record. Для ввода нескольких записей целесообразно переключиться в режим добавления выбором пункта системного меню View / Append Mode.

в) Удаление записей в Visual FoxPro выполняется в два этапа. На первом этапе осуществляется логическое удаление записей без их физического стирания. Для логического удаления одиночной записи из системного меню Visual FoxPro выбирается пункт Table / Toggle Deletion Mark, изменяющий пометку удаления текущей записи. Аналогичный результат можно получить щелчком мыши в столбце удаления, находящемся в левой части таблицы. Проставленная здесь пометка удаления соответствует логическому удалению записи. Для логического удаления по задаваемому условию группы записей используют пункт Table / Delete Records. Логически удаленные записи при установке SET DELETED ON не отображаются на экране и не используются при программной обработке (при установке SET DELETED OFF логическое удаление при просмотре и обработке игнорируется). На втором этапе выполняется физическое стирание записей, помеченных на удаление. Для физического удаления помеченных записей используйте пункт Table / Remove Deleted Records.   

Действия по изменению данных в текущей таблице могут быть выполнены также программно путем ввода а окне Command команд REPLACE, APPEND BLANK, APPEND, INSERT, DELETE, PACK с необходимыми параметрами.

2.6  ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ ПОДГОТОВКИ

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

2.6.2  Создайте в рамках проекта новую базу данных.

2.6.3  Освойте создание таблиц и индексов.

2.6.3.1 Создайте таблицу отделов организации с полями, содержащими данные:

- название отдела;

- телефон;

- количество работников по штатному расписанию.

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

ПРИМЕЧАНИЕ: Системная проверка уникальности первичного ключа выполняется по всем записям таблицы, в том числе и по записям, помеченным как удаленные. Если записи с пометкой удаления мешают работе, то выполните их физическое удаление.

2.6.3.2  Создайте таблицу сотрудников отделов с полями, содержащими данные:

- табельный номер сотрудника;

- ф.и.о. сотрудника;

- название отдела;

- дата приема на работу;

- дата последней аттестации;

- прочие данные (в виде текста произвольной длины).

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

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

Запомните созданную таблицу. Откройте таблицу в режиме просмотра и с помощью пунктов системного меню Visual FoxPro заполните несколько строк (для отделов используйте названия, имеющиеся в таблице отделов). Меняя главный индекс (например, с помощью команды SET ORDER), убедитесь в правильности переключения упорядочивания данных.

2.6.4 Освойте задание ограничений целостности на уровне поля и уровне таблицы.

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

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

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

2.6.5  Освойте установление связи между таблицами

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

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

2.7 ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ

2.7.1. Создание проекта.

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

2.7.2. Создание БД.

Создайте в рамках проекта новую базу данных.

2.7.3. Создание таблиц и индексов.

Создайте в БД две таблицы с взаимосвязанной информацией:

а) таблицу маршрутов автотранспортного предприятия с полями, содержащими данные:

- номер маршрута (поле может содержать строковые значения, например «21с»),

- начальный пункт маршрута,

- конечный пункт маршрута,

- количество автобусов на маршруте по штатному расписанию.

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

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

б) таблицу автобусов с полями, содержащими данные:

- государственный номер автобуса,

- модель,

- количество сидячих мест,

- количество стоячих мест,

- дата производства,

- дата приобретения,

- дата последнего ТО,

- прочие данные (в виде текста произвольной длины).

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

Создайте индексы по гос. номеру и модели.

Определите ограничения целостности, поддерживающие следующие требования:

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

- дата последнего ТО не может быть раньше даты приобретения, а дата приобретения не может быть раньше даты производства,

- дата приобретения и дата последнего ТО определяются по умолчанию датой создания записи.

в) таблицу выездов, содержащую следующие данные:

- дата выезда,

- номер выезда,

- номер маршрута,

- гос. номер автобуса,

- смена,

- ФИО водителя.

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

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

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

Свяжите созданные таблицы, определив отношения:

а) таблица автобусов связана с таблицей выездов по полю «гос. номер»,

б) таблица маршрутов связана с таблицей выездов по полю «маршрут».

Определите ограничения ссылочной целостности, поддерживающие следующие требования:

- каждому выезду должен соответствовать какой-либо автобус,

- каждому выезду должен соответствовать какой-либо маршрут.

2.7.5. Проверка результатов работы.

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

2.7.6. Модификация БД

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

а) Организуйте справочную таблицу водителей, включающую следующие данные:

- табельный номер,

- ФИО,

- дата рождения.

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

б) Модифицируйте таблицу выездов:

- удалите столбец «ФИО водителя» и введите столбец «табельный номер»,

- задайте обязательность заполнения поля «табельный номер»,

в) Установите отношение между таблицами выездов и водителей и определите нужным образом правила поддержки.

2.7.7. Проверка результатов работы.

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

 

2.7.8. Результаты работы сдаются преподавателю в виде zip-файла, содержащего все входящие в проект файлы.

2.7.9 Дополнительное задание

Расширьте БД, введя в нее данные по техническому контролю состояния автобусов.

Добавленная информация должна содержать данные:

  •  о выполненных предвыездовых проверках автобусов (номер бланка тех. контроля, гос.номер, дата, время контроля, ФИО контролера, общее заключение – исправен или не исправен);
  •  о выявленных в результате контроля неисправностях (номер бланка тех. контроля, описание неисправности, дата устранения, кто устранил, кто проверил);

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


 

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

64514. Социальная психология как наука. Место социальной психологии в системе научного знания: взаимосвязь с философией, социологией, другими гуманитарными науками 33.5 KB
  Социология как система знаний не может развиваться и реализовывать свои функции не взаимодействуя с другими науками. То что социология занимает общее место среди общественных и гуманитарных наук не означает что она является философской наукой.
64515. Становление и развитие социальной психологии 30.5 KB
  Индивидуальные особенности человека и его социальное поведение и положение у Платона связано с тремя частями тела: головой умом развит у философов сердце мужество у воинов и живот телесные вожделения у ремесленников.
64516. Основные идеи милетской школы (Фалес, Анаксимандр, Анаксимен) и Гераклита 38 KB
  Первые в истории мысли научно-теоретического построения. Предсказал полное солнечное затмение в 585 г. до н.э, удачный урожай оливок. Первый понял, что затмение происходит из-за луны. Нилу мешают течь пассаты, дующие с моря.
64517. ПЕРИОДЫ ДЕТСКОГО ВОЗРАСТА. ПЕДИАТРИЯ 85.5 KB
  Это медицина периода роста формирования и развития человеческого организма который является наиболее ответственным в жизни человека. какие будут конечные результаты детства с какой степенью здоровья физических интеллектуальных возможностей...
64518. ОБМЕН ВЕЩЕСТВ И ЭНЕРГИИ 32.53 KB
  Рост и обновление клеток организма возможны только случае непрерывного поступления в организм кислорода и питательных веществ. Для непрерывного обновления организма для совершения человеком работы нужна энергия.
64520. ОБМЕН ВЕЩЕСТВ И ЭНЕРГИИ В КЛЕТКЕ 253.64 KB
  Энергетический обмен диссимиляция катаболизм совокупность реакций расщепления органических соединений сопровождающихся выделением энергии. Питание процесс потребления энергии и веществ.
64521. Основные этапы становления дипломатических школ 32.5 KB
  В Средневековье не мог существовать институт светского суверенитета дипломатия не имела в своем распоряжении постоянного дипломатического представительства послы в этой системе направлялись к другому правителю по конкретному случаю. Начался бурный расцвет светского права.
64522. Предмет и основные понятия информатики 15.4 KB
  Информатика это комплексная техническая наука которая систематизирует приемы создания сохранения воспроизведения обработки и передачи данных средствами вычислительной техники а также принципы функционирования этих средств и методы управления ними.