Контрольные вопросы и задания
Не забудьте, что значения NULL для атрибутов test_form и mark не допуска-
ются.
Новое ограничение может быть таким:
ALTER TABLE progress
ADD CHECK (
( test_form = 'экзамен' AND mark IN ( 3, 4, 5 ) )
OR
( test_form = 'зачет' AND mark IN ( 0, 1 ) )
);
Проверьте, как будет работать новое ограничение в модифицированной таб-
лице progress. Для этого выполните команды INSERT, как удовлетворяющие
ограничению, так и нарушающие его.
В таблице уже было ограничение на допустимые значения атрибута mark. Как
вы думаете, не будет ли оно конфликтовать с новым ограничением? Проверьте
эту гипотезу. Если ограничения конфликтуют, тогда удалите старое ограниче-
ние и снова попробуйте добавить строки в таблицу.
Подумайте, какое еще ограничение уровня таблицы можно предложить для
этой таблицы?
3.* В определении таблицы «Успеваемость» (progress) на атрибуты term и mark
наложены как ограничения CHECK, так и ограничение NOT NULL. Возникает во-
прос: не является ли ограничение NOT NULL избыточным? Ведь в ограничении
CHECK явно указаны допустимые значения.
Проверьте гипотезу об избыточности ограничения NOT NULL в данном случае.
Для этого модифицируйте таблицу, убрав ограничение NOT NULL, и попробуйте
добавить в нее строку с отсутствующим значением атрибута term (или mark).
4. В определении таблицы «Успеваемость» (progress) для атрибута mark не толь-
ко задано ограничение CHECK, но и установлено значение по умолчанию с по-
мощью ключевого слова DEFAULT:
Достарыңызбен бөлісу: