Como relacioanar as tabelas no BD. [RESOLVIDO]

Estou construindo uma aplicação para um estacionamento.

Tenho 07 classes:

-BOX
-CLIENTE = COMPOE BOX
-TELEFONE = COMPOE CLIENTE
-ENDERECO = COMPOE CLIENTE
-PAGAMENTO = COMPOE CLIENTE
-CLIENTEINATIVO = HERDA DE CLIENTE
-CLIENTERESERVA = HERDA DE CLIENTE

Tenho as seguintes PKs:

-ID_BOX
-ID_CLIENTE
-ID_TELEFONE
-ID_ENDERECO
-ID_PAGAMENTO
-ID_CLIENTEINATIVO
-ID_CLIENTERESERVA

Tenho as seguintes FKs

-FK_CLIENTE_BOX = ID_CLIENTE referencia ID_BOX
-FK_TELEFONE_CLIENTE = ID_TELEFONE referencia ID_CLIENTE
-FK_ENDERECO_CLIENTE = ID_ENDERECO referencia ID_CLIENTE
-FK_PAGAMENTO_CLIENTE = ID_PAGAMENTO referencia ID_CLIENTE
-FK_CLIENTEINATIVO_CLIENTE = ID_CLIENTEINATIVO referencia ID_CLIENTE
-FK_CLIENTERESERVA_CLIENTE = ID_CLIENTERESERVA referencia ID_CLIENTE

Quero fazer essas classes se relacionarem no Banco de Dados Postgres que estou usando.
Exemplo quando eu consultar a tabela CLIENTE, quero que todas as tabelas relacionadas a cliente com os respectivos IDs sejam setadas támbem.

Olá

Você está usando algum framework para fazer a comunicação com o banco de dados.
Caso esteja usando Hibernate ou TopLink, não se preocupe, basta mapear as entidades certinhas.

Caso não esteja usando nenhum dos dois, esteja usando JDBC precisa fazer o select não mão para cada FK, para popular os objetos.

Espero ter ajudado
Flws

Estou usando o JDBC mesmo.

Deiche-me ver se entendi. Para poder consultar os dados das tabelas do meu banco, vou ter que selecionar cada tabela individualmente.

Mas se eu selecionar a ID_CLIENTE, as tabelas que fazer referencia a essa ID não serão selecionadas tambem?

Obrigado.

Será mais ou menos assim


public Pessoa getPessoa(){

//... abre comunicação
//Select * from Pessoa as p;

Pessoa p = new Pessoa
p.setNome(resultSet.getString("nome"));
//  int fkendereco = recupera no resultSet(fkendereco)

//Select * from Endereco as e where e.pkendereco = ?;
while(enquanto tiver endereco){
    Endereco e = new Endereco
    e.setNumero(resultSetEndereco.getInt("numero"));
    p.addEndereco(e);
}


//fecha comunicação
return p;
}

Esse foi um exemplo que dei, pode ser estruturado de outra forma.

Espero ter ajudado
flws

amigo abaixo tenho consultas ao banco de dados certo? ou vc tem dúvidas qto a isso?

Relação de clientes do estado de São Paulo (Código, Nome, Cidade)
select cli_codigo, cli_nome, cid_nome
   from clientes cl, cidades ci
   where cl.cid_codigo = ci.cid_codigo and cid_uf = 'SP'

Relação de produtos fornecidos pelo fornecedor  ?Fornecedor 1?
select p.pro_codigo, pro_descr
   from produtos p, fornecedores f, fornecedores_produtos fp
   where fp.for_codigo = f.for_codigo and fp.pro_codigo = p.pro_codigo and for_nome = 'Fornecedor 1'

Relação dos fornecedores que fornecem o produto 02.
select f.for_codigo, for_nome
   from fornecedores f, fornecedores_produtos fp
   where fp.for_codigo = f.for_codigo and pro_codigo = 2

se certo qual os relacionamentos tem? Se não entaum entendo q vc nunca estudou relacionamentos…quero te ajudar ok? não estou aki pra mais nada…

Obrigado luxu. realmento sei muito pouco como funciona os relacionamentos no BD.

Mas a minha duvida é a seguinte.

EXEMPLO - tenho 07 tabelas no banco se relacionando como postado no ínicio do tópico. Como faço para deletar um CLIENTE e deletar tudo que está relacionado com ele como TELEFONE / ENDERECO / PAGAMENTO / BOX. Minha maior dúvida é como criar os relacionamentos no banco para poder deletar ou consultar tudo de maneira mais simples.

Oi,

Sobre deletar,pode ser feito de várias maneiras e dependendo do BD a sintaxe muda um pouco.Mesmo assim vou deixar um exemplo:

http://profissionais.ws/programacao/mysql-programacao/como-criar-triggers-no-mysql.html

Seria bom vc aprender os conceitos de Banco de Dados Relacional,parece simples,mas não é… :wink:

Consegui excluir tudo.

Usei o comando cascade ao criar a FK

CONSTRAINT "Fk_cliente_box" FOREIGN KEY (id_cliente) REFERENCES box (id_box) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE

Assim todas referencias seram deletadas.

Obrigado pela Ajuda!!!

Que bom,mesmo assim aconselho vc baixar essa apostila e estudar um pouco…

http://www.apostilando.com/download.php?cod=3131&categoria=Banco%20de%20Dados

Talvez eu tenha entendido errado… :wink: