Базы данных - модели, разработка, реализация



         

Операторы DDL в языке SQL с заданием ограничений целостности - часть 6


  • CREATE TABLE EXEMPLAR
  • (
  • ID_EXEMPLAR int NOT NULL.
  • ISBN varchar(14) NOT NULL FOREIGN KEY references BOOKS(ISBN).
  • READERJD Small int (4) NULL FOREIGN KEY references READERS (READERJD).
  • DATA_IN date.
  • DATA_OUT date.
  • EXIST Logical.
  • PRIMARY KEY (IDJXEMPLAR. ISBN)
  • );
  • Мы видим, что один и тот же атрибут ISBN, с одной стороны, является внешним ключом (FORIGN KEY), а с другой стороны, является частью первичного ключа (PRIMARY KEY). И ограничение типа первичный ключ (PRIMARY KEY) задается не на уровне одного атрибута, а на уровне всей таблицы, потому что оно содержит набор атрибутов.

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

  • CREATE TABLE BOOKS
  • (
  • ISBN varchar(14) NOT NULL PRIMARY KEY.
  • TITLE varchar(120) NOT NULL.
  • AUTOR varchar (30) NULL.
  • COAUTOR varchar(30) NULL.
  • YEAR_PUBL small int DEFAULT Year(GetDate( )) CHECK(YEAR_PUBL >= I960 AND
  • YEAR_PUBL
  • PUBLICH varchar(20) NULL.
  • PAGES smallint CHECK(PAGES >= 5 AND PAGES
  • CHECK (NOT (AUTOR IS NULL AND COAUTOR IS NOT NULL))
  • );
  • Для анализа ошибок целесообразно именовать все ограничения, особенно если таблица содержит несколько ограничений одного типа. Для именования ограничений используется ключевое слово CONSTRAINT, после которого следует уникальное

    145

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


    Содержание  Назад  Вперед