1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Modelo Entidade Relação

Discussão em 'Programação' iniciada por migix2007, 15 de Julho de 2009. (Respostas: 4; Visualizações: 997)

  1. Boas..pessoal estou a desenvolver um sistema de gestão de aluguer automóvel, gostaria de saber a vossa opinião quanto ao modelo entidade relação, a ver se tem muitos erros lool,porque é primordial para o seguinte passo, queries e parte de programação
    Aqui vai:[​IMG]
    [​IMG][​IMG]
     
  2. [​IMG]

    [​IMG]
     
  3. gOnYs

    gOnYs Power Member

    Boas, parece-me bem, a marca poderia estar relacionada ao modelo e na tabela de carros dizias qual era o modelo apenas.
     
  4. Boas... já melhorei um pouco o modelo,,
    http://www.4shared.com/file/118388549/54f05461/BD_online.html

    Agora estou a desenvolver algumas queries.. poderiam-me dar algumas sugestões quanto à funcionalidade destas:

    /* 1.Quantos clientes residem em lisboa*/
    select count(*) as 'Residentes lisboetas'
    from Cliente
    where Cliente.localidade='lisboa'


    /* 2.Listar as respectivas categorias e marcas dos carros*/
    select tipo,marca.marca,modelo.modelo
    from carro,modelo,marca,categoria
    where carro.matric=modelo.matric
    and modelo.marc=marca.marc
    and modelo.categ=categoria.categ


    /* 3.Listar a cor, marca,modelo,e cliente de todos os carros*/
    select cor,marca,modelo,nome
    from Cliente,Aluguer,Carro,Modelo,Marca
    where Aluguer.client=Cliente.client
    and Aluguer.matric=Carro.matric
    and Carro.matric=Modelo.matric
    and Modelo.marc=Marca.marc



    /* 5.Kilometros percorridos por cliente e respectiva matricula*/
    select Cliente.nome,Carro.matric,Aluguer.kmfinal,Aluguer.Kminicial,'Kilometros Percorridos'=(kmfinal-kminicial)
    from Aluguer,Cliente
    where Aluguer.client=Cliente.client

    where Aluguer.matric=Carro.matric


    /* 6.Quantos clientes alugaram o carro em barcelos*/
    select count (distinct Aluguer.fil)
    from Aluguer,Filial
    where Aluguer.fil=Filial.fil
    and Filial.local='braga'

    /* 7.Que clientes merecem promoção(por cada 1000km acumulados, merece 10 km de promoçao)*/
    select Cliente.nome,kmbonus=Max(kmfinal-kminicial)
    from Aluguer,Cliente
    where Aluguer.client=Cliente.client
    having Max(kmfinal-kminicial)>=1000

    /* 8.Listar a cor, marca,modelo,e cliente de todos os automóveis. Ordenar a lista por ordem alfabética de marca dentro da mesma marca por ordem alfabética da modelo. */
    select cor,marca,modelo,nome
    from Cliente,Aluguer,Carro,Modelo,Marca
    where Aluguer.client=Cliente.client
    and Aluguer.matric=Carro.matric
    and Carro.matric=Modelo.matric
    and Modelo.marc=Marca.marc
    order by marca,modelo

    /* 9.Inserir novo cliente na base de dados*/
    select * from Cliente
    Insert Cliente values('10','Joao Saraiva Peixoto','09484726','rua da liberdade','4700-232','braga','253764539')

    /* 10.Preço a pagar por cliente e respectivo aluguer*/
    select Aluguer.client,cliente.nome,sum( duracao*precodia) as 'Preço Aluguer'
    from Aluguer,Cliente,carro,modelo
    where Aluguer.Client=Cliente.client
    and Aluguer.matric=Carro.matric
    and carro.matric=modelo.matric
    group by cliente.nome,Aluguer.client

    /* 11.Qual foi o cliente que alugou maior número de dias*/
    select nome,'Dias alugados'=sum(duracao)
    from Cliente,Aluguer
    where Aluguer.client=Cliente.client
    group by Cliente.nome
    having sum(duracao)>= all (select sum(duracao)
    from Cliente,Aluguer
    where Aluguer.client=Cliente.client
    group by Cliente.nome)

    /* 12.Sinistros ocorridos por carro e respectivo cliente*/
    select nome,modelo,marca,count(Sinistro.sini)as 'Sinistros'
    from Aluguer,Carro,Seguro,Sinistro,Cliente,modelo,marca
    Where Cliente.client=Aluguer.client
    and Aluguer.matric=Carro.matric
    and Carro.matric=Seguro.matric
    and carro.matric=modelo.matric
    and modelo.marc=marca.marc
    and Seguro.seg=Sinistro.seg
    group by nome,sini,modelo,marca

    /* 13.Caução por carro alugado*/
    select marca,modelo,sum(caucao)as 'Valor €'
    from categoria,modelo,marca,carro
    Where categoria.categ=modelo.categ
    and modelo.matric=carro.matric
    and modelo.marc=marca.marc
    group by modelo,marca

    /* 14.Preço por Aluguer*/
    select alug,nome,sum(duracao*precodia) as 'Preço por Aluguer €'
    from Aluguer,carro,modelo,cliente,Factura
    where CLiente.client=Aluguer.client
    and Aluguer.matric=carro.matric
    and carro.matric=modelo.matric
    group by Cliente.Nome,Aluguer.alug

    /* 15.Criar uma vista pra alimentar o respectivo cliente,matricula,marca e modelo*/
    create view vista as
    select nome,carro.matric,marca,modelo
    from cliente,aluguer,carro,modelo,marca
    where cliente.nome=aluguer.client
    and aluguer.matric=carro.matric
    and carro.matric=modelo.modelo
    and modelo.marc=marca.marca

    /* 16. Seleccionar clientes que contenham a letra j*/
    select*
    from Cliente
    where nome like'j%'

    /* 17. Seleccionar clientes que pagaram maior valor por aluguer*/
    select Aluguer.client,cliente.nome,sum( duracao*precodia) as 'Preço Aluguer'
    from Aluguer,Cliente,carro,modelo
    where Aluguer.Client=Cliente.client
    and Aluguer.matric=Carro.matric
    and carro.matric=modelo.matric
    group by cliente.nome,Aluguer.client
    having sum(duracao*precodia)is max


    ps: gostaria de fazer questões, com o uso de triggers,procedures, poderiam.me dar alguma ajuda...obrigado
     

Partilhar esta Página