Duvida na criação de tabelas com Postgree

2 respostas
C

Daqui a pouco vão me xingar. Mas eu não to conseguindo fazer o relacionamento das classes.
É o seguinte.

A classe funcionario tem os campos : matricula, nome, formacao, expediente e acesso. São todos os campos, varchar (estou usando o postgree, que é o unico banco de dados instalado aqui no pc da faculdade.), menos o acesso que é boolean.

A classe biologo herda todas essas variaveis e ainda tem 2 a mais. No caso, sala e especializacao.

usei o seguinte comando para criar a tabela do funcionario:

create table funcionario(matricula varchar(15) not null,
crv varchar(12) not null,
nome varchar(50) not null,
formacao varchar(20) not null,
expediente varchar(20) not null,
acesso boolean not null,
primary key(matricula,crv));

Funcionou numa boa.
E tentei o seguinte código para a tabela biologo :

create table biologo(matricula varchar(15) not null,
crv varchar(12) not null,
nome varchar(50) not null,
formacao varchar(20) not null,
expediente varchar(20) not null,
acesso boolean not null,
especializacao varchar(30) not null,
sala varchar(10) not null,
primary key(matricula,crv),
foreign key(matricula) REFERENCES funcionario(matricula),
foreign key(crv) REFERENCES funcionario(crv),
foreign key(nome) REFERENCES funcionario(nome),
foreign key(formacao) REFERENCES funcionario(formacao),
foreign key(expediente) REFERENCES funcionario(expediente),
foreign key(acesso) REFERENCES funcionario(acesso));

Alguem pode me dizer onde tá meu erro? :S
Realmente não to conseguindo, e preciso disso pra ontem.
Se alguem pudar ajudar, obrigado. :?:

2 Respostas

yorgan

Qual o erro que retornou para você?
Mas acredito que o problema seja na declaração das duas chaves primárias. Você já tentou declarar só uma?

Obs. Tente utilizar as tags de formatação (principalmente em códigos) para melhorar o visual dos posts.

[]´s

Daniel

S

Olá amigo

vc não desejaria fazer isto?

create table funcionario (
id serial primary key,
matricula varchar(15) unique not null,
crv varchar(12) not null,
nome varchar(50) not null,
formacao varchar(20) not null,
expediente varchar(20) not null,
acesso boolean not null
);

create table biologo(
id serial primary key,
especializacao varchar(30) not null,
sala varchar(10) not null,
foreign key(id) REFERENCES funcionario(id) );

resultado da query:

NOTA: CREATE TABLE criará sequência implícita “funcionario_id_seq” para coluna serial "funcionario.id"
NOTA: CREATE TABLE / PRIMARY KEY criará índice implícito “funcionario_pkey” na tabela "funcionario"
NOTA: CREATE TABLE / UNIQUE criará índice implícito “funcionario_matricula_key” na tabela "funcionario"
NOTA: CREATE TABLE criará sequência implícita “biologo_id_seq” para coluna serial "biologo.id"NOTA: CREATE TABLE / PRIMARY KEY criará índice implícito “biologo_pkey” na tabela “biologo”

Consulta executada com sucesso sem resultados em 88 ms.

Silvio Guedes

Criado 18 de junho de 2009
Ultima resposta 18 de jun. de 2009
Respostas 2
Participantes 3