CREATE TABLE IF NOT EXISTS employee_news_links ( id SERIAL PRIMARY KEY, employee_id INTEGER NOT NULL REFERENCES employees(id) ON DELETE CASCADE, title TEXT NOT NULL, url TEXT, summary TEXT, published_at TIMESTAMPTZ, published_year INTEGER, source_hash VARCHAR(64) NOT NULL, raw_data JSONB, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), CONSTRAINT uq_employee_news_links_employee_url UNIQUE (employee_id, url), CONSTRAINT uq_employee_news_links_employee_source_hash UNIQUE (employee_id, source_hash) ); CREATE INDEX IF NOT EXISTS ix_employee_news_links_employee_id ON employee_news_links (employee_id); CREATE INDEX IF NOT EXISTS ix_employee_news_links_url ON employee_news_links (url); CREATE INDEX IF NOT EXISTS ix_employee_news_links_published_at ON employee_news_links (published_at); CREATE INDEX IF NOT EXISTS ix_employee_news_links_published_year ON employee_news_links (published_year);