Учебное пособие Санкт-Петербург «бхв-петербург»



Pdf көрінісі
бет73/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   69   70   71   72   73   74   75   76   ...   256
sql osnovi yazika

CREATE TABLE progress
( ...
term numeric( 1 ) CHECK ( term = 1 OR term = 2 ),
mark numeric( 1 ) CHECK ( mark >= 3 AND mark <= 5 ),
...
);
В данном случае можно и не давать этим ограничениям какие-либо специфические
имена, поскольку суть этих ограничений очевидна. Тем не менее, поскольку имена
ограничений используются в тех сообщениях, которые выводит СУБД при попытке
нарушения ограничений, все же можно придумать для них осмысленные имена, ко-
торые облегчат понимание причин появления сообщений об ошибках.
В качестве примера приведем ограничение на допустимые значения атрибута mark,
а оформим его как ограничение уровня таблицы:
CREATE TABLE progress
( ...
mark numeric( 1 ),
CONSTRAINT valid_mark CHECK ( mark >= 3 AND mark <= 5 ),
...
);
Следующим видом ограничений, который мы рассмотрим, будет ограничение NOT
NULL. Оно означает, что в столбце таблицы, на который наложено это ограничение,
должны обязательно присутствовать какие-либо определенные значения. При разра-
ботке баз данных, исходя из логики конкретной предметной области, зачастую требу-
ется использовать это ограничение. Как сказано в документации, оно функциональ-
но эквивалентно ограничению CHECK ( column_name IS NOT NULL) , но в PostgreSQL
создание явного ограничения NOT NULL является более эффективным подходом.
97


Глава 5. Основы языка определения данных
Еще один вид ограничений — это ограничение уникальности UNIQUE. Такое огра-
ничение, наложенное на конкретный столбец, означает, что все значения, содержа-
щиеся в этом столбце в различных строках таблицы, должны быть уникальными,
т. е. не должны повторяться. Ограничение уникальности может включать в себя и
несколько столбцов. В этом случае уникальной должна быть уже комбинация их зна-
чений.
Когда в ограничение уникальности включается только один столбец, то можно задать
ограничение непосредственно в определении столбца. Например, для таблицы «Сту-
денты» было бы логично потребовать, чтобы уникальными были значения столбца
record_book:


Достарыңызбен бөлісу:
1   ...   69   70   71   72   73   74   75   76   ...   256




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет