Второе ограничение более сложное. Его можно условно разделить на две части, со-
единенные логической операцией «ИЛИ». Первая часть говорит о том, что если са-
молет
еще не прилетел
(т. е. значение actual_arrival равно NULL), то фактическое вре-
мя вылета нас, образно говоря, не интересует. Самолет мог еще не вылететь или уже
вылететь. Но даже если он уже и вылетел, и значение атрибута actual_departure отлич-
но от NULL, то все равно сравнить его со значением атрибута actual_arrival, которое
пока еще равно NULL, невозможно. Речь идет о сравнении вида «
>
» или «
<
». Вто-
рая часть этого ограничения должна гарантировать, что если самолет
уже прилетел
,
то, во-первых, фактическое время вылета должно быть не равно NULL, а во-вторых,
фактическое время прилета должно быть больше фактического времени вылета.
И наконец, третье ограничение CHECK ограничивает множество допустимых значе-
ний атрибута status следующим списком:
– Scheduled — рейс доступен для бронирования (это происходит за месяц до плано-
вой даты вылета, а до этого запись о рейсе не существует в базе данных);
– On Time — рейс доступен для регистрации (за сутки до плановой даты вылета) и не
задержан;
– Delayed — рейс доступен для регистрации (за сутки до плановой даты вылета), но
задержан;
– Departed — самолет уже вылетел и находится в воздухе;
– Arrived — самолет прибыл в пункт назначения;
– Cancelled — рейс отменен.
Просмотреть описание таблицы в базе данных можно так:
Достарыңызбен бөлісу: