Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Projeto, SQL e Normalização
Bancos de Dados I
2
Relacionamentos N para N
Tabela auxiliar, ligada às duas tabelas que serão relacionadas Atributos vão para tabela auxiliar Tabela representada graficamente por um hexágono Manual para utilização dos modelos da Unisa Digital
3
Exemplo 1 1 N N Materiais Fornecedores Fornecimentos Mat Forn
Cod Forn CNPJ Materiais Fornecimentos Fornecedores Manual para utilização dos modelos da Unisa Digital
4
Operações Básicas Virou uma sigla popular as quatro operações básicas nos dados: C – (create) criar, inserir dados R – (Retrieve) recuperar U – (update) atualizar D – (delete) excluir Manual para utilização dos modelos da Unisa Digital
5
Comando select Comando para consulta a dados (R) sintaxe:
select <coluna1>, <coluna2>,..., <colunan> from <tabela1>, <tabela2>,...<tabelam> [where <condição>] Manual para utilização dos modelos da Unisa Digital
6
select No select, escolhemos quais colunas farão parte do resultado
As colunas devem pertencer a tabelas presentes no comando from Quando há colunas com o mesmo nome, diferencia-se colocando-se o nome da tabela antes do nome da coluna, separando por um ponto Manual para utilização dos modelos da Unisa Digital
7
select exemplos: select nome, salário from funcionários select código
from disciplinas Manual para utilização dos modelos da Unisa Digital
8
Exemplos Select * from funcionários where salário > 1200
select nome from alunos where curso = ‘computação’ Manual para utilização dos modelos da Unisa Digital
9
exemplos Select * from funcionários where nome like ‘José%’ select *
from disciplinas where nome like ‘%cálculo%’ Manual para utilização dos modelos da Unisa Digital
10
Mais sobre o from Várias tabelas podem ser colocadas no from
É feito um produto cartesiano entre as linhas das tabelas do from select * from funcionários, departamentos Manual para utilização dos modelos da Unisa Digital
11
Junção Para conseguir uma consulta que faz junção de duas tabelas ligadas, é preciso colocar a declaração de junção no where select * from funcionários, departamentos where coddep = código Manual para utilização dos modelos da Unisa Digital
12
Inner join Ao executar o comando
select * from ( funcionários inner join departamentos on funcionários.coddep = departamentos.código ) Temos como resultado a tabela em que aparecem somente os funcionários e departamentos que tenham ligações. A condição de junção tem que ser especificada Manual para utilização dos modelos da Unisa Digital
13
Outer Join Com o outer join, podemos exibir valores que NÃO possuem ligação com a outra tabela. Right para a tabela da direita Left para a tabela da esquerda Full para exibir todos os valores de ambas as tabelas Quando não há ligação, o outro lado aparece vazio (nulo) Manual para utilização dos modelos da Unisa Digital
14
Exemplos select * from ( funcionários left outer join departamentos on funcionários.coddep = departamentos.código ) from ( funcionários right outer join departamentos on funcionários.coddep = departamentos.código ) from ( funcionários full outer join departamentos on funcionários.coddep = departamentos.código ) Manual para utilização dos modelos da Unisa Digital
15
Left outer join Manual para utilização dos modelos da Unisa Digital
16
Right outer join Manual para utilização dos modelos da Unisa Digital
17
Full outer join Manual para utilização dos modelos da Unisa Digital
18
União Podemos unir o resultado de duas consultas com o comando union
As colunas do select devem ser compatíveis (mesmo tipo) nas consultas participantes Retorna uma tabela com as linhas das duas tabelas. Repetições são excluídas. Manual para utilização dos modelos da Unisa Digital
19
União - exemplo select nome, datanasc from alunos
where curso = “computação” union from funcionários where salário < 1000 Manual para utilização dos modelos da Unisa Digital
20
Funções de agregação min max avg sum count outras (depende do sistema)
Manual para utilização dos modelos da Unisa Digital
21
exemplos select sum(salário) from funcionários select count(*)
from alunos select min(dataingresso) where curso = “computação” select avg(mensalidade) from cursos Manual para utilização dos modelos da Unisa Digital
22
agrupamentos Quando não se quer agregar um valor total, mas sim agrupar as agregações de acordo com um valor. Ex: Salário médio por departamento. Compras totais por cliente. Número de clientes por estado, etc. Comando group by após o comando SQL Manual para utilização dos modelos da Unisa Digital
23
exemplos select CPF, avg(saldo) from contas group by CPF
select nome, avg(preço) from Produtos group by nome Manual para utilização dos modelos da Unisa Digital
24
Subconsultas Consultas dentro da condição where, usadas como conjuntos, e em outras situações inclusão em consulta: in not in colocados no where, verifica se a coluna está ou não no resultado da consulta Manual para utilização dos modelos da Unisa Digital
25
Exemplo select * from correntes
where cpf in (select cpf from poupanca) where cpf not in (select cpf from poupanca) Manual para utilização dos modelos da Unisa Digital
26
Mais exemplos select nome from contas where (cpf, nome, numag) in
(select cpf, nome, numag from poupança) from alunos where nome not in (“Jones”, “James”) Manual para utilização dos modelos da Unisa Digital
27
comparação Podemos comparar uma coluna a vários valores de uma outra consulta, através das palavras any (ou some), e all select * from funcionários where salário >= all (select valor from produtos) Manual para utilização dos modelos da Unisa Digital
28
Alterações nos dados Exclusão: comando delete
Alteração: comando update Inclusão: comando insert Criação de Tabelas: create table Alteração de Tabelas: alter table Criação de visão: create view Manual para utilização dos modelos da Unisa Digital
29
Ordem de atualização A ordem de atualização de tabelas pode fazer diferença Vamos supor que queremos dar aumento de 5% para quem ganha menos que 1000 reais (inclusive), e de 2% para quem ganha mais de 1000. Qual o erro a seguir ? Manual para utilização dos modelos da Unisa Digital
30
Teste Update funcionários set salário = salário * 1,05
where salário <=1000 set salário = salário * 1,02 where salário > 1000 Manual para utilização dos modelos da Unisa Digital
31
Exemplo Create table departamentos ( codigo integer not null,
nome varchar(30), sala integer, primary key (codigo)) Create table funcionarios ( chapa integer not null, nome varchar(50) not null, Coddep integer, foreign key (Coddep) references departamentos, primary key (chapa)) Manual para utilização dos modelos da Unisa Digital
32
Normalização Processo de retirada de DFs, diminuindo a redundância.
Na verdade, uma formalização do MER Anomalias: exclusão, alteração, inserção Formas Normais 1a. Forma Normal 2a. Forma Normal 3a. Forma Normal Forma Normal de Boyce-Codd Manual para utilização dos modelos da Unisa Digital
33
1a. Forma Normal Dados atômicos
Motivos: modelo físico, lógica de 1ª. ordem. Nome Telefone José João Maria Nome Telefones José , , João , Maria Manual para utilização dos modelos da Unisa Digital
34
1FN – outra abordagem Nome Jose silva Antonio santos Maria oliveira
sobrenome Jose Silva Antonio Santos Maria Oliveira Manual para utilização dos modelos da Unisa Digital
35
Dependência Funcional
Dada uma tabela r com esquema R, e A,B R A B (A determina funcionalmente B) é válida se para qualquer par de tuplas t1 e t2, se t1[A]=t2[A], então vale que t1[B]=t2[B] Manual para utilização dos modelos da Unisa Digital
36
Interpretação prática
DF indica que os atributos pertencem à mesma entidade:ex: CPF nome CPF endereço_rua CPF RG e RG CPF anel de dependências (chaves alternativas) Manual para utilização dos modelos da Unisa Digital
37
2a. Forma normal Chave: ISBN RGAutor Valem: RGAutorNomeAutor
Uma tabela está em 2a. Forma normal se não houver DFs parciais em relação à chave Ex: Chave: ISBN RGAutor ISBN RGAutor NomeAutor Título 1 1111 José XXX 2222 João 2 YYY 3333 Maria 3 ZZZ Valem: RGAutorNomeAutor ISBN Título Manual para utilização dos modelos da Unisa Digital
38
Decomposição É desejável uma decomposição sem perda de junção.
Se R,S é decomposição de P, teremos que: P = R S Uma decomposição é sem perda de junção se RS R ou RS S (a intersecção das tabelas deve ser uma chave Manual para utilização dos modelos da Unisa Digital
39
Junção Concatena tabelas a partir de linhas que tenham valores iguais em campos de mesmo nome. Ex: codigo descrição 1 XXX 2 YYY Nome Codigo AAA 1 BBB 2 CCC Nome Codigo descrição AAA 1 XXX BBB 2 YYY CCC Manual para utilização dos modelos da Unisa Digital
40
Solução da 2a. FN Decompor as tabelas:
Para cada DF parcial AB criar a tabela AB e tirar B da tabela original ISBN RGAutor 1 1111 2222 2 3333 3 ISBN Título 1 XXX 2 YYY 3 ZZZ RGAutor NomeAutor 1111 José 2222 João 3333 Maria Manual para utilização dos modelos da Unisa Digital
41
FNBC Se uma tabela tiver uma chave de uma única coluna, está em 2FN
Mas se houver outras DFs, pode haver redundâncias e anomalias. Ex: Alunos( RA, nome, Datanasc, curso, Nomecurso) Chave com 1 coluna 2FN ! Mas... Manual para utilização dos modelos da Unisa Digital
42
Exemplo RA Nome DataNasc CodCurso NomeCurso 1 José 01/01/80 BCC 2 João
02/01/80 3 Maria 03/02/81 4 Rafael 04/05/84 SI 5 Pedro 05/06/85 6 Ricardo 10/10/84 7 Henrique 8 Camila 9 Igor 08/07/79 10 Rogério 10/10/78 EC 11 Alexandre 11/11/77 12 Tatiana 04/07/78 13 Marcelo 14 03/06/70 Manual para utilização dos modelos da Unisa Digital
43
Exemplo Atendimento( CPFCli, CodAg, RGFFunc) Atendimento personalizado
RGFFuncCodAg Chave: CPFCli CodAg Exemplo: Manual para utilização dos modelos da Unisa Digital
44
Exemplo CPFCli CodAg RGFFunc 1111 123 321 1122 111 1133 2222 3333 4444
5555 6666 1234 7777 Manual para utilização dos modelos da Unisa Digital
45
3ª Forma Normal Uma tabela está em 3a. Forma Normal (3FN) se:
Para toda DF AB válida não trivial A é uma superchave B está contida em uma chave (B é primo). A tabela anterior está em 3FN. Sempre é possível preservar dependências com a 3FN Manual para utilização dos modelos da Unisa Digital
46
Quarta Forma Normal Uma relação está em Quarta Forma Nornal (4FN) se para toda DMV XY não trivial válida, X é uma superchave. Decomposição semelhante a da 3FN Manual para utilização dos modelos da Unisa Digital
47
Dependência de Projeção-Junção
Caso geral de DF e DMV Dados R1, R2, ... Rn, todos subconjuntos de R, vale a dependência de projeção junção denotada por JD(R1, R2, ... Rn) na tabela r se r = R1(r) R2(r) Rn(r) Manual para utilização dos modelos da Unisa Digital
48
Exemplo Fornecedor Peça Projeto SSS Parafuso ProjX Porca ProjY AAA WWW ProjZ Prego A DPJ DJ( Fornecedor Peça, Fornecedor Projeto, Peça Projeto ) é Válida: Manual para utilização dos modelos da Unisa Digital
49
Decomposição Fornecedor Peça SSS Parafuso Porca AAA WWW Prego
Projeto SSS ProjX ProjY AAA WWW ProjZ Peça Projeto Parafuso ProjX Porca ProjY ProjZ Prego Manual para utilização dos modelos da Unisa Digital
50
5ª. Forma Normal Uma tabela está na 5ª. Forma Normal quando para qualquer dependência de projeção junção JD(R1, R2, ..., Rn), R1, R2, Rn são chaves da tabela. Ou seja, não há redundância a ser eliminada com as projeções Manual para utilização dos modelos da Unisa Digital
51
Desnormalização Aumento do número de tabelas Menor redundância
Aumento do número de tabelas Consultas mais complexas e lentas Manter a redundância em alguns casos pode melhorar o desempenho de consultas Verificar o custo benefício entre consultas e atualizações (regra do 80/20 ) Manual para utilização dos modelos da Unisa Digital
52
Conclusão A Normalização é na verdade, uma formalização teórica do projeto conceitual. Com o projeto conceitual, em geral chegamos em 3a. Forma normal, no mínimo. Pode haver problemas com a FNBC se tivermos chaves compostas sobrepostas. Manual para utilização dos modelos da Unisa Digital
53
Conclusão (cont.) Senão, temos o projeto em 4FN.
A 5FN pode ser violada se tivermos relacionamentos triplos. Se substituirmos os relacionamentos triplos por 3 duplos, dificilmente haverá violação da 5FN. Manual para utilização dos modelos da Unisa Digital
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.