Relacionamento de tabelas

Delphi

12/07/2003

seguinte

[b:07d084081d]HOSPEDES[/b:07d084081d]-----------------[b:07d084081d]CHECKIN[/b:07d084081d]------------------------[b:07d084081d]APARTAMENTOS[/b:07d084081d]
cod_Hospede (pk)-------- cod_Check(pk)---------------cod_apt(pk)
nome------------------------ cod_hospedes (fk)----------apt
cidade-----------------------cod_apt(fk)
etc----------------------------nome_hospede
-------------------------------etc
saiu tudo meio torno mas espero que tenha facilitado
como eu faço um relacionamento pra pegar os valores das tabelas [b:07d084081d]hospedes[/b:07d084081d] e [b:07d084081d]apartamentos[/b:07d084081d] e colocar na tabela [b:07d084081d]checkin[/b:07d084081d] sem repetir o apt no paradox

Força Sempre


Anderson_blumenau

Anderson_blumenau

Curtidas 0

Respostas

Edilcimar

Edilcimar

12/07/2003

na tabela checkin coloque o campo cod_apt como unique e a própria tabela não permitirá duplicação


GOSTEI 0
Anderson_blumenau

Anderson_blumenau

12/07/2003

e quanto ao relacionamento, eu to perdido nessa parte ja tentei de varias formas e nao consigo o resultado esperado


GOSTEI 0
Rjanuzzi

Rjanuzzi

12/07/2003

O código em sql seria assim:

SELECT * FROM Hospedes, Checkin, Apartamentos WHERE
Checkin.Cod_Hospedes = Hospedes.Cod_Hospedes AND
Checkin.Cod_apt = Apartamentos.Cod_Apt

acho que é isso,

Rafael


GOSTEI 0
Ilanocf

Ilanocf

12/07/2003

A primeira coisa q vc deve fazer ao criar um relacionamento é decidir qual a tabela mestre. No seu caso vejamos o seguinte:

HOSPEDES-----------------CHECKIN------------------------APARTAMENTOS
cod_Hospede (pk)-------- cod_Check(pk)---------------cod_apt(pk)
nome------------------------ cod_hospedes (fk)----------apt
cidade-----------------------cod_apt(fk)
etc----------------------------nome_hospede
-------------------------------etc

HOSPEDES: Será a tabela Mestre, ok?
CHECKIN: Será a primeira tabela filha, ok?
APARTAMENTOS: Será a segunda tabela filha, ok?

Bem, vc tem duas tabelas filhas e uma mestre, logo cada uma das duas filhas deverão estar relacionadas à Mestre. Vejamos agora:

HOSPEDES-----------------CHECKIN------------------------APARTAMENTOS
cod_Hospede (pk)-------- cod_Check(pk)--------------- cod_apt(pk)
nome------------------------ cod_hospedes (fk)---------- cod_Hosped
cidade----------------------- //cod_apt(fk)// ------------------ apt
etc----------------------------nome_hospede
-------------------------------etc
Pois cada tabela filha não irá se referir a um hóspede? Não será um relacionamento de um para vários? Então!
Não será necessário vincular o campo //cod_apt(fk)// na tabela CHECKIN com a tabela APARTAMENTOS, talvez nem precise dele na tabela CHECKIN, pois veja bem, observe a seqüência:
Primeiro vc vai preencher os dados da tabela HOSPEDES, depois da tabela CHECKIN e por último da tabela APARTAMENTOS, ok? Muito bem, então pq este campo (cod_apt) se ele será informado numa terceira tabela? e se o hóspede em outra data estiver em outro apartamento? Bem, neste segundo caso já não vejo a necessidade da 3ª tabela, mas isso depende muito da lógica de como se está montando o banco de dados. Aconselho vc enviar mais detalhes sobre a forma como vc está planejando seu BD, de repente a coisa possa ser mais simples do q vc imagina! Bem, eu não conheço o funcionamento de um hotel, por isso te aconselhei enviar mais dados, talvez seje mais fácil darmos uma dica mais concreta.
Outra coisa, edilcimar te deu uma dica:
´na tabela checkin coloque o campo cod_apt como unique e a própria tabela não permitirá duplicação´
E se ocorrer de necessitar de um registro q já havia sido cadastrado anteriormente? Coincidencias acontecem! Esta tabela deverá realmente ignorar registros duplicados?
Não estou dizendo q o q passaram pra vc está errado, apenas estou lhe dando uma outra visão q estou tendo do projeto, de repente, a minha visão é q pode estar errada, mas será q vc está levando tudo isso em conta? Como já disse não conheço o funcionamento de um hotel, mas...


GOSTEI 0
Anderson_blumenau

Anderson_blumenau

12/07/2003

Pra comecar obrigado por deixar uma parte do seu tempo comigo, eu nao sou programador estou aprendendo por conta, e por trabalhar em um hotel achei mais interessante aprender sobre relacionamento de tabelas com alguma coisa que me é familiar

quanto a tabela apartamentos eu presciso dela pra pegar uma lista de apartamentos ja cadastrados, pra nao acontecer de eu digitar um apartamento que nao existe

e mais tarde quando eu for pesquisar as despesas do apartamento eu escolho um dos apartamentos cadastrados e ele me da a relacao de despesas

o negocio era pra ser assim

eu cadastro os hospedes e os apartamentos

o checkin é quando é registrada a chegada do hospede,ou seja, a hora que ele chegou,dia,ect e o apartamento em que ele vai ficar
nao sei se voce entendeu


GOSTEI 0
Rjanuzzi

Rjanuzzi

12/07/2003

Anderson,

Eu não mexo com relacionamentos, no seu caso eu simplesmente faria um formulário de cadastro para cada tabela, e um de pesquisa aonde eu usaria uma Query com o seguinte código SQL.

SELECT * FROM Hospedes, Checkin, Apartamentos WHERE
Checkin.Cod_Hospedes = Hospedes.Cod_Hospedes AND
Checkin.Cod_apt = Apartamentos.Cod_Apt

E usaria um DBGrid mostrando somente os campos que eu quisesse.
ex:

Checkin.Cod_Checkin----Apartamento.Apartamento-----Hospede.nome-----Hospede.telefone-----etc

Suas tabelas tb não estão muito boas, sugiro dessa forma:

CHECKIN
Cod_Check
Cod_hospede
Cod_apartamento
Data
etc...
(Aqui não precisa do campo NomeHóspede, ou Apartamento, pq vc já faz referência pelos campos Cod_hospede e Cod_apartamento)


Apartamento
Cod_apartamento
Apartamento
etc...

Hospede
Cod_Hospede
Nome
Endereço
TElefone
etc...


Espero ter ajudado, qualquer dúvida pode me perguntar.

rjanuzzi


GOSTEI 0
POSTAR