Fórum Relacionamento de tabelas #169097
12/07/2003
0
[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
Curtir tópico
+ 0Posts
13/07/2003
Edilcimar
Gostei + 0
13/07/2003
Anderson_blumenau
Gostei + 0
14/07/2003
Rjanuzzi
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
14/07/2003
Ilanocf
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
16/07/2003
Anderson_blumenau
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
16/07/2003
Rjanuzzi
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
Clique aqui para fazer login e interagir na Comunidade :)