Таблица выглядит вот так. Собственно:
id - id самой записи
entity_id - id в нашей системе. То самое поле, из-за которого вопрос, каким образом его можно привязать к реальным сущностям в других таблицах, особенно в случае удаления этой сущности или удаления этой записи о сущности: триггером с какой-то процедурой перебора по тайпам, какой-то виртуальной таблицей/колонкой, хз.
entity_type - enum (пока что), что это именно: проект, таска, лог, журнал, запись, etc.
external_provider - enum (пока что), т.к. пока что поддерживаем ограниченное количество связываемых систем, обозначающий скорее общее название сервиса, т.к. мы работаем в том числе с self-hosted решениями и обслуживаем сразу нескольких. В этом случае провайдер будет один, а сурс будет отличаться
external_source - url, важно в случае self-hosted вариантов чужих систем
external_additional_data - понятно.