Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD ›...
Transcript of Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD ›...
![Page 1: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/1.jpg)
Colégio Técnico UniversitárioColégio Técnico UniversitárioDepartamento de InformáticaDepartamento de Informática
Banco de DadosProf. Stênio Sã
Material obtido a partir dos slides do curso do professor Weyler Lopes CEFETPI
![Page 2: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/2.jpg)
Parte IConceitos básicos
em Banco de dados
![Page 3: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/3.jpg)
![Page 4: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/4.jpg)
![Page 5: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/5.jpg)
![Page 6: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/6.jpg)
![Page 7: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/7.jpg)
![Page 8: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/8.jpg)
![Page 9: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/9.jpg)
![Page 10: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/10.jpg)
![Page 11: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/11.jpg)
![Page 12: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/12.jpg)
![Page 13: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/13.jpg)
![Page 14: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/14.jpg)
![Page 15: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/15.jpg)
![Page 16: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/16.jpg)
![Page 17: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/17.jpg)
![Page 18: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/18.jpg)
![Page 19: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/19.jpg)
![Page 20: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/20.jpg)
![Page 21: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/21.jpg)
![Page 22: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/22.jpg)
![Page 23: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/23.jpg)
![Page 24: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/24.jpg)
![Page 25: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/25.jpg)
![Page 26: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/26.jpg)
Parte IIModelagem de
dados: Modelo ER
![Page 27: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/27.jpg)
![Page 28: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/28.jpg)
![Page 29: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/29.jpg)
![Page 30: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/30.jpg)
![Page 31: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/31.jpg)
![Page 32: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/32.jpg)
![Page 33: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/33.jpg)
![Page 34: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/34.jpg)
![Page 35: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/35.jpg)
![Page 36: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/36.jpg)
![Page 37: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/37.jpg)
![Page 38: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/38.jpg)
![Page 39: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/39.jpg)
![Page 40: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/40.jpg)
![Page 41: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/41.jpg)
EXTENSÕES DO MODELO ERPossuem o objetivo de aumentar o poder de expressão do modelo provendo novos meios de representações.As principais extensões são:EspecializaçãoGeneralizaçãoHerança de Atributos Agregação No paradigma da Orientação a Objeto, veremos estes conceitos na modelagem de sistema através de Diagramas de Classes.
![Page 42: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/42.jpg)
EspecializaçãoDefinição de uma entidade que é um subconjunto de uma outra entidade
GeneralizaçãoDefinição de uma entidade que é um superconjunto de uma outra entidade
Na prática, uma especialização ou uma generalização produzem o mesmo conjunto de entidades. O que as diferem é a ordem que as entidades são geradas
![Page 43: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/43.jpg)
Agregação
Ocorre quando um conjunto de entidades e relacionamentos comportamse como se fosse uma entidade. Podendo desta forma associarcom com outras entidades.
![Page 44: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/44.jpg)
Outra Representação para Agregação
![Page 45: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/45.jpg)
Parte IIIModelo Relacional:
detalhamento
![Page 46: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/46.jpg)
CONCEITOS BÁSICOS
• O modelo relacional representa os dados num BD como uma coleção de tabelas (relações).• Cada tabela terá um nome, que será único, e um conjunto de atributos com seus respectivos nomes e domínios.• Todos os valores de uma coluna são do mesmo tipo de dados.
Exemplo de uma tabela:
![Page 47: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/47.jpg)
CONCEITOS BÁSICOS (continuação)
•Terminologia do modelo: Tabela é chamada de Relação Linha é chamada de Tupla Coluna é chamada de atributo
•Associado a um tipo de dados há um domínio.
•Um domínio D é um conjunto de valores atômicos. Exemplo: IdadeAluno: inteiro entre 16 e 70.
•Um esquema de relação R é denotado por R(A1,A2,...,An), onde é R representa um conjunto de atributos: R = {A1,A2,...,An}.
•O grau de uma relação é o número de atributos que seu esquema contém.
![Page 48: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/48.jpg)
CONCEITOS BÁSICOS (continuação)
•Um instante (snapshot) de relação r, do esquema R(A1, A2, ...,An), denotado por r(R), é o conjunto de ntuplas r = {t1,t2,...,tn}. Cada tupla t é uma lista ordenada de valores t = <v1,v2,...,vn>
•Uma instância r(R) é um subconjunto do produto cartesiano dos domínios de R.
•r(R) C (dom(A1) X dom(A2) X ... X dom(An))
![Page 49: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/49.jpg)
ASPECTOS IMPORTANTES DAS RELAÇÕES
•A ordem das tuplas e dos atributos não tem importância.
•Todo atributo possui valor atômico.
•Cada atributo numa relação tem um nome que é único dentro da relação.
•Todas as tuplas devem ser únicas (conjunto).
•A fundamentação matemática está sempre presente.
![Page 50: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/50.jpg)
CONCEITO DE CHAVE•Superchave Conjunto de um ou mais atributos que, tomados coletivamente nos permite identificar de maneira unívoca uma tupla em um conjunto de tuplas.
•Chave candidata É uma superchave para qual nenhum subconjunto possa ser uma superchave.
•Chave primária é a chave candidata que é escolhida pelo projetista para identificar tuplas dentro de um conjunto de tuplas.
![Page 51: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/51.jpg)
CHAVES DE UMA RELAÇÃO•Convencionase sublinhar os atributos que compõem a chave primária. Ex.:Empregado (Matrícula, Nome, Endereço, Função,Salário)
•Um mesmo atributo pode ter nomes diferentes nas diversas relações em que participa. Ex.: Empregado (Matrícula, Nome, Endereço, Função, Salário, Dep) e Departamento(CodDepart, Nome, Endereço)
•Atributos que representam diferentes conceitos podem ter o mesmo nome.
![Page 52: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/52.jpg)
RESTRIÇÕES DE INTEGRIDADE
• Integridade de Chave: Toda tupla tem um conjunto de atributos que a identifica de maneira única na relação.
• Integridade de Entidade: Nenhum valor de chave primária poderá ser NULO.
• Integridade Referencial: Uma relação pode ter um conjunto de atributos que contém valores com mesmo domínio de um conjunto de atributos que forma a chave primária de uma outra relação. Este conjunto é chamado chave estrangeira.
• Integridade Semântica: Define aspectos comportamentais do BD. Exemplo: Nenhum aluno que não cursou ICC poderá cursar Ling. de Programação.
![Page 53: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/53.jpg)
Parte IVmapeamento ER para o
modelo Relacional
![Page 54: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/54.jpg)
MAPEAMENTO ER > RELACIONAL
•Para cada modelo conceitual ER pode existir vários modelos Relacionais.
•A maioria das ferramentas de modelagem conceitual automatizam o mapeamento. Porém é importante conhecer as etapas deste mapeamento.
•A definição equivocada do modelo Relacional afeta a estrutura de todo o projeto.
•Muitas vezes a maneira como implementar as tabelas no modelo relacional dependem de decisões de projeto e não de regras préestabelecidas.
![Page 55: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/55.jpg)
Um simples exemplos de mapeamento
![Page 56: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/56.jpg)
ETAPAS DO MAPEAMENTO
ETAPA 1 Mapear todos os conjuntos de entidades não fracas.Caso exista atributo composto, inclua todos os atributos elementaresEscolha um dos atributos chave de E como chave primária para a relação
![Page 57: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/57.jpg)
ETAPAS DO MAPEAMENTO
ETAPA 1 Mapear todos os conjuntos de entidades não fracas.Caso exista atributo composto, inclua todos os atributos elementaresEscolha um dos atributos chave de E como chave primária para a relação
![Page 58: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/58.jpg)
ETAPAS DO MAPEAMENTO
Funcionário = {FNúmero, FNome, Endereço, Salário} Departamento = {DNúmero, DNome} Projeto = {PNúmero, PNome}
![Page 59: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/59.jpg)
ETAPAS DO MAPEAMENTO Funcionário = {FNúmero, FNome, Endereço, Salário} Departamento = {DNúmero, DNome} Projeto = {PNúmero, PNome}
![Page 60: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/60.jpg)
ETAPA 2Para cada conjunto de entidade fraca F no esquema ER criase uma relação R formada por todos os atributos do conjunto de entidade fraca, mais os atributos que são chave das entidades regulares com as quais a entidade se relaciona.
Dependente = {DependNome, FNúmero, DataNiver, Parentesco}
![Page 61: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/61.jpg)
ETAPA 3Relacionamentos de cardinalidade 1 para 1 devem ser identificados e escolhida a entidade que receberá os atributos do relacionamento, assim como qual a entidade que receberá a chave estrangeira.
Funcionário = {FNúmero, FNome, Endereço, Salário} Departamento = {DNúmero, Dnome, FNúmero, DataIni}
![Page 62: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/62.jpg)
ETAPA 4Para cada conjunto relacionamento de cardinalidade 1 para N, a chave primária da entidade que participa com cardinalidade N terá a chave primária da outra entidade como chave estrangeira.
Departamento = {DNúmero, Dnome, FNúmero, DataIni} Projeto = {PNúmero, Pnome, DNro}
![Page 63: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/63.jpg)
ETAPA 5Para cada relacionamento binário M:N criase uma nova relação
Participar = {FNum, PNum, horas}
![Page 64: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/64.jpg)
ETAPA 6Um relacionamento ternário produzirá uma relação
Oferecer = {OCod, CCod, FNum, Horário}
![Page 65: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/65.jpg)
ETAPA 7Existem duas maneiras de tratar atributos multivalorados no mapeamento:1) Sabendo uma estimativa do número de ocorrências do atributo. Assim, podese adicionar à ralação quantos atributos forem necessários.2) Caso do número de ocorrências do atributo seja indefinido, criase uma nova relação.
LocalDep = {DNúmero, Localização} Departamento = {DNúmero, Dnome, FNúmero, DataIni, local1, local2, local3}
![Page 66: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/66.jpg)
EXERCÍCIOBaseado no modelo ER, abordado em sala, para a Fórmula 1. Aplique todos os passos para o mapeamento ER > Relacional.
![Page 67: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/67.jpg)
Dúvidas?Dúvidas?
Página 67
![Page 68: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/68.jpg)
EXERCÍCIO (Última aula)Baseado no modelo ER, abordado em sala, para a Fórmula 1. Aplique todos os passos para o mapeamento ER > Relacional.
Página 68
![Page 69: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/69.jpg)
Comentários sobre Exercício
•Esquema muito simples de ser gerado;
•Aplicação da etapa 1, abordada na aula passada, define praticamente todas as tabelas;
•O fato do modelo ER ter sido representado através de uma ferramenta, facilita consideravelmente o processo de mapeamento;
Exemplos de Relações do Modelo
PILOTO(COD_PILOTO, NOME, DATA_NASC, COD_EQUIPE, COD_PAIS)EQUIPE(COD_EQUIPE, NOME, NOME, COD_PAIS)PAIS(COD_PAIS, NOME, POPULACAO)CIRCUITO(COD_CIRCUITO, NOME, EXTENSAO, COD_PAIS)
Página 69
![Page 70: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/70.jpg)
Página 70
Parte VLinguagem SQL
![Page 71: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/71.jpg)
Características comuns
• Estilo declarativo, não procedimental;
• Permite otimizações;
• Utilizadas por várias classes de usuários
• Sintaxe simples e bem definida
• Presente em todos os SGBDs Relacionais
• É incorporada comumente a uma outra linguagem;
• Não é uma linguagem completa como C, Java ou Delphi;
• Portável entre sistema operacionais;
Página 71
![Page 72: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/72.jpg)
Algumas Funcionalidades
• Uma série de comandos DDL para definição de dados
• Uma série de comandos DML para manipulação de dados
• Uma versão de SQL embutida em linguagens de programação
• Instruções para definição de visões (tabelas virtuais)
• Instruções para controle de autorização de acesso
• Instruções para controle de transações e concorrência
• Instruções para especificação de restrições de integridade
Página 72
![Page 73: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/73.jpg)
Instruções SQL/DDL
CREATE TABLE Permite a criação de uma tabela
CREATE TABLE Emp (EmpNume integer(5) not null, EmpNome char(30) not null, EmpFunc char(20) not null, DepNume integer(4) not null, EmpComi integer(10,2), EmpSala integer(10,2), primary key (EmpNume), foreign key has (DepNume) references Dept on delete restrict on update cascade );
Página 73
ponto-e-vírgula no final!!!!!
![Page 74: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/74.jpg)
ALTER TABLE Permite a alteração de uma tabelaalter table dept ADD (depsala integer(4));
DROP TABLE Permite a exclusão de uma tabela
Drop table EMP
CREATE INDEX Permite a criação de índice em uma tabela
CREATE unique INDEX EmpNum on Emp(EmpNume asc);
Página 74
![Page 75: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/75.jpg)
A Instrução SELECT
Permite a recuperação de dados em uma ou mais tabelas.Forma básica:
SELECT <lista de colunas> FROM <lista de tabelas>WHERE <critério de seleção>
Exemplos:SELECT EmpNome, EmpSalaFROM EMPWHERE DepNume > 10;
SELECT * FROM DEPT;
SELECT nome, matricula FROM cadastro WHERE nome like “%Silva%”;
Página 75
![Page 76: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/76.jpg)
Alguns operadores usados na cláusula WHERE:•BETWEEN .. AND ... (Entre dois valores (inclusive))•IN (....) (Lista de valores)•LIKE (Com um padrão de caracteres)•IS NULL (É um valor nulo)
Operadores negativos:• <> (Diferente)• NOT BETWEEN (Não entre 2 valores informados)• NOT IN (Não existente numa lista de valores)• NOT LIKE (Diferente do padrão de caracteres)• IS NOT NULL (Não é um valor nulo)
Página 76
![Page 77: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/77.jpg)
Funções de agregação•AVG () (Média do valor n, ignorando nulo)•COUNT () (Número de registros)•MAX () (Maior valor)•MIN () (Menor valor)•SUM () (Soma dos valores de n, ignorando nulo)
Estas funções podem ser usadas em conjunto com as seguintes cláusulas:• GROUP BY (Divide tuplas em grupos menores)• HAVING (Especifica grupos que são manipulados)
Exemplo: SELECT cod_curso, count(*) FROM matricula GROUP BY cod_curso HAVING count(*) > 10
(lista os cursos com mais de 10 alunos)
Página 77
![Page 78: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/78.jpg)
Produto Cartesiano Segue a mesma fundamentação da álgebra dos conjuntos
Exemplo: SELECT nome_curso, nome_aluno FROM matricula, curso
Produto Cartesiano com predicado de junção Permite associar tuplas de duas tabelas pela relação entre suas chaves primária e estrangeira; Produz resultado equivalente à cláusula JOIN que será abordada adiante;
Exemplo: SELECT nome_curso, nome_aluno FROM matricula, curso WHERE matricula.cod_curso = curso.cod_curso
(matricula.cod_curso = curso.cod_curso) é o predicado de junção
Página 78
![Page 79: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/79.jpg)
Produto Cartesiano Segue a mesma fundamentação da álgebra dos conjuntos
Exemplo: SELECT nome_curso, nome_aluno FROM matricula, curso
Produto Cartesiano com predicado de junção Permite associar tuplas de duas tabelas pela relação entre suas chaves primária e estrangeira; Produz resultado equivalente à cláusula JOIN que será abordada adiante;
Exemplo: SELECT nome_curso, nome_aluno FROM matricula, curso WHERE matricula.cod_curso = curso.cod_curso
(matricula.cod_curso = curso.cod_curso) é o predicado de junção
Página 79
![Page 80: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/80.jpg)
Junções
Maneira eficiente de consulta para dados de múltiplas tabelas Tipos de Junção:
INNER JOINOUTER JOINLEFT OUTER JOINFULL OUTER JOIN
Exemplo:SELECT customer.cust_id_n,
customer.cust_name_s, phone.phone_phonenum_s, phone.phone_type_s
FROM customer JOIN phoneON customer.cust_id_n =
phone.phone_custid_fn
Página 80
![Page 81: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/81.jpg)
Combinando Resultados de Diferentes Consultas
Permite que as operações básicas sobre conjunto possam ser aplicadas a conjuntos de tuplas. As cláusulas que define esta operação são:
UNIONINTERSECTEXCEPT
Exemplo:SELECT status_code_s, status_desc_sFROM status_1UNIONSELECT status_code_s, status_desc_sFROM status_1
Todas as 3 cláusula suprimem tuplas repetidas da relação gerada.
Página 81
![Page 82: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/82.jpg)
A Instrução INSERT
Permite a inserção de dados em uma tabela.Estrutura básica:
INSERT INTO <tabela> [<campos>]VALUES <valores>;
Estrutura completa:INSERT INTO <table_or_view_name>[(<column_name>,...)]{ {VALUES (<literal> |
<expression> | NULL | DEFAULT,...)} |
{<select_statement>} }
Exemplo:INSERT INTO DEPT (DepNome, DepOrca, DepLoc, DepNume)VALUES (‘Informática’, 100.000, ‘Prédio A’, 100);
Página 82
![Page 83: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/83.jpg)
A Instrução UPDATE
Permite a alteração de dados em uma tabela.Estrutura básica:
UPDATE <tabela> SET <campo> = <expressão>WHERE <condição>;
Estrutura completa:UPDATE <table_or_view_name>SET {<column_name> = <literal> |
<expression> | (<single_row_select_statement>) | NULL | DEFAULT,...}
[WHERE <predicate>]Exemplo:UPDATE EMPSET EMPSALA = EMPSALA * 1,2WHERE EMPSALA < 1000;
Página 83
![Page 84: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/84.jpg)
Página84
A Instrução DELETE
Permite a exclusão de dados em uma tabela.
Estrutura básica:DELETE FROM <tabela> WHERE <condição>;
Estrutura completa:DELETE FROM <table_or_view_name>WHERE <predicate>
Exemplo:DELETE FROM EMPWHERE EMPSALA > 5000;
![Page 85: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/85.jpg)
Página 85
Outras Instruções
MERGE Permite a combinação das instruções INSERT e UPDATE
Estrutura :MERGE INTO [<qualifier>.]<table_name1>USING [<qualifier>.]<table_name2> ON (<condition>)WHEN MATCHED THEN
UPDATE SET {<column> = {<expression> | DEFAULT},...}
WHEN NOT MATCHED THEN INSERT [(<column>,...)] VALUES (<expression> |
DEFAULT,...);
![Page 86: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/86.jpg)
Página 86
Outras Instruções
TRUNCATE equivalente ao DELETE, porém mais rápido. Não pode ser utilizado com a cláusula WHERE. Não permite exclusão em quando a tabela é referenciada por uma chave estrangeira.
Estrutura :TRUNCATE TABLE <table_name>
Como é mais eficiente que o DELETE, uma dica é excluir as integridades de referência a chave estrangeira para executar o TRUNCATE. Exemplo:
ALTER TABLE ORDER_LINE DISABLE CONSTRAINT FK_ORDLINE_PRODUCT;TRUNCATE TABLE PRODUCT
![Page 87: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/87.jpg)
Página 87
ExercíciosBaseado no modelo que representa um campeonato de Fórmula 1, elabore as seguintes consultas em SQL para prover as seguintes informações: Pilotos por Equipe Pilotos por Pais Pilotos por Pais utilizando a cláusula Quantidade de Pilotos por Pais Os 3 países com maior quantidade de pilotos Relação de Pilotos com seus respectivos países Quantidade de pontos por piloto Quantidade de pontos por equipe Vencedor do GP da Malásia Pilotos que mais pontuaram Pilotos que pontuaram Pilotos que ainda não pontuaram Pilotos com maior quantidade de pontos Pais como maior número de pilotos Equipe que nunca corre em casa Pilotos que pontuaram em casa
![Page 88: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/88.jpg)
Resolução dos Exercícios da Aula AnteriorBaseado no modelo que representa um campeonato de Fórmula 1, elabore as seguintes consultas em SQL para prover as seguintes inofrmações: Pilotos por Equipe Pilotos por Pais Pilotos por Pais utilizando a cláusula Quantidade de Pilotos por Pais Os 3 países com maior quantidade de pilotos Relação de Pilotos com seus respectivos países Quantidade de pontos por piloto Quantidade de pontos por equipe Vencedor do GP da Malásia Pilotos que mais pontuaram Pilotos que pontuaram Pilotos que ainda não pontuaram Pilotos com maior quantidade de pontos Pais como maior número de pilotos Equipe que nunca corre em casa Pilotos que pontuaram em casa
Página 88
![Page 89: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/89.jpg)
Resolução dos Exercícios da Aula Anterior
Pilotos por Equipeselect piloto.nome, equipe.nome from piloto, equipe where equipe.cod_equipe = piloto.cod_equipeorder by equipe.nome
Pilotos por Paisselect piloto.nome, pais.nome from piloto, pais where pais.cod_pais = piloto.cod_paisorder by pais.nome
Página 89
![Page 90: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/90.jpg)
Resolução dos Exercícios da Aula Anterior
Pilotos por Pais utilizando a cláusula join e a cláusula computeselect piloto.nome, pais.nome from piloto inner join pais on pais.cod_pais = piloto.cod_paisorder by pais.nomecompute count(piloto.nome) by pais.nomecompute count(piloto.nome)
Quantidade de Pilotos por Paisselect pais.nome, count(*)from piloto, pais where pais.cod_pais = piloto.cod_paisgroup by pais.nome
Página 90
![Page 91: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/91.jpg)
Resolução dos Exercícios da Aula Anterior
Os 3 paises com maior quantidade de pilotosselect top 3 pais.nome, count(*)from piloto, pais where pais.cod_pais = piloto.cod_paisgroup by pais.nomeorder by count(*) desc
Relação de Pilotos com seus respectivos países Diferentes tipo de Joinselect piloto.nome, pais.nomefrom piloto inner join pais on pais.cod_pais = piloto.cod_piloto
Página 91
![Page 92: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/92.jpg)
Resolução dos Exercícios da Aula Anterior
Os 3 paises com maior quantidade de pilotosselect top 3 pais.nome, count(*)from piloto, pais where pais.cod_pais = piloto.cod_paisgroup by pais.nomeorder by count(*) desc
Página 92
![Page 93: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/93.jpg)
Resolução dos Exercícios da Aula Anterior
Relação de Pilotos com seus respectivos países Diferentes tipo de Joinselect piloto.nome, pais.nomefrom piloto inner join pais on pais.cod_pais = piloto.cod_piloto
select piloto.nome, pais.nomefrom piloto left outer join pais on pais.cod_pais = piloto.cod_piloto
select piloto.nome, pais.nomefrom piloto Right outer join pais on pais.cod_pais = piloto.cod_piloto
select piloto.nome, pais.nomefrom piloto Full outer join pais on pais.cod_pais = piloto.cod_piloto
Página 93
![Page 94: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/94.jpg)
Resolução dos Exercícios da Aula Anterior
Criado view que converte colocacao em pontosdrop view resultado_pontoscreate view resultado_pontos as select cod_prova, cod_piloto, pontos = case when colocacao_final = 1 then 10 when colocacao_final = 2 then 8 when colocacao_final = 3 then 6 when colocacao_final = 4 then 5 when colocacao_final = 5 then 4 when colocacao_final = 6 then 3 when colocacao_final = 7 then 2 when colocacao_final = 8 then 1 end from resultado
Página 94
![Page 95: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/95.jpg)
Resolução dos Exercícios da Aula Anterior
Quantidade de pontos por piloto select p.nome, sum(pontos) somafrom piloto p, resultado_pontos rwhere p.cod_piloto = r.cod_pilotogroup by p.nomeorder by soma desc
Quantidade de pontos por equipeselect e.nome, sum(pontos) somafrom equipe e, piloto p, resultado_pontos rwhere p.cod_piloto = r.cod_piloto and e.cod_equipe = p.cod_equipegroup by e.nomeorder by soma desc
Página 95
![Page 96: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/96.jpg)
Resolução dos Exercícios da Aula Anterior
Vencedor do GP da Malásiaselect pil.nome from resultado r, prova p, pais pa, piloto pil, circuito c where c.cod_circuito = p.cod_circuito and p.cod_prova = r.cod_prova and pil.cod_piloto = r.cod_piloto and c.cod_pais = pa.cod_pais and pa.nome = "Malásia" and r.colocacao_final = 1
Pilotos que mais pontuaramselect p.nome, count(*) contfrom resultado r, piloto pwhere r.cod_piloto = p.cod_pilotogroup by p.nomeorder by c desc
Página 96
![Page 97: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/97.jpg)
Resolução dos Exercícios da Aula Anterior
Pilotos que pontuaramselect nome from piloto pwhere cod_piloto in (select cod_piloto from resultado r where p.cod_piloto = r.cod_piloto)
Pilotos que ainda não pontuaramselect nome from piloto pwhere cod_piloto not in (select cod_piloto from resultado r where p.cod_piloto = r.cod_piloto)
Página 97
![Page 98: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/98.jpg)
SUBCONSULTAS ANINHADAS
Mecanismos para aninhamento de consultas são suportados pelo SQL:
INselect nome from piloto pwhere cod_piloto in (select cod_piloto from resultado)(Relação do pilotos que pontuaram)
NOT INselect nome from equipe pwhere cod_equipe not in (select cod_equipe from piloto)(Relação de equipes sem pilotos)
Página 98
![Page 99: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/99.jpg)
SOMEselect nome from alunowhere cod_turma = 1 and nota > some(select nota from aluno cod_turma = 2)(Relação dos alunos da turma 1 cuja nota é maior que alguma nota da turma 2 )
ALLselect nome from alunowhere cod_turma = 1 and nota > all(select nota from aluno cod_turma = 2)(Relação dos alunos da turma 1 cuja nota é maior que todas as notas da turma 2 )
Página 99
![Page 100: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/100.jpg)
EXISTSselect nome from piloto pwhere exists in (select * from resultado r where p.cod_piloto = r.cod_piloto)(Relação do pilotos que pontuaram)
NOT EXISTSselect nome from piloto pwhere exists not in (select * from resultado r where p.cod_piloto=r.cod_piloto and r.colocaca_final= 1)(Relação do pilotos que não venceram corridas)
Vale observar que a cláusula EXISTS pode ser facilmente substituída pela cláusula IN. Porém, devese estar atento para as particularidades de cada uma delas.
Página 100
![Page 101: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/101.jpg)
CRIANDO PROCEDIMENTOS (PROCEDURES/FUNCTIONS)
•Um procedimento nada mais é que um bloco de comandos de comandos SQL que é executado quando invocado.
Exemplo: (MS SQL Server)
CREATE PROCEDURE INC_RES @cod_prova numeric, @cod_piloto numeric, @colocacao numeric AS INSERT INTO resultado values(@cod_prova, @cod_piloto, null, @colocacao,null, null)
excecutando o procedimento:
exec INC_RES (1, 2, 3)
Página 101
![Page 102: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/102.jpg)
Exemplo: (PostgreSQL)
CREATE FUNCTION um() RETURNS integer AS 'SELECT 1 AS RESULTADO;' LANGUAGE SQL;
excecutando o procedimento:
SELECT um() AS resposta; resposta 1
•No PostgreSQL procedimentos são denotados por Function, enquanto no SQL Server, por Procedure.
•Na verdade, uma Function é um procedimento que retorna valor.
•Para definir um Function que não retorna valor em PostgreSQL, o tipo de retorno deve ser declarado como opaque
Página 102
![Page 103: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/103.jpg)
CRIANDO TRIGGERS (GATILHOS)
•Uma trigger é uma ação que é automaticamente executada mediante a ocorrência de um determinado evento.•Esta ação é comumente um bloco de comandos SQL;•Este evento pode ser um INSERT, UPDATE, DELETE em alguma tabela do banco.
Exemplo: (PostgreSQL)
CREATE TRIGGER se_dist_existeBEFORE INSERT OR UPDATE ON filmes FOR EACH ROWEXECUTE PROCEDURE verificar_chave_primaria ('did', 'distribuidores', 'did');
Página 103
![Page 104: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/104.jpg)
Exemplo: (MS SQL Server)CREATE TRIGGER Inclui_Pontos ON [Resultado] FOR INSERTAS declare @cod numeric declare @pontos numeric declare @colocacao numeric select @colocacao = inserted.colocacao_final from inserted set @pontos = case when @colocacao = 1 then 10 when @colocacao = 2 then 8 when @colocacao = 3 then 6 when @colocacao = 4 then 5 when @colocacao = 5 then 4 when @colocacao = 6 then 3 when @colocacao = 7 then 2 when @colocacao = 8 then 1 end select @cod = cod_piloto from pontuacao where cod_piloto = (select cod_piloto from inserted) if @cod is null insert into pontuacao values (@cod, @pontos) else update pontuacao set pontos = pontos + @pontos where cod_piloto = (select cod_piloto from inserted)
Página 104
![Page 105: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/105.jpg)
Página 105
Parte V Normalização
![Page 106: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/106.jpg)
Introdução
Conjunto de técnicas baseadas na teoria da decomposição visando eliminar eventuais anomalias de atualização.
Anomalias de atualização são anomalias geradas nas bases de dados pelas operações de inserção, exclusão e alteração.
Assunto pertinente apenas ao universo dos BD relacionais.
Normalizar é decompor relações;
Objetivo
Definir regras para decompor as relações preservando as dependências funcionais e sem perdas de informações que representam entidades do mundo real.
Página 106
![Page 107: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/107.jpg)
1a. Forma Normal
Uma relação é dita estar na 1a. forma normal quando todos atributos contêm apenas valores atômicos, e também, todos atributos não contenham valores compostos.
Exemplo 1: Pessoa(cod, nome, profissoes)Onde profissoes agrupa um conjunto de profissões.
Exemplo 2: Pessoa(cod, nome, endereco(log,num,cep,cidade))Onde endereco é composto de outros atributos.
Vale ressaltar, que a 1a. Forma normal é relaxado em alguns SGBDs relacionais.
Página 107
![Page 108: Banco de Dados Prof. Stênio Sã › ~ssoares › conteudo › CTU › BD › BD_2007_ultima...Coluna é chamada de atributo •Associado a um tipo de dados há um domínio. •Um](https://reader036.fdocuments.net/reader036/viewer/2022070814/5f0dd7bd7e708231d43c5c32/html5/thumbnails/108.jpg)
2a. Forma Normal
Uma relação é dita estar na 2a. forma normal quando:4. Está em 1FN5. Todo atributo que não pertence à chave não depende apenas de uma
parte desta chave, mas de toda chave. Se apenas um subconjunto é suficiente para determinar funcionalmente um atributo não chave, a relação não está na 2FN.
Exemplo 1:Fornercedor(cod,nome,endereco,artigo,preco)
Página 108