Slide 9 -> AR1.txt Quais os dias do mês de Maio que os clientes com nome José estacionaram um de seus carros de cor Prata? clientes cores paradas +-----+----+ +-----+----+ +-------+-----+-----+-----+-----+ |cdcli|nome| |cdcor|nome| |cdcarro|dtent|hrent|dtsai|hrsai| SELEÇÃO..: A <- clientes[[clientes.nome='Jose']] +-----+----+ |cdcli|nome| SELEÇÃO..: B <- cores[[nome=prata]] +-----+----+ |cdcor|nome| SELEÇÃO..: C <- paradas[[dtent entre '2010-05-01' e '2010-05-31' OU dtsai entre '2010-05-01' e '2010-05-31']] +-------+-----+-----+-----+-----+ |cdcarro|dtent|hrent|dtsai|hrsai| JUNÇÃO...: D <- A[[A.cdcli=carros.cdcli]]carros +-----+----+-----+-------+-----+-----+ |cdcli|nome|cdcli|cdcarro|marca|cdcor| JUNÇÃO...: E <- D[[D.cdcor=B.cdcor]]B +-----+----+-----+-------+-----+-----+-----+----+ |cdcli|nome|cdcli|cdcarro|marca|cdcor|cdcor|nome| JUNÇÃO...: F <- E[[E.cdcarro=C.cdcarro]]C +-----+----+-----+-------+-----+-----+-----+----+-------+-----+-----+-----+-----+ |cdcli|nome|cdcli|cdcarro|marca|cdcor|cdcor|nome|cdcarro|dtent|hrent|dtsai|hrsai| PROJEÇÃO.: F[[dtent,dtsai]] +-----+-----+ |dtent|dtsai| ####################################################################################################################### Slide 26 -> AR1.txt Quais os Nomes dos médicos que não atenderam consultas em Maio de 2019? SELEÇÃO..: A <- consultas[[dtent entre '2019-05-31' e '2019-05-31']] +-----+-----+-----+------+------+ |cdmed|dtent|hrent|hrreal|cdfunc| PROJEÇÃO.: B <- A[[cdmed]](distintos) +-----+ |cdmed| JUNÇÃO...: C <- B[[B.cdmed=medicos.cdmed]]medicos +-----+-----+----+-----+ |cdmed|cdmed|nome|cdesp| PROJEÇÃO.: D <- C[[medicos.cdmed, nome, cdesp]] +-----+----+-----+ |cdmed|nome|cdesp| SUBTRAÇÃO: E <- medicos - D +-----+----+-----+ |cdmed|nome|cdesp| PROJEÇÃO.: E[[nome]] +----+ |nome| ####################################################################################################################### Slide 26 -> AR1.txt Quais são os nomes de cargos que não tiveram funcionarios com consulta no segundo semestre de 2018? SELEÇÃO...: K <- consultas[[dtent entre '2018-07-01' e '2018-12-31']] +-----+-----+-----+------+------+ |cdmed|dtent|hrent|hrreal|cdfunc| JUNÇÃO....: A <- funcionarios->F[[F.cdfunc=K.cdfunc]]K +------+----+-------+-----+-----+-----+-----+------+------+ |cdfunc|nome|cdcargo|dtnas|cdmed|dtent|hrent|hrreal|cdfunc| PROJEÇÃO..: B <- A[[funcionarios.cdfunc, nome, cdcargo, dtnas]] +------+----+-------+-----+ |cdfunc|nome|cdcargo|dtnas| SUBTRAÇÃO.: C <- funcionarios - B +------+----+-------+-----+ |cdfunc|nome|cdcargo|dtnas| JUNÇÃO....: D <- C[[C.cdcargo=O.cdcargo]]Cargos->O +------+----+-------+-----+-------+----+ |cdfunc|nome|cdcargo|dtnas|cdcargo|nome| PROJEÇÃO..: D[[cargos.nome]] +----+ |nome| ####################################################################################################################### Slide 27 -> AR1.txt clientes carros aplicacao servicos +-----+----+ +-----+-------+-----+ +-------+-----+---------+ +-----+----+ |cdcli|nome| |cdcli|cdcarro|marca| |cdcarro|cdser|dtservico| |cdser|nome| SELEÇÃO...: A <- clientes[[nome='José']] +-----+----+ |cdcli|nome| JUNÇÃO....: B <- A[[A.cdcli=carros.cdcli]]carros +-----+----+-----+-------+-----+ |cdcli|nome|cdcli|Cdcarro|marca| PROJEÇÃO..: C <- B[[cdcarro,marca]] +-------+-----+ |cdcarro|marca| JUNÇÃO....: D <- C[[C.cdcarro=aplicacao.cdcarro]]aplicacao +-------+-----+-------+-----+---------+ |cdcarro|marca|cdcarro|cdser|dtservico| SELEÇÃO...: E <- D[[dtservico entre '2010-05-01' e '2010-05-31']] +-------+-----+-------+-----+---------+ |cdcarro|marca|cdcarro|cdser|dtservico| PROJEÇÃO..: F <- E[[marca,cdser]] +-----+-----+ |marca|cdser| JUNÇÃO....: G <- F[[F.cdser=servicos.cdser]]servicos +-----+-----+-----+----+ |marca|cdser|cdser|nome| SELEÇÃO...: H <- G[[nome<>'pintura']] +-----+-----+-----+----+ |marca|cdser|cdser|nome| PROJEÇÃO..: H[[marca]](distintos) +-----+ |marca| ####################################################################################################################### Slide 32 -> AR1.txt Dadas as Tabelas Professores Atribuidas Disciplinas +------+----+ +------+------+ +------+----+----+ |cdprof|nome| |cdprof|cddisc| |cddisc|nome|tipo| Quais são os nomes dos professores que ministram TODAS as disciplinas? isso sugere o procedimento de divisão. -- Preparação das tabelas PROJEÇÃO..: P <- professores[[cdprof]] +------+ |cdprof| PROJEÇÃO..: A <- atribuidas[[cdprof,cddisc]] +------+------+ |cdprof|cddisc| PROJEÇÃO..: D <- disciplinas[[cddisc]] +------+ |cddisc| -- executando a divisão PRODCART..: S <- P X D (tudo o que é possível ter prof x disciplina) +------+------+ |cdprof|cddisc| SUBTRAÇÃO.: T <- S - A +------+------+ |cdprof|cddisc| PROJEÇÃO..: W <- T[[cdprof]](distintos) +------+ |cdprof| SUBTRAÇÃO.: K <- P - W (lista com os códigos de professores que ministram TODAS as Disciplinas) +------+ |cdprof| -- complemento da resposta JUNÇÃO....: L <- K[[K.cdprof=professores.cdprof]]Professores +------+------+----+ |cdprof|cdprof|nome| PROJEÇÃO..: L[[professores.cdprof,nome]] +------+----+ |cdprof|nome| ####################################################################################################################### Slide 32 -> AR1.txt Dadas as seguintes tabelas: clientes carros paradas +-----+----+ +-----+-------+-----+ +-------+-------+ |cdcli|nome| |cdcli|cdcarro|marca| |cdcarro|dtestac| Quais os nomes dos donos de carros e as marcas dos carros que estacionaram entre 9/10 e 10/10? (Lembre que o ano não foi indicado) SELEÇÃO...: P <- Paradas[[dtestac entre '?-10-09' e '?-10-10']] -- usamos um 'coringa' para generalizar os anos da seleção - DEPENDENDO das funções do SGBD. +-------+-------+ |cdcarro|dtestac| JUNÇÃO....: Q <- P[[P.cdcarro=carros.cdcarro]]Carros +-------+-------+-----+-------+-----+ |cdcarro|dtestac|cdcli|cdcarro|marca| JUNÇÃO....: T <- Q[[Q.cdcli=clientes.cdcli]]Clientes +-------+-------+-----+-------+-----+-----+----+ |cdcarro|dtestac|cdcli|cdcarro|marca|cdcli|nome| PROJEÇÃO..: T[[nome,marca]] +----+-----+ |nome|marca| ----------------------------------------------------------------------------------------------------------------------- Slide 32 -> AR1.txt Quais foram os dias de paradas de todos os carros exceto os da marca 'Gol'? SELEÇÃO...: C <- carros[[marca<>'Gol']] +-----+-------+-----+ |CdCli|CdCarro|Marca| JUNÇÃO....: D <- C[[C.cdcarro=paradas.cdcarro]]paradas +-----+-------+-----+-------+-------+ |CdCli|CdCarro|Marca|CdCarro|DtEstac| PROJEÇÃO..: D[[dtestac]] +-------+ |DtEstac| ----------------------------------------------------------------------------------------------------------------------- Slide 32 -> AR1.txt Quais são os registros em paradas que indicam carros que foram excluídos da tabela Carros? JUNÇÃO[[][: K <- carros [[carros.cdcarro=paradas.cdcarro][ paradas +-----+-------+-----+-------+-------+ |CdCli|CdCarro|Marca|CdCarro|DtEstac| SELEÇÃO...: W <- K[[Marca é NULO]] +-----+-------+-----+-------+-------+ |CdCli|CdCarro|Marca|CdCarro|DtEstac| PROJEÇÃO..: W[[paradas.cdcarro, dtestac]] +-------+-------+ |CdCarro|DtEstac| ####################################################################################################################### Slide 43 -> AR2.txt Dadas as tabelas abaixo responda à pergunta apresentadas a seguir: Professores Atribuidas Disciplinas TiposDisciplinas +------+----+ +------+------+ +------+--------+----+ +------+------------+ |cdprof|nome| |cdprof|cddisc| |cddisc|nomedisc|tipo| |cdtipo|nometipodisc| 1. Quais são os nomes dos professores e os nomes das disciplinas atribuídas aos professores que ministram disciplinas do tipo "Tecnologia da Informação"? SELEÇÃO...: T1 <- TiposDisciplinas [[nometipodisc="Tecnologia da Informação"]] JUNÇÃO....: T2 <- T1 [[ T1.cdtipo=Disciplinas.tipo ]] Disciplinas JUNÇÃO....: T3 <- T2 [[ T2.cddisc=Atribuídas.cddisc ]] Atribuídas JUNÇÃO....: T4 <- T3 [[ T3.cdprof=Professores.cdprof ]] Professores PROJEÇÃO..: T4 [[nome,nomedisc]] (sem precisar gerar tabela). ----------------------------------------------------------------------------------------------------------------------- Slide 43 -> AR2.txt 2. Qual é a quantidade de disciplina atribuídas a cada professor? JUNÇÃO....: R <- Professores[[Professores.CdProf=Atribuidas.CdProf]]Atribuidas +------+----+------+------+ |CdProf|Nome|CdProf|CdDisc| PROJEÇÃO..: S <- R[[CONTA(CdDisc)->Quant, Nome]] {agrupa por CdProf}{ordena por CdProf} +-----+----+ |Quant|Nome| Ou... PROJEÇÃO..: A <- atribuidas[[conta(cddisc)->Qtd, cdprof-> cdp]]{agrupado por cdprof}{ordenado por cdprof} JUNÇÃO....: B <- A [[A.cdp=professores.cdprof]] professores PROJEÇÃO..: B [[cdprof,nome, Qtd]] ----------------------------------------------------------------------------------------------------------------------- Slide 43 -> AR2.txt 3. Quais são os nomes dos professores que ministram todas disciplinas? -- Preparação das tabelas PROJEÇÃO..: P <- professores[[cdprof]] PROJEÇÃO..: A <- atribuidas[[cdprof,cddisc]] PROJEÇÃO..: D <- disciplinas[[cddisc]] -- Executando a divisão ProdCart..: S <- P X D (tudo o que é possível ter prof x disciplina) SUBTRAÇÃO.: T <- S - A PROJEÇÃO..: W <- T[[cdprof]](distintos) SUBTRAÇÃO.: K <- P - W (lista com os códigos de professores que ministram TODAS as Disciplinas) -- Complemento da resposta JUNÇÃO....: L <- K[[K.cdprof=professores.cdprof]]Professores PROJEÇÃO..: L[[Professores.cdprof,nome]] ----------------------------------------------------------------------------------------------------------------------- Slide 43 -> AR2.txt 4. Qual é a média da quantidade de disciplinas atribuídas aos professores para cada tipo de disciplina? O que pode representar esta média (interprete o resultado) S <- Atribuidas[[Atribuidas.cdDisc=Disciplinas.cdDisc]]Disciplinas T <- S [[ cdtipo->Tp,conta(cdprof)->QtdProf ]]{agrupar por cdtipo}{ordernar por cdtipo} K <- Disciplinas [[ cdtipo->Tp, conta(cddisc)->QtdDisc ]]{agrupar por cdtipo}{ordernar por cdtipo} L <- T [[ T.Tp=K.Tp ]] K R <- L[[ Tp , QtdProf, QtdDisc, (QtdDisc/QtdProf)->Med]]{Agrupar(Tp)}{Ordem por Tp} ----------------------------------------------------------------------------------------------------------------------- Slide 43 -> AR2.txt 5. Quantas disciplinas são atribuídas para cada professor que ministra disciplinas do tipo "Matemáticas"? S <- Disciplinas->D [[Tipo="C" ]] T <- Atribuidas->A [[ A.cdDisc=D.cdDisc ]] S R <- T [[ conta(cddisc) ]] ----------------------------------------------------------------------------------------------------------------------- Slide 43 -> AR2.txt 6. Quais são, em ordem crescente, as disciplinas com mais professores associados? S <- Atribuidas [[ cddisc, conta(cdprof) ]]{agrupar(cddisc)}{ordem por conta(cdprof)} ----------------------------------------------------------------------------------------------------------------------- Slide 43 -> AR2.txt 7. Sendo que qualquer professor só pode ministrar disciplinas de um tipo, indique quais são as disciplinas (código e nome) que ainda podem ser atribuídas ao professor com nome "ANA"? Seleção : B <- Professores[[nome="ANA"]] Projeção : P <- B[[cdprof]] Junção : C <- B[[B.CdProf=A.CdProf]]Atribuidas->A Junção : G <- C[[C.CdDisc=D.CdDisc]]Disciplinas->D Projeção : T <- G[[D.cdisc,D.nome,D.tipo]] Projeção : E <- G[[Tipo]] (Distintos) Projeção : H <- E[[E.Tipo= Disciplinas.Tipo]]Disciplinas->D Projeção : F <- H[[D.cdisc]] Junção : G <- F[[F.cddisc=A.cddisc]] Atribuidas->A Projeção : PF <- G[[A.cdprof,A.cddisc]] Prod Cart: S <- P X F Subtração: W <- S – PF Junção : J <- W[[W.cdprof=p.cdprof]]Professores->P Junção : L <- J[[J.cddisc=D.cddisc]]Disciplinas->D Projeção : R <- L[[P.cdprof,P.nome,D.cddisc,D.nome]] ####################################################################################################################### Slides 49-50 -> AR3.txt passageiros viagens rotas passagens cidades +------+--------+ +--------+------+--------+ +------+--------+---------+ +------+--------+--------+ +--------+----------+ |cdpass|nomepass| |cdviagem|cdrota|dtviagem| |cdrota|cdorigem|cddestino| |cdpass|cdviagem|poltrona| |cdcidade|nomecidade| Respondendo... Nestas sequencias de AR não escrevi quais operações cada instrução significa. Deduza! Discuta, justifique, comprove sua hipótese. ----------------------------------------------------------------------------------------------------------------------- Slides 49-50 -> AR3.txt Quais os nomes dos Passageiros e as datas de viagens que passaram pela cidade de "São Paulo" (como origem ou destino)? S <- Cidades[[Cidades.NomeCidade="Sao Paulo"]] T1 <- S[[S.cdcidade=rotas.cdorigem]]Rotas T2 <- S[[S.cdcidade=rotas.cddestino]]Rotas W <- T1 U T2 K <- W[[K.cdrota=viagens.cdrota]]Viagens T <- K[[cdviagem,dtviagem]] W <- T[[t.cdviagem=Passagens.cdviagem]]Passagens R <- W[[cdpass,dtviagem]] K <- R[[R.cdpass=Passageiros.cdpass]]Passageiros W <- K[[nomepass,dtviagem]] ----------------------------------------------------------------------------------------------------------------------- Slides 49-50 -> AR3.txt Qual é a quantidade de assentos de cada viagem feita no mês de "Outubro de 2011" (Outubro tem 31 dias)? A <- Viagens[[dtviagem entre "2011-10-01" e "2011-10-31"]] B <- A[[A.cdviagem=Passagens.cdviagem]]Passagens B[[CONTA(Poltrona),cdviagem]]{agrupando por cdviagem}{ordenando por cdviagem} ----------------------------------------------------------------------------------------------------------------------- Slides 49-50 -> AR3.txt Quais são os nomes dos Passageiros e a quantidade de passagens que cada passageiro comprou no mês de "Novembro de 2011"? A <- Viagens[[dtviagem entre "2011-11-01" e "2011-11-30"]] B <- A[[A.cdviagem=Passagens.cdviagem]]Passagens C <- B[[CONTA(Poltrona)->Qa,cdpass]]{agrupando por cdpass}{ordenando por cdpass} D <- C[[C.cdpass=Passageiros.cdpass]]Passageiros D[[Nomepass,Qa]] ----------------------------------------------------------------------------------------------------------------------- Slides 49-50 -> AR3.txt Qual é a percentagem de aproveitamento dos assentos de cada viagem feita em Outubro de 2011? Considere que a quantidade máxima de assentos por viagem seja de 40 assentos. A <- Passagens[[(CONTA(Poltrona)/40)*100 ->Pa, cdviagem]] B <- A[[A.cdviagem=Viagens.cdviagem]]Viagens C <- B[[dtviagem entre "2011-10-01" e "2011-10-31"]] C[[cdviagem,Pa]] ----------------------------------------------------------------------------------------------------------------------- Slides 49-50 -> AR3.txt Mostre a lista de Cidades e a quantidade de viagens realizadas de/para cada cidade durante o ano de 2011. A <- Viagens[[dtviagem entre "2011-01-01" e "2011-12-31"]] B <- A[[A.cdrota=rotas.cdrota]]Rotas C <- B[[cdviagem, cdorigem, cddestino]] Do <- C[[C.cdorigem=cidades.cdcidade]]cidades Dd <- C[[C.cddestino=cidades.cdcidade]]cidades D <- Do U Dd D[[Nomecidade,CONTA(cdviagem)->CV]]{Agrupando por Nomecidade}{Ordenando por Nomecidade} ----------------------------------------------------------------------------------------------------------------------- Slides 49-50 -> AR3.txt Sendo a cidade de origem "São Paulo", mostre quantidade de passageiros por viagem realizada em ordem crescente de quantidade de passageiros e somente as viagens com mais de 10 passageiros. A <- Cidades[[Nomecidade='Sao Paulo']] B <- A[[A.cdrota=Rotas.cdrota]]Rotas C <- B[[B.cdrota=Viagens.cdrota]]Viagens D <- C[[C.cdviagem=Passagens.cdviagem]]Passagens D[[CONTA(Poltrona),cdviagem]]{Agrupando cdviagem tendo CONTA(Poltrona)>10}{Ordenando por CONTA(Poltrona)} ----------------------------------------------------------------------------------------------------------------------- Slides 49-50 -> AR3.txt Mostre a lista de cidades que não tiveram nenhuma viagem partindo ou chegando nela durante o mês de Outubro de 2011. A <- Viagens[[dtviagem entre "2011-10-01" e "2011-10-31"]] B <- A[[A.cdrota=rotas.cdrota]]Rotas C <- B[[cdorigem,cddestino]] D1 <- C[[C.cdorigem=cidades.cdcidade]]cidades D2 <- C[[C.cddestino=cidades.cdcidade]]cidades D <- D1 U D2 E <- D[[cdcidade, Nomecidade]] F <- Cidades - E