Restrição de chave estrangeira (PostgreSQL)

tenho 4 tabelas
grade
disciplina
serie ou semestre
e itens de grade

preciso preencher a tabela itens de grade com dados das 3 tabelas, porem tem a questão de disciplina
pq apesar dela não se repetir em uma grade x, ela pode ter né uma grade y, e se eu usar
unique só vai permitir uma vez, mas se eu tira vai permitir setar mais de uma disciplina na mesma grade
tem alguma forma de tratar isso no banco ou só na aplicação