Мартин грубер понимание sql перевод Лебедева В. Н. Под редакцией Булычева В. Н. Москва, 1993 martin gruber


CREATE TABLE Salespeople ( Snum integer NOT NULL UNIQUE, Sname char (10) NOT NULL UNIQUE, city char (10), comm decimal )


Download 1.45 Mb.
bet89/172
Sana26.01.2023
Hajmi1.45 Mb.
#1128343
1   ...   85   86   87   88   89   90   91   92   ...   172
Bog'liq
Грубер. Понимание SQL

CREATE TABLE Salespeople
( Snum integer NOT NULL UNIQUE,
Sname char (10) NOT NULL UNIQUE,
city char (10),
comm decimal );

Когда вы обьявляете поле sname уникальным, убедитесь, что две Mary Smith будут введены различными способами — например, Mary Smith и M. Smith. В то же время это не так уж необходимо с функциональной точки зрения — потому что поле snum в качестве первичного ключа, все равно обеспечит отличие этих двух строк — что проще для людей, использующих данные в таблицах, чем помнить что эти Smith не идентичны.
Столбцы (не первичные ключи) чьи значения требуют уникальности, называются ключами-кандидатами или уникальными ключами.
УНИКАЛЬНОСТЬ КАК ОГРАНИЧЕНИЕ ТАБЛИЦЫ
Вы можете также определить группу полей как уникальную с помощью команды ограничения таблицы — UNIQUE. Объявление группы полей уникальной, отличается от объявления уникальными индивидуальных полей, так как это комбинация значений, а не просто индивидуальное значение, которое обязано быть уникальным.
Уникальность группы — это представление порядка, так что бы пары строк со значениями столбцов "a", "b" и "b", "a" рассматривались отдельно одна от другой.
Наша база данных сделана так, чтобы каждый заказчик был назначен одному и только одному продавцу. Это означает, что каждая комбинация номера заказчика (cnum) и номера продавца (snum) в таблице Заказчиков должна быть уникальной. Вы можете убедиться в этом, создав таблицу Заказчиков таким способом:
CREATE TABLE Customers
( cnum integer NOT NULL,
cname char (10) NOT NULL,
city char (10),
rating integer,
snum integer NOT NULL,
UNIQUE (cnum, snum));

Обратите внимание что оба поля в ограничении таблицы UNIQUE все еще используют ограничение столбца — NOT NULL. Если бы мы использовали ограничение столбца UNIQUE для поля cnum, такое ограничение таблицы было бы необязательным.
Если значения поля cnum различно для каждой строки, то не может быть двух строк с идентичной комбинацией значений полей cnum и snum. То же самое получится если мы обьявим поле snum уникальным, хотя это и не будет соответствовать нашему примеру, так как продавец будет назначен многочисленым заказчикам. Следовательно, ограничение таблицы — UNIQUE, наиболее полезно когда вы не хотите заставлять индивидуальные поля быть уникальными.
Предположим, например, что мы разработали таблицу чтобы следить за всеми порядками каждый день для каждого продавца. Каждая строка такой таблицы представляет сумму чисел любых порядков, а не просто индивидуальный порядок. В этом случае, мы могли бы устранить некоторые возможные ошибки убедившись что на каждый день имеется не более чем одна строка для данного продавца, или что каждая комбинация полей snum и odate является уникальной. Вот как например мы могли бы создать таблицу с именем Salestotal:

Download 1.45 Mb.

Do'stlaringiz bilan baham:
1   ...   85   86   87   88   89   90   91   92   ...   172




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling