В итоге я решил не создавать никаких новых таблиц для этого и вместо этого создал несколько правил. Однако я принимаю ответ Дамира Судревича , потому что он наиболее близок к тому, что я хотел (и мне нравится тот факт, что он нарисовал для меня диаграмму!)
По сути, я хотел решить две проблемы:
- Убедитесь, что при удалении сущности все ее Примечания.
- Убедитесь, что примечание не может быть создано без ссылки на действительный объект.
Первая проблема была решена путем создания правила для каждой сущности (которое я мог бы написать, если получу достаточно сущностей):
CREATE OR REPLACE RULE rl_somentity_delete_note
AS ON DELETE TO someentity
DO ALSO DELETE FROM note WHERE entity_id = OLD.id
Вторая проблема не была решена. Я решил, что лучше взять на себя (низкий) риск того, что пользователи будут создавать «осиротевшие» заметки, чем усложнять схему дополнительной таблицей и дополнительным FK для каждой таблицы сущностей, что потребует дополнительного оператора INSERT
для добавления каждой строки сущности .