• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

Estretura de uma Base de Dados [ URGENTE ]

5 mensagens neste tópico

Bem, isto anda díficil para estes lados, tenho aqui um problema de um projecto que tenho que entregar dia 25 de Maio e ainda estou a 0 %.

O objectivo do Projecto é fazer uma comparação de carros ONLINE seguindo umas preferências do utilizador.

Por exemplo, chego ao site, sou um 0 (zero) à esquerda a carros, então só sei que quero um carro azul, com 5 portas a gasóleo e faço pesquisar. O site vai devolver os carros que existem com essas características.

O problema está na Base de Dados.

Ora bem..

pensei em algo assim, vejam se está correcto

1 Carro tem muitos modelos

1 modelo tem muitas cores

1 modelo tem muitos combustiveis..

A minha tabela de modelos seria assim

MODELO

---------------

ID Modelo

Ar Condicionado

AirBag

(...) // isto representa os restantes Extras, ou seja seria um int(1) TRUE / FALSE( tem ou não tem)

Mas não sei como faria para por numa linha tipo

Linha na Tabela

Corsa ArCondicionado , Azul , Preto, Rosa, ou seja todas as cores num so registo , numa so linha..

Help :P  :P

ps : a minha maior dúvida neste momento é : um combustivel tem muitos modelos e 1 modelo tem muitos combustiveis ? estou a pensar correctamente ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens algum conhecimento de relações Entidade-Relação ??

Era uma mais valia para o teu problema perceberes como relacionar varias tabelas.

Quanto há tua ideia um carro não tem muitos modelos um modelo é que tem muitas variantes pelos menos eu vejo assim, quanto ás cores devias fazer pelo carro e não pelo modelo :S

Desculpa se ainda te estou a confundir mais mas é que também só pelo que disseste é complicado :S

Mete ai mais alguma info.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sei magician, eu sei Diagramas de Classes, mas a lógica está´me a faltar...

Tipo, Um combustivel pode ter muitos modelos e muitos modelos podem ter muitos combustiveis ?

tipo

Combustivel  * ------- Modelo *

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem a minha cena é que estou todo queimado.

Ou seja vejam isto:

Se eu tiver uma cena deste género :

marca 1 ------- * modelo

modelo * ----- * combustivel

Tabela Associativa Utilizacao (Resulta da Ligaão de muitos para muitos de modelo-Combustivel)

Iria ter uma cena assim na tabela Combustivel

IDCombustivel   Combustivel

1               Gasolina

2               Gasoleo

3               Gaz

Na tabela Utilizacao que tem IDUtilizacao , IDModelo e IDCombustivel iria ter por exemplo para o modelo Corsa que pode ter os 3 combustiveis

IDUtilizado     IDModelo        IDCombustivel

1               1               1

2               1               2

3               1               3

Agora a minha questão é..

Quando eu faço

SELECT * FROM modelo,Utilizacao,Combustivel WHERE modelo.IDModelo = Utilizacao.IDModelo  AND Utilizacao.IDCombustivel = Combustivel.IDCombustivel AND Combustivel.Combustivel = 'Gasolina '

AND Combustivel.Combustivel = 'Gaz' 

Porque é que retorna 0 ???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só estou com 5 minutos e por isso li tudo a "correr".

SEAT -> LEON -> Sport  (MARCA, MODELO, VERSÃO)  [Podes tb ter isto] :hmm:

Na minha rápida análise vais ter pelo menos 5 tabelas.

Marcas

Modelos

Combustiveis

Cores

Modelos_Combustiveis (resulta de uma relacao de n-n) (1 modelo pode ter varios combustiveis e 1 combustivel pode pertencer a varios modelos)

marcas <-- modelos (id_modelo, id_marca, id_cor, nome) --> Cores

modelos <-- Modelos_Combustiveis (id_Modelos_Combustiveis, id_modelo, id_combustiveis) --> Combustiveis

Na pesquisa podes fazer inner joins.

SELECT MODELO.nome , COMBUSTIVEIS.nome

FROM Modelos_Combustiveis INNER JOIN

          MODELO ON Modelos_Combustiveis.id_MODELO = MODELO.id_MODELO INNER JOIN

          COMBUSTIVEIS ON  Modelos_Combustiveis.id_combustiveis = COMBUSTIVEIS.id_combustiveis

WHERE COMBUSTIVEIS.nome = 'Gasolina '

            AND COMBUSTIVEIS.nome = 'Gaz'

         

PS: Não testei opr isso pode haver algum erro :D

Espero ter ajudado  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora