Salve galera, Estou com dúvidas quanto a Herança... Primeiro: Usei a regra que faz uma relação para cada entidade. Ex: Material(Titulo, Ano, Edição) - Generalização Livro(ISBN, Autor, Editora) - Especialização Periodico(ISSN, Nro, Área) - Especialização Tudo ok, até então. Porém quando fui criar a tabela Item_Emprestados apareceu uma dúvida, veja: Item_Emprestados(ID_Item, Qtd, Data, ID_Aluno, Cod_Material) Como vocês podem ver, Cod_Material é uma chave estrangeira para as tabelas especializadas Livro e Periodico, porém isso não parece ser permitido. Minha pergunta então é: Como fazer para Cod_Material ser tanto do tipo ISBN(Livro) quanto ISSN(Periodico) ? Abaixo vou colocar meu códico: CREATE TABLE Material(
Titulo VARCHAR(120) NOT NULL,
Editora VARCHAR(50) NOT NULL,
Ano INT NOT NULL
);
CREATE TABLE Livro (
ISBN VARCHAR(13),
Area VARCHAR(50) NOT NULL,
Autor VARCHAR(50) NOT NULL,
PRIMARY KEY (ISBN)
) inherits (Material);
CREATE TABLE Periodico (
ISSN VARCHAR(10),
Edicao VARCHAR(10) NOT NULL,
Numero INT,
PRIMARY KEY (ISSN)
) inherits (Material);
CREATE TABLE Item_Empresta(
COD_Item VARCHAR(10) ,
Quantidade INT NOT NULL,
Grupo VARCHAR(50) ,
Data_Inicio DATE NOT NULL,
Data_Devolucao DATE NOT NULL,
CPF_Funcionario VARCHAR(14),
Mat_Aluno VARCHAR(10),
Mat_Bolsa VARCHAR(10),
ID_Material VARCHAR(13) NOT NULL,
PRIMARY KEY(COD_Item),
CONSTRAINT Referencia_Empresta_Material
FOREIGN KEY (ID_Material) REFERENCES Livro(ISBN) ON DELETE
RESTRICT ON UPDATE CASCADE,
FOREIGN KEY (ID_Material) REFERENCES Periodico(ISSN) ON DELETE
RESTRICT ON UPDATE CASCADE
) Observe que do jeito que está meu código, se eu tentar inserir um material Periodico dá erro pois a primeira restrição é livro então ele informa que não há livro com tal Identificador.