Учебно-практическое пособие москва 2017 ббк



Pdf көрінісі
бет68/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   64   65   66   67   68   69   70   71   ...   243
Байланысты:
Язык SQL. Базовый курс

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 ),
72


...
);
Следующим видом ограничений, который мы рассмотрим, будет
NOT NULL
. Оно
означает, что в столбце таблицы, на который наложено это ограничение, должны
обязательно присутствовать какие-либо определенные значения. При разработке баз
данных, исходя из логики конкретной предметной области, зачастую требуется ис-
пользовать это ограничение. Как сказано в документации, оно функционально экви-
валентно ограничению CHECK ( column_name IS NOT NULL ), но в PostgreSQL создание
явного ограничения NOT NULL является более эффективным подходом.
Еще один вид ограничений — это
ограничение уникальности
UNIQUE. Такое огра-
ничение, наложенное на конкретный столбец, означает, что все значения, содержа-
щиеся в этом столбце в различных строках таблицы, должны быть уникальными,
т. е. не должны повторяться. Ограничение уникальности может включать в себя и
несколько столбцов. В этом случае уникальной должна быть уже комбинация их зна-
чений.
Когда в ограничение уникальности включается только один столбец, то можно задать
ограничение непосредственно в определении столбца. Например, для таблицы «Сту-
денты» (students) было бы логично потребовать, чтобы уникальными были значения
столбца record_book:


Достарыңызбен бөлісу:
1   ...   64   65   66   67   68   69   70   71   ...   243




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

    Басты бет