42327

Ограничения целостности. SQL-операторы для работы с ограничениями

Лабораторная работа

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

Ограничения целостности Цель работы Изучить используемые в Firebird типы ограничений целостности. Изучить SQLоператоры для работы с ограничениями. Теоретические сведения Ограничения целостности данных представляют собой такие ограничения которые вводятся с целью предотвратить помещение в базу противоречивых данных. Ограничения внешнего ключа Foreign keys ссылочная целостность.

Русский

2013-10-29

124.5 KB

16 чел.

12     

  1.  Лабораторная работа №4. Ограничения целостности
    1.  Цель работы

Изучить используемые в Firebird типы ограничений целостности. Получить навыки использования программы "IBExpert" для создания, изменения и удаления ограничений. Изучить SQL-операторы для работы с ограничениями.

Время выполнения: 2 часа.

  1.  Исходные данные

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

  1.  Используемые программы

Все операции выполняются с помощью приложения "IBExpert". Отчет создается в редакторе "OpenOffice.pro".

  1.  Теоретические сведения

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

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

В Firebird для обеспечения целостности базы данных используется пять типов ограничений:

  1.  Обязательные данные (NOT NULL).
  2.  Ограничение первичного ключа (Primary key).
  3.  Требования данного предприятия.
  4.  Ограничения внешнего ключа (Foreign keys) — ссылочная целостность.
  5.  Ограничения атрибутов (Checks).

Все пять типов ограничений могут создаваться двумя способами:

  1.  На основе одного поля таблицы (одновременно при создании этого поля).
  2.  На основе нескольких полей (без одновременного создания поля).

Ограничения задаются либо при создании таблицы в операторе CREATE TABLE, либо добавляются позже в операторе ALTER TABLE.


Удалить ограничение можно в операторе ALTER TABLE.

Упрощенный синтаксис задания ограничений при создании поля приведен ниже (использование элемента <ограничение поля> поясняется в методических указаниях по выполнению предыдущей лабораторной работы).

<ограничение поля> = [CONSTRAINT Название_Ограничения]

 <описание ограничения поля> [<ограничение поля> ...]

<описание ограничения поля {

  PRIMARY KEY |

  UNIQUE |

  REFERENCES Другая_Таблица[(Поле [, Поле ...])] |

  CHECK (Проверяемое_Условие)

}

Упрощенный синтаксис задания ограничений на основе нескольких полей таблицы или без одновременного создания поля имеет следующий вид (способ использования описываемого элемента <ограничение> приведен в методических указаниях по выполнению предыдущей лабораторной работы):

<ограничение> = [CONSTRAINT Имя_Ограничения]

  <описание ограничения> [<ограничение> ...]

