Требуется три ограничения на itemno
, а не три itemno
столбца:
create table requisition
( reqno varchar2(6) constraint reqno_pk primary key
, staffno references staff_chargenurse(staffno)
, staffname varchar2(20)
, wardno varchar2(6)
, itemno constraint fk_1 references supplies_pharmaceutical(itemno)
constraint fk_2 references supplies_surgical(itemno)
constraint fk_3 references supplies_nonsurgical(itemno)
, quantity int
, dateordered date
, daterecieved date );
Вы можете либо назвать ограничения, либо позволить системе сделать это.В приведенном выше примере FK на staffno
был назван SYS_C0018431
в моей базе данных.Случайные имена, подобные этому, могут создать дополнительную работу в дальнейшем.
Редактировать: только что заметил, что вы используете STAFFNAME
в этом примере, в этом случае (при условии, что три таблицы SUPPLIES_ имеют первичный или уникальный ключ на STAFFNAME
):
create table requisition
( reqno varchar2(6) constraint reqno_pk primary key
, staffno references staff_chargenurse(staffno)
, staffname constraint rs1 references supplies_pharmaceutical(staffname)
constraint rs2 references supplies_surgical(staffname)
constraint rs3 references supplies_nonsurgical(staffname)
, wardno varchar2(6)
, itemno varchar2(6)
, quantity int
, dateordered date
, daterecieved date );
Вы также можете определить их на уровне таблицы или как отдельные операторы, но тогда они не смогут наследовать тип данных (первого) родителя.
Все itemNo указывают на суперкласс в отношениях MANDATORY, OR
, поэтому они являются 3 экземплярами itemNo в качестве внешнего ключа.
До этого я не слышал об отношениях 'ОБЯЗАТЕЛЬНО, ИЛИ' иЯ не думаю, что это стандартный термин моделирования данных.Возможно, это какой-то инструмент, который вы используете.
Здесь нет суперкласса, и это не примеры чего-либо.Вы определяете три ограничения внешнего ключа, ссылаясь на три отдельные таблицы базы данных.Ограничение внешнего ключа - это правило, согласно которому все значения указанного столбца должны существовать в указанной родительской таблице.