Задача:
есть таблица событий, в ней есть поле source.
В этом поле должна быть ссылка на объект, который зарегистрировал событие (далее. источник).
Источник может относится к одному из около 500 типов. Каждый тип — отдельная таблица.
Насколько я понимаю, в SQL нельзя сделать ссылку, которая содержала бы имя таблицы. Или можно?
Придумывается что-то вроде source_type int, source_id int, где source_type — номер таблицы и source_id — id в той таблице. Но 1) что делать с ссылочной целостностью (забить?) 2) как джойнить, если надо отфильтровать по полю регистратора?
У меня фильтрация получается что-то вроде
select e.* from events e
where (e.source_id, e.source_type) in
(select id, 1 from source1 where key_field = $1
union all
select id, 2 from source2 where key_field = $1
union all
....
union all
select id, 500 from source500 where key_field = $1)
Есть что-то проще? Или лучше для таких задач брать nosql?