Една опция, силно нормализирана, е да направите таблиците по-подобни на
create table notifications(
notification_id serial primary key,
date_created timestamp not null default now(),
title_id text not null,
message_id text not null,
icon text not null default 'logo'
);
create table usernotifications
(
notification_id integer references notifications,
user_id integer references users
);
create table groupnotifications
(
notification_id integer references notifications,
group_id integer references groups
);
create table companynotifications
(
notification_id integer references notifications,
company_id integer references companies
);
където записи съществуват само в съответната таблица с известия (потребител/компания/група) за всяко дадено известие.
(Не мисля, че има нещо лошо в външните ключове с възможност за null в ситуация, в която това показва, че външният ключ е незадължителен, но множество външни ключове от подобен тип създават впечатлението за денормализиран дизайн)