<Описание ограничения> = {

   {PRIMARY KEY | UNIQUE} (Поле [, Поле ...]) |

   CHECK (Проверяемое_Условие) |

   FOREIGN KEY (Поле [, Поле ...])

       REFERENCES Другая_Таблица[(Поле [, Поле ...])]

   [ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

   [ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]   

}

Как видно из синтаксиса задания ограничений, каждое ограничение может иметь имя, записываемое после ключевого слова CONSTRAINT. Все ограничения в базе данных должны иметь уникальные имена. Если при задании ограничения не задать его имени, то оно будет назначено сервером СУБД автоматически. При выполнении лабораторных работ необходимо каждому ограничению обязательно давать имя.

  1.  Ограничение первичного ключа (Primary key)

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

Первичные ключи выполняют следующие функции:


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

Первичные ключи необходимо создавать для всех таблиц. Первичный ключ таблицы может быть составным (состоящим из нескольких полей). Все поля первичного ключа должны быть объявлены NOT NULL.

Пример задания ограничения первичного ключа с помощью добавления в таблицу ограничения (ADD CONSTRAINT):

ALTER TABLE Customer

  ADD CONSTRAINT PK_Customer PRIMARY KEY (Cust_No);

  1.  Ограничения уникальности (Unique)

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

Пример задания ограничения уникальности:

ALTER TABLE Employee ADD CONSTRAINT Unique_Phone UNIQUE (Phone);

  1.  Ограничения внешнего ключа (Foreign keys) 

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

Ограничение внешнего ключа означает, что данное поле соответствует первичному ключу в таблице "Другая_Таблица" и в этой таблице имеется строка с указанным значением. Дополнительные режимы ON DELETE и ON UPDATE задают действия, производимые при удалении или изменении ключевых полей в родительской (здесь "Другая_Таблица") таблице.

Возможны следующие варианты:

NO ACTION – нет действий (принимается по умолчанию).

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

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


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

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

Пример задания ограничения внешнего ключа:

ALTER TABLE Book ADD CONSTRAINT FK_Book

  FOREIGN KEY (B_PubNo) REFERENCES Publisher (B_NO)

ON DELETE SET NULL

ON UPDATE CASCADE;

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

  1.  Ограничения атрибутов (Checks)

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

Для столбца может быть задана только одна проверка Check.

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

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

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

Пример ограничения атрибутов, которое гарантирует, что поле "Num" будет иметь значение от 0 до 4:

ALTER TABLE Property

   ADD CONSTRAINT

     Check_Invalid_Number CHECK (Num >= 0 AND Num <= 4);

Ограничения атрибутов реализованы при помощи системных триггеров.

  1.  Порядок выполнения работы

Лабораторную работу следует выполнять в следующем порядке:


  1.  Создать на сервере sqledu02 (или на локальном компьютере) рабочую папку для хранения файлов, получаемых при выполнении лабораторной работы №4. Эта папка должна быть рядом с папками для предыдущих лабораторных работ и называться "ЛР4". Пример правильного названия рабочей папки при выполнении лабораторной работы №4: "sqledu02:\D:\Data\ЛР4".
  2.  Открыть окно "Редактор скриптов" в приложении "IBExpert".
  3.  Используя кнопку   [Загрузить из файла] на панели инструментов, открыть диалоговое окно "Open SQL File" и с его помощью открыть файл сценария,  созданный при выполнении лабораторной работы №3.
  4.  Используя кнопку [Save as] на панели инструментов, сохранить загруженный сценарий в папке "sqledu02:\D:\Data\ЛР4".
  5.  Изменить соответствующим образом в сценарии текст комментариев и сделать так, чтобы база данных теперь создавалась в папке "ЛР4".
  6.  Добавить в операторы создания таблиц создание ограничений четырех видов (ограничения первичного ключа создавались в предыдущей лабораторной работе). С помощью ограничений внешнего ключа должны быть заданы имеющиеся связи между таблицами и в случае необходимости (слабая сущность) изменить первичный ключ таблицы, включив в него поле созданного внешнего ключа..
  7.  Выполнить сценарий и сохранить его в папке "ЛР4".
  8.  Зарегистрировать созданную базу данных в программе "IBExpert" и подключиться к ней.
  9.  Создать в своей базе данных таблицу в диалоговом режиме. Она должна называться "TestConstraints" и содержать десять полей разных типов с произвольными именами.
  10.  Добавить в диалоговом режиме к этой таблице по одному ограничению каждого типа. Скопировать в отчет сценарий создания этой таблицы, который сгенерирует "IBExpert".
  11.  Создать в папке "ЛР4" резервную копию базы данных.
  12.  Создать и сохранить в папке "ЛР4" файл с отчетом о выполнении лабораторной работы №4, который должен называться "Отчет4-xx.odt", где xx — это номер варианта задания.   
    1.  Варианты заданий

Вариант задания (Таблица 1) выбирается по формуле (N mod 24)+1, где N – последние две цифры зачетной книжки студента.

Таблица : Варианты заданий к лабораторной работе №4

№ варианта

Имя пользователя

Имя файла БД

1

TEAM001

SALARY.FDB

2

TEAM002

STUFF.FDB


3

TEAM003

STUFFPLUS.FDB

4

TEAM004

TELEPHONE.FDB

5

TEAM005

TOOLS.FDB

6

TEAM006

EXAMIN.FDB

7

TEAM007

LIBRARY.FDB

8

TEAM008

AVIA.FDB

9

TEAM009

SHOP.FDB

10

TEAM010

HCOMMAND.FDB

11

TEAM011

STUDENT.FDB

12

TEAM012

SERVIS.FDB

13

TEAM013

REGION.FDB

14

TEAM014

OPTSHOP.FDB

15

TEAM015

OPTLEKI.FDB

16

TEAM016

SPORTSMEN.FDB

17

TEAM017

DANCING.FDB

18

TEAM018

BIRTHDOM.FDB

19

TEAM019

TENNIS.FDB

20

TEAM020

CURSES.FDB

21

TEAM021

TEACHER.FDB

22

TEAM022

HOSPITAL.FDB

23

TEAM023

SOLDAT.FDB

24

TEAM024

YUSHOP.FDB

  1.     Ход работы 

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

Для создания ограничений с помощью программы "IBExpert" в диалоговом режиме необходимо выполнить следующие действия:

  1.  Подключиться к базе данных.
  2.  Открыть окно с таблицей, в которую будут добавляться ограничения.
  3.  Перейти на вкладку "Ограничения". На этой вкладке имеется четыре дополнительных вкладки для просмотра и редактирования ограничений четырех типов (Рис. 1).


  1.  Чтобы создать новое ограничение надо перейти на нужную вкладку и на-жать клавишу [Insert]. В результате в сетку с перечнем имеющихся ограничений будет добавлена строка с новым ограничением.
  2.  После задания желаемых значений в новой строке необходимо нажать кнопку [Компиляция] (Ctrl+F9), которая приведет к автоматическому созданию оператора ограничения и его выполнению. На рис. 2 показан результат создания первичного ключа для таблицы "TESTDIALOG".

  1.  


  1.  Отчет о выполнении работы

Отчет о выполнении лабораторной работы №4 необходимо оформить на листах формата A4. Для создания отчета следует использовать шаблон отчета для соответствующей лабораторной работы, который необходимо открыть с помощью приложения OpenOffice.

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

  1.  Цель работы.
  2.  Краткое описание предметной области в соответствии с вариантом.
  3.  Данные о версии СУБД, использованной в лабораторной работе.
  4.  Перечисление всех использованных при выполнении лабораторной работы команд главного меню приложения "IBExpert" с краткими пояснениями выполняемых действий.
  5.  Перечень файлов, полученных при выполнении лабораторной работы с указанием их имен, места расположения, даты изменения и размеров (сценарий, база данных, резервная копия базы данных, файл с отчетом).
  6.  Письменные ответы на контрольные вопросы.
  7.  Выводы.
  8.  Распечатку сценария создания базы данных с комментариями, которые должны содержать сведения об авторе, дате создания, всех выполняемых действиях и пояснения к ограничениям целостности.

  1.  Контрольные вопросы
  2.  Дать определение термина "Ограничение целостности".
  3.  Какие существуют варианты операторов создания ограничений?
  4.  Какие особенности имеют поля, входящие в первичный ключ и ограничение уникальности?
  5.  Какие функции имеет ограничение первичного ключа?
  6.  Что такое внешний ключ?
  7.  Зачем в полях внешнего ключа могут разрешаться пустые значения?
  8.  Что такое ограничение атрибутов?
  9.  При помощи чего реализованы ограничения атрибутов?
  10.  Какие имена получают ограничения первичного ключа, если их не задать в явном виде? Какие имена при этом будут иметь автоматически создаваемые индексы?
  11.  Какие имена получают ограничения уникальности, если их не задать в явном виде? Какие имена при этом будут иметь автоматически создаваемые индексы?


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


 

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

23654. Разработка графического интерфейса и базы данных каскадной системы регулирования температуры, расхода и концентрации в процессе ректификации стирола 3.53 MB
  Листинг программы unit Unit1; interface uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs Grids ComCtrls ExtCtrls DBCtrls DBGrids StdCtrls Buttons DB DBTables ImgList ToolWin Mask TeEngine Series TeeProcs Chart DbChart Animate GIFCtrl; type TForm1 = classTForm PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet3: TTabSheet; PageControl2: TPageControl; TabSheet5: TTabSheet; DBNavigator1: TDBNavigator; DBGrid1: TDBGrid; BitBtn1: TBitBtn;...
23655. Управление качеством электронных средств 423 KB
  Непрерывной случайной величиной СВ называется величина которая при испытании может принять любое значение из заданного диапазона. Любое распределение характеризуется определенными характеристиками важнейшими из которых являются среднее значение и дисперсия. Несмещенной является оценка среднее значение которой совпадает со средним значением генерал ной совокупности. Здесь оценка истинное значение характеристики оператор усреднения.
23656. Семантические сети 170 KB
  Семантические сети Семантической сетью является структура данных имеющая определенный смысл как сеть. Стандартного определения семантической сети не существует но обычно под ней подразумевают следующее: Семантическая сеть это система знаний имеющая определенный смысл в виде целостного образа сети узлы которой соответствуют понятиям и объектам а дуги отношениям между объектами. Следовательно всевозможные сети можно рассматривать как сети входящие в состав семантической сети. Поэтому в контексте знакомства с СОЗ семантические сети...
23657. Продукционные модели. ЕСЛИ - ТО (явление - реакция) 166 KB
  Эти две отличительные черты и определили широкое распространение методов представления знаний правилами. Программные средства оперирующие со знаниями представленными правилами получили название продукционных систем или систем продукции и впервые были предложены Постом в 1941 году. Общим для систем продукции является то что они состоят из трех элементов: Набор правил используемых как БЗ его еще называют базой правил; Рабочая память где хранятся предпосылки касающиеся отдельных задач а также результаты выводов получаемых на основе...
23658. Представление знаний с применением фреймов 143.5 KB
  Понятие фрейма и слота В сложных семантических сетях включающих множество понятий процесс обновления узлов и контроль связей между ними становится затруднительным. В каждом узле понятия определяются набором атрибутов и их значениями которые содержатся в слотах фрейма. Слот это атрибут связанный с узлом в системе основанной на фреймах. Слот является составляющей фрейма.
23659. Стратегии поиска в СОЗ 105.5 KB
  7 Начальныесостояния Цель конечные состояния Реализует возможность выбора Выполняет шаги от начального состояния к новым более близким к цели Исходные посылки и факты Поиск Стратегия поиска B A C C A B A B C A B C C B A B C A B A C C A B A B C C A B B A C A B C A C B 8. Стратегии поиска в СОЗ 8. Поиск в СОЗ Причем поиск конечного состояния выполняется автоматически на основе реализованной в СОЗ стратегии поиска которая: реализует возможность выбора; позволяет выполнять шаги от начального...
23660. Нечеткие множества в системах основанных на знаниях 462.5 KB
  Для ее решения вводится два показателя: П АiФ = sup min фu Aiu это возможность что нечеткое множество Ф принадлежит значению Аi атрибута Ã. Рассмотрим геометрическую интерпретацию определения ПА1Ф: min фu A1u представляет собой треугольник SQR т. sup min фu A1u это точка Q т. Тогда ПА1Ф = min {max 0 min 1 1 m1 m2 1 2 max 0 min 1 1 m2 m1 2 1 }.
23661. Основы построения систем основанных на знаниях (Соз) 68 KB
  Предположим нас интересует что имеет Иван: Запрос: имеет иван Вещь Ответ: Вещь = машина Если мы заполним базу еще рядом фактов имеет петр руб.500 имеет петр телевизор цена видео 4200 цена приемник 20 цена часы 70 тогда на аналогичный запрос но только относительно Петра мы получим ответ: Запрос: имеет петр Вещь Ответ: Вещь = часы Вещь = руб 500 Вещь = телевизор Заметим что имя петр мы вводим со строчной буквы так как это атом; а Вещь является переменной и записывается с заглавной буквы. Чтобы не...
23662. Экспертные системы. Назначения ЭС и основные требования к ним 78 KB
  Экспертные системы Система основанная на знаниях система программного обеспечения основными структурными элементами которой являются базы знаний и механизм логических выводов. Основными требованиями к ЭС являются: использование знаний связанно с конкретной предметной областью; приобретение знаний от эксперта; определение реальной и достаточно сложной задачи; наделение системы способностями эксперта. которые обладают общими качествами: имеют огромный багаж знаний о конкретной предметной области; имеют большой опыт работы в этой...