07 октября 2010

Разминка

Вопрос 1.

Что произойдет в результате выполнения скрипта:


CREATE TABLE A (
  a1 INT, a2 VARCHAR, a3 NUMERIC, UNIQUE (a1, a2))


CREATE TABLE B (
  b1 VARCHAR, b2 NUMERIC, b3 INT,
  FOREIGN KEY (b1, b2) REFERENCES A(a2,a3))


  1. Скрипт не выполнится, потому что внешний ключ не может быть составным
  2. Скрипт не выполнится, потому что ссылочные атрибуты не являются ключом
  3. Скрипт не выполнится, потому что имена ссылающихся и ссылочных атрибутов разные
  4. Скрипт выполнится без ошибок

Вопрос 2.

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


CREATE TABLE Goods_Supplier(
  goods_id INT FOREIGN KEY REFERECES Goods,
  supplier_id INT FOREIGN KEY REFERENCES Supplier,
  price NUMERIC (10, 2) CHECK (price >= 0))

  1. Да вроде всё на месте
  2. Ограничения UNIQUE для цены
  3. Ограничения UNIQUE для каждого из внешних ключей
  4. Ограничения UNIQUE для пары внешних ключей
  5. Ограничения UNIQUE для всей тройки атрибутов
Слайды