close

Вход

Забыли?

вход по аккаунту

?

ЛабРаб ЦелДан 1

код для вставкиСкачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет автоматики и вычислительной техники
Кафедра автоматики и телемеханики
А.Б.Кислицын
ОБЕСПЕЧЕНИЕ ЦЕЛОСТНОСТИ ДАННЫХ
Методические указания по выполнению лабораторной работы
Дисциплина "Информационная безопасность
и защита информации"
Специальность 071900
4 курс, дневное отделение
Киров 2005
Печатается по решению редакционно-издательского совета
Вятского государственного университета
УДК 004.056 К445
Рецензент: доктор технических наук, профессор,
заведующий кафедрой ЭВМ Д.А.Страбыкин
Кислицын А.Б. Обеспечение целостности данных:
Методические указания по выполнению лабораторной работы.-
Киров:Изд-во ВятГУ,2005.-11c.
Редактор Е.Г.Козвонина
Подп. в печать Усл.печ.л.
Бумага офсетная Печать копир Aficio 1022
Заказ № Тираж Бесплатно
Текст напечатан с оригинала-макета, представленного автором
610000, г.Киров, ул.Московская, 36
Оформление обложки, изготовление - ПРИП ВятГУ
(c) А.Б.Кислицын, 2005
(c) Вятский государственный университет, 2005
Обеспечение целостности данных БД предполагает задание и поддержку ограничений, налагаемых на значения вводимых и изменяемых данных. Соблюдение ограничений целостности поддерживает формальную достоверность данных и их взаимное соответствие.
При поддержке ограничений целостности на уровне СУБД задаваемые ограничения хранятся в БД, а их соблюдение автоматически обеспечивается средствами СУБД. В зависимости от способа описания данных ограничения целостности, хранимые в БД, задаются либо средствами языка SQL, либо специализированными средствами СУБД.
В данной лабораторной работе рассматриваются оба подхода к заданию ограничений целостности.
ЧАСТЬ 1. ПОДДЕРЖКА ЦЕЛОСТНОСТИ В VISUAL FOXPRO
Данная часть работы является ознакомительной и демонстрирует реализацию ограничений целостности специализированными средствами СУБД на примере системы Visual FoxPro. 1 Поработаем в FoxPro
Запустите Visual FoxPro из пускового меню Windows (пункт Пуск / Программы / Microsoft Visual FoxPro / Microsoft Visual FoxPro 5.0).
Создайте новый проект:
- из главного меню Visual FoxPro выберите пункт File / New;
- из открывшегося списка типов выберите тип Project и щелкните по кнопке New File;
- вызванном окне создания проекта создайте и откройте папку для работы, задайте имя проекта lab1 и скомандуйте "Сохранить".
В результате указанных действий появится окно Менеджера проекта. Здесь нам и предстоит трудиться.
2 Создадим простенький пример базы данных
Пусть БД состоит всего из двух таблиц: таблицы отделов и таблицы сотрудников.
Сначала создадим оболочку базы:
- в окне Менеджера проектов щелкните по вкладке Data;
- на открывшейся вкладке выберите в списке элемент Databases и нажмите кнопку New.
Перед нами снова окно создания. Зададим новой БД имя bdlab1 и сохраним ее в рабочей папке. Пустое окно созданной БД готово для заполнения.
Создадим теперь таблицу отделов:
- выбираем в главном меню пункт Database / New Table;
- в появившемся окне нажимаем кнопку New Table;
- в уже знакомом окне создания задаем имя таблицы otdely и сохраняем ее.
Мы добрались до окна конструктора таблицы. Здесь нас интересует (пока лишь) вкладка описания полей Fields. В первой строке табличного элемента зададим описание первого поля таблицы отделов:
- в столбце описания имени поля (Name) введите Nazvotd (название отдела);
- в столбце описания типа поля (Type) выберите из раскрывающегося списка Character (текстовый тип);
- в столбце описания размера поля задайте 20.
Аналогично опишите еще три поля таблицы отделов:
- поле количества сотрудников (имя Kolsotr, тип Integer);
- поле фонда зарплаты (имя Fondzarp, тип Integer);
- поле лимита зарплаты (имя Limit, тип Integer).
Обратите внимание - ширина поля для типа Integer фиксирована и устанавливается автоматически.
Итак, минимальные данные о таблице отделов введены. Зафиксируем этот факт, нажав кнопку OK для сохранения введенного описания. При закрытии окна конструктора таблицы появится запрос на ввод информации в только что созданную вами таблицу. Ответим отказом нажатием кнопки No и вернемся в окно базы данных. Но теперь здесь уже размещена таблица Otdely.
Теперь аналогичным образом создайте таблицу сотрудников Sotr с полями:
- ф.и.о. (имя Fio, тип Character, ширина 40);
- табельный номер (имя Tabnom, тип Integer);
- название отдела (имя Nazvotd, тип Character, ширина 20);
- должность (имя Dolz, тип Character, ширина 20);
- оклад (имя Oklad, тип Integer);
- дата рождения (имя Datr, тип Date);
- дата приема на работу (имя Datpr, тип Date);
- дата последней аттестации (имя Datat, тип Date)
и сохраните ее, также, не заполняя данными.
Итак, база данных создана, хотя следует заметить, что вы выполнили чисто техническую работу, так как состав БД был задан.
ВНИМАНИЕ: АДМИНИСТРАТОР БД ДОЛЖЕН ОПРЕДЕЛЯТЬ ИЛИ УЧАСТВОВАТЬ В ОПРЕДЕЛЕНИИ БД (НАБОР ТАБЛИЦ, СОСТАВ ТАБЛИЦ, ПАРАМЕТРЫ ПОЛЕЙ И Т.Д.). БОЛЕЕ ТОГО, С ТОЧКИ ЗРЕНИЯ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ ЖЕЛАТЕЛЬНО, ЧТОБЫ ФИЗИЧЕСКИ СОЗДАВАЛ И ИЗМЕНЯЛ СТРУКТУРУ БД ТОЛЬКО АДМИНИСТРАТОР ИЛИ СПЕЦИАЛЬНО УПОЛНОМОЧЕННЫЙ ДЛЯ ЭТОГО СОТРУДНИК.
3 Введем данные в БД
Чтобы открыть таблицу для ввода, просто щелкните дважды на ее изображении в окне базы данных.
Добавить новую запись в таблицу можно выбором из главного меню Visual FoxPro пункта Table / Append New Record. Для закрытия таблицы можно просто нажать Esc (но перед этим выполните переход из последнего модифицированного поля, чтобы не потерять его изменение). Для удаления записей выполните следующие действия:
- выберите из главного меню Visual FoxPro пункт Table / Toggle Deletion Mark для изменения пометки удаления текущей записи. Аналогичный результат можно получить щелчком мыши в столбце удаления, находящемся в левой части таблицы. Проставленная пометка удаления соответствует логическому удалению записи;
- выберите из главного меню Visual FoxPro пункт Table / Remove Deleted Records для физического удаления помеченных записей.
Приступим к заполнению БД информацией. Введите в таблицы отделов и сотрудников по нескольку заполненных записей. При этом вообразите себя малограмотным (или нерадивым) пользователем и постарайтесь наделать побольше логических ошибок (например, задав отрицательный оклад или дату рождения, большую даты приема на работу). Как вы убедитесь, система не обратит на шалости такого пользователя ни малейшего внимания.
Теперь возвращаемся в роль специалиста и начинаем бороться с ошибками.
4 Зададим ограничения целостности данных на уровне поля
Откройте таблицу сотрудников в окне конструктора таблицы. Для этого щелкните правой кнопкой мыши на изображении таблицы в окне БД и в открывшемся меню выберите Modify.
Зададим ограничения целостности для некоторых полей.
а) Оклад должен быть не меньше 600.
Выберите в списке полей поле oklad и задайте для него в поле Rule условие проверки целостности oklad>=600, в поле Message текст сообщения "Неверный оклад" (в кавычках). Кроме того, в поле Default Value укажите допустимую величину оклада, чтобы при добавлении новой пустой записи не генерировалась ошибка.
б) Фамилия должна обязательно присутствовать.
Выберите в списке полей поле фамилии. Заполните поля описания ограничения аналогично предыдущему, задав в поле Rule условие .NOT.empty(fio).
в) Табельный номер должен быть уникальным.
Для обеспечения проверки уникальности перейдите на вкладку Indexes и заполните в табличном элементе первую строку следующими данными.
Name: tabnom
Type: Primary
Expression: tabnom
Тем самым вы объявили табельный номер первичным ключом таблицы сотрудников, и СУБД будет строго следить за его уникальностью.
Теперь можно закрыть окно конструктора (кнопка OK) и, сбросив флажок применения ограничений к уже введенным данным, подтвердить принятие изменений.
Попробуйте вводить данные в контролируемые поля - неверные данные теперь будут отвергаться.
Сделаем следующий шаг по обеспечению целостности.
5 Зададим ограничения целостности данных на уровне таблицы
Зададим условие, обеспечивающее правильное соотношение дат рождения, приема и аттестации сотрудника. Задание условий по отдельным полям будет неудобно для пользователя (как вы думаете, почему?). Поэтому сформулируйте общее условие для набора полей и задайте его на вкладке Table в конструкторе таблицы, используя логическую связку AND.
Проверьте правильность ваших трудов, изменяя значения дат.
ВНИМАНИЕ: АДМИНИСТРАТОР БД ДОЛЖЕН ОПРЕДЕЛЯТЬ ИЛИ УЧАСТВОВАТЬ В ОПРЕДЕЛЕНИИ ОГРАНИЧЕНИЙ ЦЕЛОСТНОСТИ, КОНТРОЛИРУЮЩИХ ВВОД И МОДИФИКАЦИЮ ДАННЫХ В ПОЛЯХ И ЗАПИСЯХ. БОЛЕЕ ТОГО, С ТОЧКИ ЗРЕНИЯ ЦЕНТРАЛИЗАЦИИ УПРАВЛЕНИЯ И КОНТРОЛЯ ЖЕЛАТЕЛЬНО, ЧТОБЫ ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ, ХРАНЯЩИЕСЯ В БД, ЗАДАВАЛ И ИЗМЕНЯЛ ТОЛЬКО АДМИНИСТРАТОР ИЛИ СПЕЦИАЛЬНО УПОЛНОМОЧЕННЫЙ ДЛЯ ЭТОГО СОТРУДНИК.
Теперь пора установить и настроить связи между таблицами.
6 Задание ссылочной целостности
Объявите для таблицы отделов поле названия первичным ключом (вы это уже делали для табельного номера таблицы сотрудников). Схожим образом создайте для таблицы сотрудников индекс по полю названия отдела (нужно лишь вместо типа Primary выбрать Regular).
Теперь, находясь в окне БД, установите связь между таблицами. Для этого достаточно перетащить мышкой первичный индекс nazvotd таблицы отделов на индекс nazvotd таблицы сотрудников. Если данная махинация проделана успешно, то на экране появится графическое изображение связи.
Определим условия целостности для полученной связи.
Выберите в главном меню Visual FoxPro пункт Database / Edit Referential Integrity. Открывается окно задания условий целостности для всех имеющихся связей таблиц. На трех вкладках представлены допустимые варианты.
Для контроля допустимости изменения первичного ключа в главной записи можно выбрать (первая вкладка) следующие реакции:
- каскадное изменение внешнего ключа в подчиненной таблице,
- блокирование изменения первичного ключа при наличии подчиненных записей,
- игнорирование любых изменений первичного ключа подчиненной таблицей.
Аналогичные реакции имеются для удаления записей в главной таблице (вторая вкладка).
На изменение или добавление записей в подчиненной таблице (третья вкладка) имеются только две реакции:
- блокирование изменения при несоответствии главной таблице,
- игнорирование несоответствия с главной таблицей.
На начальный момент по всем трем вкладкам установлено игнорирование. Такое полное отсутствие контроля явно не годится, и положение следует исправить. Выберите подходящие, по вашему мнению, реакции, нажмите ОК и в открывающихся окнах подтвердите фиксацию изменений (при этом будет генерироваться программный код, обеспечивающий выбранные реакции).
Теперь ограничения ссылочной целостности заданы. Проверьте действие ограничений, открывая таблицы и выполняя изменение их содержимого. Система должна сообщать о попытках нарушения ограничений ссылочной целостности (несоответствие значений ключей) или выполнять изменения для поддержки целостности.
ВНИМАНИЕ: АДМИНИСТРАТОР БД ДОЛЖЕН ОПРЕДЕЛЯТЬ ИЛИ УЧАСТВОВАТЬ В ОПРЕДЕЛЕНИИ ССЫЛОЧНОЙ ЦЕЛОСТНОСТИ, КОНТРОЛИРУЮЩЕЙ СВЯЗАННОСТЬ ИНФОРМАЦИИ В РАЗНЫХ ТАБЛИЦАХ. БОЛЕЕ ТОГО, С ТОЧКИ ЗРЕНИЯ ЦЕНТРАЛИЗАЦИИ УПРАВЛЕНИЯ И КОНТРОЛЯ ЖЕЛАТЕЛЬНО, ЧТОБЫ ОГРАНИЧЕНИЯ ЦЕЛОСТНОСТИ, ХРАНЯЩИЕСЯ В БД, ЗАДАВАЛ И ИЗМЕНЯЛ ТОЛЬКО АДМИНИСТРАТОР ИЛИ СПЕЦИАЛЬНО УПОЛНОМОЧЕННЫЙ ДЛЯ ЭТОГО СОТРУДНИК.
Итак, вы установили связку информации, размещенной в двух таблицах. Но для обеспечения полного информационного соответствия между таблицами не всегда достаточно поддержки ссылочной целостности.
7 Задание триггеров
Обратите внимание, что в таблице отделов содержатся суммарные данные по сотрудникам (что, в общем-то, не является хорошим решением). При изменениях в таблице сотрудников суммарные данные нужно будет автоматически обновлять. Это можно сделать, задав код обновления в триггерах таблицы сотрудников.
Откройте таблицу сотрудников в окне конструктора таблицы и найдите триггеры на вкладке Table. Скорее всего, некоторые триггеры уже существуют, как видно из заполненности их окошек. Это СУБД автоматически запрограммировала выбранную вами поддержку ограничений ссылочной целостности (см. п.6).
К уже имеющемуся коду можно было бы дописать код расчета суммарных данных. Но за неимением времени оставим борьбу за суммарные данные на будущее.
7 Ограничения целостности и приложения
До сих пор вы общались с БД черед стандартный интерфейс СУБД, что для пользователя явно неудобно. Добавим интерфейс пользователя (приложение).
Демонстрационное приложение состоит всего из одной формы. Для включения ее в проект закройте окно БД и в окне Менеджера проекта выберите вкладку Documents. Выберите в списке позицию Forms и нажмите кнопку добавления (Add). В окне выбора добавляемого элемента установите тип файлов Form, в рабочей папке найдите файл zilab1.scx и нажмите ОК.
Теперь на вкладке Documents Менеджера проекта в группу Forms входит добавленная форма. Выберите ее и запустите на выполнение, нажав кнопку Run.
Как вы видите, демонстрационное приложение имеет весьма урезанные возможности. В частности, возможно только изменение данных. Но этих возможностей достаточно, чтобы проиллюстрировать рассматриваемую тему.
Попробуйте изменять данные, нарушая заданные вами ограничения - они по-прежнему в действии. И сколько бы приложений ни было создано - ваши ограничения будут действовать во всех. Это демонстрирует очевидный факт: ограничения, хранящиеся в БД, единообразно поддерживаются СУБД для всех приложений, обращающихся через СУБД к БД.
Но, кроме того, появились и новые средства контроля данных, реализованные в коде данного конкретного приложения.
а) Для редактирования списка сотрудников и их данных определена в явном виде транзакция, поддерживающая контроль правильности данных в наборе записей по сотрудникам.
Теперь в системе имеются примеры контроля отдельных полей, отдельных записей и таблиц в целом.
ВНИМАНИЕ: АДМИНИСТРАТОР СИСТЕМЫ ДОЛЖЕН ОПРЕДЕЛЯТЬ ИЛИ УЧАСТВОВАТЬ В ОПРЕДЕЛЕНИИ ТРАНЗАКЦИЙ
б) Реализованы проверки соответствия фонда зарплаты лимиту с выдачей аварийных и предупреждающих сообщений. Они дополняют ограничения, заданные на уровне БД.
ВНИМАНИЕ: АДМИНИСТРАТОР БД ИЛИ СИСТЕМЫ ДОЛЖЕН ОПРЕДЕЛЯТЬ ИЛИ УЧАСТВОВАТЬ В ОПРЕДЕЛЕНИИ СПОСОБА РЕАЛИЗАЦИИ ОГРАНИЧЕНИЙ: НА УРОВНЕ СУБД ИЛИ В ПРИЛОЖЕНИИ
в) Реализовано отложенное определение и проверка суммарных данных.
ВНИМАНИЕ: АДМИНИСТРАТОР БД ИЛИ СИСТЕМЫ ДОЛЖЕН ОПРЕДЕЛЯТЬ ИЛИ УЧАСТВОВАТЬ В ОПРЕДЕЛЕНИИ ВРЕМЕНИ РЕАЛИЗАЦИИ ОГРАНИЧЕНИЙ (НЕМЕДЛЕННАЯ ИЛИ ОТЛОЖЕННАЯ ПРОВЕРКА)
ЧАСТЬ 2. ПОДДЕРЖКА ЦЕЛОСТНОСТИ ДАННЫХ В INTERBASE
Итак, вы познакомились с возможностями поддержки целостности данных в системе Visual FoxPro, где задание ограничений целостности на уровне СУБД реализовано специфическими средствами.
Теперь рассмотрим реализацию контроля целостности в рамках универсального языка работы с данными на примере системы InterBase. Она использует версию языка SQL, включающего операторы определения данных с возможностями задания ограничений целостности.
Сравните стандартные SQL-операторы описания данных, рассмотренные на практических занятиях, с реализацией их в используемой версии InterBase и выполните самостоятельную часть лабораторной работы. Теперь Вы должны реализовать в среде InterBase базу данных со всеми ограничениями целостности, которые могут быть заданы при описании данных (т.е. без написания программного кода триггеров и хранимых процедур).
В качестве реализуемой БД возьмите рассмотренную ранее базу данных об отделах и сотрудниках, добавив к ней таблицу послужного списка сотрудников.
Данная таблица должна содержать информацию о предыдущих местах работы сотрудников: название организации, должность, даты приема и увольнения. Учтите, что связь со стороны дочерней таблицы между отделами и сотрудниками - необязательная (сотрудник не обязан быть приписан к конкретному отделу), а между сотрудниками и послужным списком - обязательная (данные должны относится к определенному сотруднику).
1. Сначала неплохо бы удостовериться, а запущен ли сервер?
Можно определить это, просмотрев иконки на панели задач. Другой вариант: выбираем из пускового меню Windows пункт Пуск / Программы / InterBase / InterBase Server. Сервер запустится, если он не был запущен, либо, если он уже запущен, то обругает, что тоже не смертельно.
2 Создание БД.
Запускаем утилиту интерактивного доступа к базам данных InterBase. Для этого выберите в пусковом меню Windows пункт Пуск / Программы / InterBase / InterBase Windows ISQL. В открывшемся окне утилиты будет проходить наша дальнейшая работа.
Выберите из меню File / Create Database и в окне создания БД задайте имя создаваемой базы со стандартным расширением .gdb (указав полный путь к рабочей папке) и идентификационные данные: имя администратора SYSDBA и пароль masterkey (просьба не менять пароль администратора).
Щелчок по OK и новая база создана. Можно заполнять ее разными объектами.
3 Создание таблиц БД
Создание таблиц выполняется вводом SQL-команд в верхнем окне утилиты интерактивного доступа (окне ввода). Результаты выполнения команд будут отображаться в нижнем окне (окне вывода).
Выполните создание таблиц БД командой create table, задавая, по возможности полно, рассмотренные ранее ограничения.
Если результат создания таблицы вам не понравился, то всегда можно внести изменения командой alter table или просто ликвидировать таблицу командой drop table и создать ее заново. В конце концов, таблицы получены, можно их заполнять.
4. Работа с данными таблицы
Итак, попробуем заполнить созданные вами таблицы. Для формирования данных используйте упрощенные команды:
- ввод новой записи
insert into < имя таблицы >
(<имя поля >, ... , < имя поля >)
values(<значение>, ..., < значение >) ;
Например,
insert into sotr(otdel,fio,dolz,oklad)
values("Отдел кадров","Иванова И.И.","Инспектор",1000);
- удаление записи
delete from < имя таблицы > where <условие>;
Например,
delete from sotr where otdel = "Отдел кадров";
- изменение записи
update < имя таблицы >
set <имя поля >=<значение>, ... ,<имя поля >=<значение>
where <условие>;
Например,
update sotr set otdel = "Кадры" where otdel= "Отдел кадров"
Для наблюдения за итогами деятельности выполняйте периодически команду выборки данных
select * from < имя таблицы >;
При вводе данных аналогично первой части работы пробуйте задать неверные данные для проверки работоспособности введенных ограничений. Если все работает, как полагается, то можно оформлять отчет.
Отчет по лабораторной работе должен содержать следующие результаты.
1. По первой части работы:
а) каталог проекта, содержащий все файлы проекта;
б) таблицу тестирования, содержащую три столбца:
- описание ограничения;
- данные, нарушающие ограничение;
- текст сообщения об ошибке.
Таблица должна содержать тестовые примеры для всех реализованных ограничений.
2. По второй части работы:
а) программный код создания БД с ограничениями целостности (текст скрипта);
б) таблицу тестирования, содержащую три столбца:
- SQL-текст ограничения;
- SQL-команда, нарушающая ограничение;
- текст сообщения об ошибке.
Таблица должна содержать тестовые примеры для всех реализованных ограничений.
11
Документ
Категория
Рефераты
Просмотров
38
Размер файла
88 Кб
Теги
лабраб, целдан
1/--страниц
Пожаловаться на содержимое документа