Не уверен, почему вы получаете круговую зависимость. Вы уверены, что объявили отношения с правильной кардинальностью?
Ваши столы ...
SQL> create table members
2 ( name varchar2(10)
3 , id number not null primary key )
4 /
Table created.
SQL> create table events
2 ( id number not null primary key
3 , datetime date
4 , topic varchar2(10)
5 , organizerid number not null )
6 /
Table created.
SQL> create table eventregistrations
2 ( memberid number not null
3 , eventid number not null)
4 /
Table created.
SQL>
Участник может организовать любое количество мероприятий. У мероприятия должен быть один организатор.
SQL> alter table events
2 add constraint evt_mbr_fk foreign key ( organizerid )
3 references members (id) on delete cascade
4 /
Table altered.
SQL>
Участник может зарегистрироваться на любое количество событий ...
SQL> alter table eventregistrations
2 add constraint reg_mbr_fk foreign key ( memberid )
3 references members (id) on delete cascade
4 /
Table altered.
SQL>
Событие может иметь любое количество зарегистрированных участников ...
SQL> alter table eventregistrations
2 add constraint reg_evt_fk foreign key ( eventid )
3 references events (id) on delete cascade
4 /
Table altered.
SQL>
Примечание: я не удосужился реализовать правило «член может сопротивляться только один раз для любого данного события», потому что оно не актуально (но это будет составной первичный ключ при регистрации событий.
редактировать
Я разделяю озабоченность других по поводу использования ON CASCADE DELETE, но я думаю, что это не совсем относится к вопросу. Принудительное изменение органайзера для события является бизнес-правилом. В некоторых сценариях ON DELETE CASACDE подходит, а в некоторых - нет.
редактировать 2
Это признак того, что вид базы данных все-таки имеет значение. Oracle весьма рада передать кассовый отказ от ЧЛЕНОВ на СОБЫТИЯ и СОБЫТИЯ без жалоб.