Главная страница

Пр 1. Министерство энергетики, промышленности и связи ставропольского края


Скачать 125.89 Kb.
НазваниеМинистерство энергетики, промышленности и связи ставропольского края
Дата17.02.2023
Размер125.89 Kb.
Формат файлаdocx
Имя файлаПр 1.docx
ТипМетодические указания
#941607
страница4 из 6
1   2   3   4   5   6

Практическая работа №4


Тема: «Создание БД и ее объектов средствами СУБД Visual FoxPro»

Цель: научиться создавать базы данных и таблицы посредством MicrosoftVisualFoxPro; освоить создание таблиц с использованием конструктора таблиц; изучить типы данных VisualFoxPro; научиться создавать первичные ключи и индексы; для контроля правильности ввода данных научиться добавлять условия на значение поля и значение записи; освоить создание связей между таблицами; научиться создавать хранимую процедуру и программными средствами обеспечивать ссылочную целостность данных.

Задание:

  1. Изучите «Пояснения к работе» и «Исходные данные к работе».

  2. На основе приведенных запросов постройте концептуальную модель и разработайте логическую модель БД.

  3. Внимательно изучите пункты 5-8 задания. Разработайте физическую структуру базы данных

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

  1. Создайте свой каталог, в который будут помещены создаваемая Вами база данных и программные модули.

  2. Создайте базу данных СТИПЕНДИЯ.

  3. Создайте таблицу СТУДЕНТ с помощью Конструктора таблиц.

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

Заголовок поля на русском языке - Caption - задайте для всех полей.

Формат, при котором незначащие нули заменяются пробелами, задайте для числовых полей. Для этого в окно ввода Format введите @zz....zzz (количество знаков соответствует разрядности числа).

Задайте бизнес - правила для полей (ограничения целостности):

Для поля ОЦЕНКА - условие (Rule) ОЦЕНКА<=5, выводимое в случае ошибки сообщение (Message) - ‘Оценка не верна’, значение по умолчанию - 0. При просмотре с помощью Browse попробуйте добавить новую запись, нажав Ctrl-Y. При этом в поле ОЦЕНКА автоматически будет записано значение по умолчанию. Попробуйте ввести в поле ОЦЕНКА значение 6, должно появиться сообщение об ошибке.

Для поля СТИПЕНДИЯ задайте условие(Яи1е) СТИПЕНДИЯ<=800, выводимое в случае ошибки сообщение (Message) - 'Стипендия превышена’, значение по умолчанию 0. При просмотре с помощью Browse попробуйте добавить новую запись, нажав Ctrl-Y. При этом в поле СТИПЕНДИЯ автоматически будет записано значение по умолчанию. Попробуйте ввести в поле значение 1000, должно появиться сообщение об ошибке.

Для поля № ТАБ (первичный ключ) задайте условие(Яи1е) № ТАБ >=0, и выводимое в случае ошибки сообщение (Message).

Перейдите на вкладку INDEXES и задайте индексы для таблицы:

Индекс по имени (Name) NT типа (Туре) первичный (Primary) по выражению №ТАБ и без фильтра.

Индекс по имени (Name) F типа (Туре) вторичный (Regular) по выражению ФИО и без фильтра.

Индекс по имени (Name) G типа (Туре) вторичный (Regular) по выражению №ГРУППЫ (внешний ключ) без фильтра.

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

В окне ввода Rule введите УДЕРЖАНИЯ<=СТИПЕНДИЯ и сообщение (Message) ‘Удержания больше допустимого’.

  1. Выполните аналогичные действия для таблицы ГРУППА. Задайте первичный индекс по полю Ns ГРУППЫ, которое является также и внешним ключом.

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

  3. При создании базы данных было установлено ограничение целостности для таблицы СТУДЕНТ: поле № ТАБ должно быть больше 0, поэтому при попытке добавить запись в таблицу путем выполнения команды Append blank (добавить пустую запись) или нажатием Ctrl-Y при просмотре таблицы будет выдано сообщение об ошибке. Такая же ситуация будет возникать и при добавлении записи в таблицу ГРУППА.

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

В меню Database выберите Edit Stored Procedure и в появившемся окне наберите команды:

FUNCTION NewRec && заголовок функции

LPARAMETERS tbName, klName && параметры «имя таблицы», «имя поля»

LOCAL х && переменная х

LOCAL ARRAY ха(1) && массив ха

ха(1)=0

SELECT MAX(&klName) FROM (tbName) INTO ARRAY xa

&& выбрать максимальное значение поля таблицы и записать в массив ха

х=ха( 1)+1 && новое значение поля

RETURN х

Закройте окно хранимых процедур.

  1. Для таблиц СТУДЕНТ и ГРУППА модифицируйте структуру (щелкните правой кнопкой мыши по таблице и выберите Modify). Для поля первичного ключа (вкладка FIELDS) введите в Default Value имя хранимой процедуры и ее параметры NewRec ("имя таблицы ", " имя поля ").

  2. При просмотре с помощью Browse попробуйте добавить новую запись, нажав Ctrl-Y. При этом в поле № ТАБ автоматически будет записано значение новое значение ключа.

  3. Введите несколько записей в таблицы ГРУППА и СТУДЕНТ

  4. Выберите в контекстном меню EditReferentialIntegrity и установите для таблиц ГРУППА - СТИПЕНДИЯ следующие правила:

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

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

При добавлении записей и в том и в другом случае установите Ignore - разрешить добавление.

  1. Проверьте работу правил, установленных в п.14.

  2. Оформите отчет

  • Тема.

  • Цель.

  • Концептуальная модель предметной области.

  • Логическая модель БД.

  • Физическая структура БД.


Ход работы:

Создание базы данных

В главном меню Visual FoxPro щелкните пункт File и выберите команду New. В открывшемся окне щелкните радиокнопку Database и нажмите кнопку Newfile. На экране дисплея появится окно Create. Перейдите в папку DBF, в которой мы будем хранить данные, задайте имя базы данных. Нажмите кнопку Сохранить.

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

Существует несколько способов создания таблиц в Microsoft Visual FoxPro:

  • с помощью мастера таблиц;

  • с использованием конструктора таблиц;

  • путем импорта данных из внешнего файла в текущую базу данных;

  • создание их в текущей базе данных, связанных с таблицами внешнего файла.

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

В главном меню Visual FoxPro выберите пункт Database. В появившемся подменю выберите пункт Newtable. Появится окно New table, позволяющее выбрать запуск мастера таблиц или конструктора таблиц. Щелкните в нем по кнопке Newtable. Произойдет запуск конструктора таблицы.

Окно конструктора таблицы содержит три вкладки:

  • Fields (Поля) - поля создаваемой таблицы и условия достоверности вводимых данных на уровне поля;

  • Indexes (Индексы) - индексы создаваемой таблицы;

  • Table (Таблица) - условия достоверности вводимых данных на уровне записи, а также триггеров добавления, удаления и модификации.

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

Имена полей должны содержать не более 255 символов и могут включать любые комбинации символов за исключением точки, восклицательного знака и квадратных скобок. Используйте в именах полей только латинские буквы при общей длине имени до 10 символов включительно. В этом случае у Вас не будет проблем с конвертацией таблиц Microsoft Visual FoxPro в таблицы других СУБД (например, Microsoft SQL Server).

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

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

Format (Формат) - задает формат отображения данных в окне Browse, отчетах и формах. Inputmask (Маска ввода) - задает шаблон для ввода данных.

Caption (Заголовок) - определяет заголовок поля.

Rule (Условие) - проверка правильности ввода данных на уровне поля создаваемой таблицы. Message (Сообщение) - текст, сообщения, которое появится на экране дисплея при неправильном вводе данных в поле.

Defaultvalue (Значение по умолчанию) - значение, вводимое в поле по умолчанию.

Displaylibrary (Показать библиотеку) - определяет имя файла библиотеки классов.

Displayclass (Показать класс) - определяет имя класса из выбранной библиотеки классов. NextValue (Начальное значение) - задает начальное значение счетчика. Доступно только для поля Integerlnc.

Step (Шаг) - приращение счетчика. Доступно только для поля Integerlnc.

Таблица 1 -Типы данных Visual FoxPro

Вид данных

Тип данных

Описание

Текстовый

Character

Текст или числа, не требующие проведения расчетов. Максимальная длина - 255 символов. По умолчанию длина текстового поля устанавливается равной 10 символов

Character (binary)

Аналогичен Character. Используется в том случае, если не требуется учитывать кодовую страницу

Varchar

Аналогичен Character. Для этого типа не происходит заполнение свободных мест незначащей информацией

Varbinarv

Шестнадцатеричные значения

Дата и время

Datetime

Любая дата от 01.01.0001 до 31.12.9999 и время от 00.00.00 а.ш. до 11.59.59 р.т.

Дата

Date

Любая дата от 01.01.0001 до 31.12.9999

Денежный

Currency

Позволяет выполнять расчеты с точностью до 15 знаков в целой и до 4 знаков в дробной части

Логический

Logical

Содержит значение True (.Т.) или False (.F.) Истина или ложь

Числовой

Integer

Целые числа от -2147483647 до 2147483648

Integer (Autolnc)

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

Numeric

Десятичные данные с фиксированной точкой

Float

Десятичные данные с плавающей точкой простой точности

Double

Десятичные данные с плавающей точкой высокой точности

Двоичное поле произвольной длины

General

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

Текстовое поле произвольной длины

Мемо

Поля типа MEMO предназначены для хранения больших текстовых данных. Длина поля может достигать 64 Кб. Поле не может быть ключевым или индексированным

Двоичный

Blob

Двоичные символы

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

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

Простой первичный ключ - это индекс, созданный по ключевому полю таблицы (Тип Visual FoxPro - Primary).

Составной первичный ключ - это индекс, созданный по ключевой связке полей таблицы (Тип Visual FoxPro также - Primary).

Первичный ключ у любой таблицы может быть только один. Этого требует теория нормализации. Кроме первичного ключа таблица может иметь любое количество обычных индексов (Тип Visual FoxPro - Regular). Среди них могут быть и уникальные, не допускающие повторяющихся значений - индексы-кандидаты на роль первичного ключа (Тип Visual FoxPro Candidate).

Контроль правильности ввода данных

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

Разработчик программного комплекса просто обязан помочь пользователю избежать большинства ошибок при вводе информации.

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

  • запустить построитель выражений для ячейки Rule,;

  • набрать на клавиатуре условие;

  • запустите построитель выражений для ячейки Message,

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

    • открыть таблицу в режиме конструктора;

    • перейти на вкладку Table;

    • запустить построитель выражений для ячейки Rule, нажав на селекторную кнопку и набрав условие;

    • запустить построитель выражений для ячейки Message, нажав на селекторную кнопку;

    • набрать на клавиатуре сообщение и щелкнуть по кнопке ОК;

    • закрыть окно конструктора таблицы.

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

Связи между таблицами назначают и просматривают в окне базы. Открыть его можно следующим образом. В главном меню Visual FoxPro щелкните пункт File и выберите команду Орел. В открывшемся окне в ячейке Тип файлов выберите пункт Database (*.dbc). Перейдите в папку DBF. Выберите нашу базу данных. Обязательно поставьте флажок в ячейке Openexclusive. Если этого не сделать, то вам будут доступны не все опции по работе с базой данных.

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

Установим связь между таблицами District (главная) и Building (подчиненная). Поместите указатель мыши на первичный ключ главной таблицы District. Нажмите левую кнопку мыши и, не отпуская ее, «перетащите» появившийся символ перечеркнутой окружности на обычный индекс District таблицы Building Значок перечеркнутой окружности превратится в маленький прямоугольник с надписью внутри. Отпустите левую кнопку мыши. Связь установлена. Имейте ввиду, что попытка проделать эти действия, начиная с подчиненной таблицы Building, закончится неудачей. Значок перечеркнутой окружности никогда не превратится в прямоугольник с надписью.

Обеспечение ссылочной целостности данных

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

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

Откройте окно базы данных. В главном меню Visual FoxPro щелкните пункт File и выберите команду Open. В открывшемся окне в ячейке Тип файлов выберите пункт Database (*.dbc). Перейдите в папку DBF. Выберите базу данных. Обязательно поставьте флажок в ячейке Openexclusive. Щелкните по кнопке ОК. Появится окно базы данных. В главном меню Visual FoxPro выберите пункт Database, а в открывшемся подменю пункт EditReferentialIntegrity. Появится окно конструктора ссылочной целостности.

В нижней части конструктора перечислены все связи между таблицами (каждая на отдельной строке). В первых двух столбцах приводятся названия родительской и дочерней таблиц. В следующих трех - Update (Обновить), Delete (Удалить) и Insert (Вставить) - указаны правила соблюдения целостности. В начале работы все эти три столбца содержат элемент Ignore (Игнорировать). Однако вы можете сами определить правила поведения для каждой связи и выполняемого действия. Наконец, в последних двух столбцах определены родительский и дочерний индексы, участвующие в отношении.

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

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

  • Cascade (Последовательно выполнить). При выборе этой опции обновляются все «дочерние» записи в соответствии с новым значением ключа в родительской таблице, если у них совпадало старое значение «родительского» ключа.

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

  • Ignore (Игнорировать). При выборе этой опции система прекращает следить за соблюдением правил ссылочной целостности и разрешает обновление родительского ключа независимо от наличия связанных записей в дочерних таблицах.

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

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

  • Restrict. Запрещается вставка дочерней записи, если нет родительской записи с таким же значением ключа.

  • Ignore. Fie выполняется никаких проверок в целях сохранения ссылочной целостности, т.е. вставка заведомо разрешается.

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

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

После того как построитель ссылочной целостности завершит свою работу, можно открыть окно TableDesigner и выбрать в нем третью вкладку Table, чтобы просмотреть добавленные триггеры. В качестве альтернативного варианта можно просмотреть хранимые процедуры, щелкнув на кнопке EditStoredProcedure (Редактировать хранимую процедуру), расположенной на панели инструментов DatabaseDesigner в окне конструктора баз данных.

Исходные данные для практических работ.

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

Запросы пользователей.

1-ый запрос Расчетно-платежная ведомость по группе за (мес,год)

№ таб

ФИО

начисление

удержание

к выдаче

ПОДПИСЬ

1

Бармалеев С.С.

110.00

1.10

108.90




2

Годзилов Б.Б.

110.00

1.10

108.90





2-ой запрос Сводная ведомость за (мес, год)

группа

начислено

удержано

к выдаче

ЭВМ-41

1500

15

1485.00

ЭВМ-42

2000

20

1980.00

ИТОГО

3500

35

3465.00

3-й запрос - Список студентов определенной группы с указанием среднего балла

Контрольные вопросы и умения

  • Уметь выполнять рассмотренные действия по созданию БД и таблиц.

  • Знать теорию реляционных баз данных.


1   2   3   4   5   6


написать администратору сайта