Generalização no PostreSQL

4 respostas
T

Caros, não estou conseguindo resolver esse problema!

Tenho uma tabela Pessoa que é abstrato no meu Modelo lógico e as tabelas Cliente e Candidato que especialização dessa tabela.

Mas quando crio as tabelas o Postgre repete os mesmos atributos da tabela Pessoa nas tabelas Cliente e Candidato.

Tabela Pessoa

CREATE TABLE pessoa (
idpessoa SERIAL,
nome CHARACTER(50),
estadocivil CHARACTER(30),
cpf CHARACTER(11),
profissao CHARACTER(30),
telcelular CHARACTER(10),
telresidencia CHARACTER(10),
cep CHARACTER(8),
numero INTEGER,
logradouro CHARACTER(100),
cidade CHARACTER(50),
bairro CHARACTER(30),
complemento CHARACTER(50),
CONSTRAINT pk_idpessoa PRIMARY KEY (idpessoa)
);
ALTER TABLE pessoa OWNER TO postgres;
GRANT ALL ON TABLE pessoa TO postgres;

Tabela Cliente

CREATE TABLE cliente (
idcliente SERIAL,
pessoa_idpessoa INTEGER,
caracteristicaresidencia_idcaracteristicaresidencia INTEGER,
telcomercial CHARACTER(10),
email CHARACTER(30),
senha CHARACTER(20),
CONSTRAINT pk_idcliente PRIMARY KEY (idcliente)
)INHERITS(pessoa);
ALTER TABLE cliente OWNER TO postgres;
GRANT ALL ON TABLE cliente TO postgres;

Tabela Candidato

CREATE TABLE candidato (
idcandidato SERIAL,
pessoa_idpessoa INTEGER,
perfil_idperfil INTEGER,
datanascimento DATE,
idade INTEGER,
escolaridade CHARACTER(35),
serasa CHARACTER(20),
nadaconsta CHARACTER(20),
spc CHARACTER(20),
contratado BOOLEAN,
CONSTRAINT pk_idcandidato PRIMARY KEY (idcandidato)
)INHERITS(pessoa);
ALTER TABLE candidato OWNER TO postgres;
GRANT ALL ON TABLE candidato TO postgres;

Não estou conseguindo resolver. :frowning:

4 Respostas

wbdsjunior

posso estar enganado, mas não está faltando uma constraint de foreign key nas tabelas cliente e candidato?

tipo:

T

Valeu! :-o
Realmente não tem.

Brigadão. vou testar.

leslie-UFT

Você descobriu brother o que é?
Bem estou com esse mesmo problema, mas perguntei um brother ele disse que o pgAdmin que buga e mostra os campos relacionados a tabela que foi herdada. Apesar que pelo tom ele não tenha absolutamente certeza disso.
Embora que não sei se já fez o teste, mas quando você mandar inserir na tabela cliente ele cascateia para pessoa. Então quando inserir basta inserir cliente não é necessário fazer dois insert’s.

T

Este problema aconteceu quando estava fazendo o TCC na faul, agora não lembro como fiz para resolver.

Não trabalho com DB.

Valeu. 8)

Criado 26 de setembro de 2008
Ultima resposta 10 de nov. de 2010
Respostas 4
Participantes 3