A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005.

Apresentações semelhantes


Apresentação em tema: "Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005."— Transcrição da apresentação:

1 Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005 Karine Reis Ferreira – Gilberto Câmara – Gilberto Ribeiro de Queiroz –

2 Modelo Orientado a Objetos Características (conceitos OO ) Coleção de objetos Objetos contêm atributos e métodos Objetos de mesmo tipo são agrupados em classes Relacionamentos entre classes: Generalização e especialização Agregação Composição

3 Modelo Orientado a Objetos Diagrama UML

4 Modelo Relacional Representa bancos de dados relacionais Dados são armazenados em tabelas compostas por colunas e linhas PROPRIETARIO CPFNOMERUANUMEROBAIRRO JOÃO DA SILVASAO JOAO HENRIQUE CARDOSO IMIGRANTE 1700 VILA JOSÉ DE SOUZA SAO JOAO 35 CENTRO NUMEROPROPRIETARIO_CPFAREA_TOTALAREA_CONST LOTE

5 Modelo Relacional Características: Consiste em um conjunto de tabelas ou relações formadas por linhas e colunas Cada coluna (campo): Representa um atributo Está associada a um domínio Cada linha (registro ou tupla): Representa um relacionamento entre um conjunto de valores para cada atributo

6 Modelo Relacional Conceito de relação Define uma tabela do banco de dados Domínio de um atributo: conjunto de possíveis valores Ex.: D 1 = { x | x -5 e x 5 } D 2 = { y | y 0 }

7 Modelo Relacional Conceito de relação Dados os domínios D 1, D 2,..., D n não necessariamente distintos, uma relação é definida como: R = { (d 1, d 2,..., d n ) | d 1 D 1, d 2 D 2,..., d n D n } O conjunto (d 1, d 2,..., d n ) de valores ordenados define uma tupla Uma relação é o conjunto de n-tuplas ordenadas, onde n define o grau da relação

8 AtributoDomínio cpfinteiro longo positivo nomeconjunto de caracteres ruaconjunto de caracteres numerointeiro positivo bairroconjunto de caracteres Modelo Relacional PROPRIETARIO CPFNOMERUANUMEROBAIRRO JOÃO DA SILVASAO JOAO HENRIQUE CARDOSO IMIGRANTE 1700 VILA JOSÉ DE SOUZA SAO JOAO 35 CENTRO Exemplo de relação

9 Modelo Relacional Super-chave: um ou mais atributos que permitem identificar cada registro da tabela como único. Chave candidata: corresponde a super-chave mínima, ou seja não existe sub- conjunto da super-chave. { cpf } chave candidata? { cpf, nome } chave candidata? Chave primária: chave candidata escolhida no projeto da tabela do banco

10 Chave primária: Coluna ou combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela Modelo Relacional CPFNOMERUANUMEROBAIRRO JOÃO DA SILVASAO JOAO HENRIQUE CARDOSO IMIGRANTE 1700 VILA JOSÉ DE SOUZA SAO JOAO 35 CENTRO chave primária PROPRIETARIO

11 Chave primária: Coluna ou combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela Modelo Relacional RUA TRECHO NUM_INICIAL NUM_FINAL BAIRRO SAO JOAO TRC SAO JOAO TRC CENTRO IMIGRANTES TRC CENTRO VILA 1 chave primária composta RUA

12 Modelo Relacional Chave estrangeira Coluna ou combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma outra tabela. Mecanismo que permite a implementação de relacionamentos em um banco de dados relacional.

13 Modelo Relacional Chave estrangeira MATRICULANOMECURSO 98765JoãoMAT 67765JoséBIO 84562MariaENG 34256LuisINFO AnaMAT 34529LuanaMAT CURSOIDTITULODURAÇÃO INFOInformática Indust.4 BIOBiologia4 ENGEngenharia Civil5 MATLicenciatura Mat.4 Curso Aluno Obs.: Através do relacionamento, evitamos a repetição de informações. relacionament o

14 Modelo Relacional Chave estrangeira Uma chave estrangeira não precisa ser uma chave primária na sua relação. Uma chave estrangeira não precisa ter o mesmo nome do que a chave primária correspondente na outra tabela (apenas o mesmo domínio).

15 Modelo Relacional Chave estrangeira impõe restrições que devem ser garantidas ao serem executadas no BD: Inclusão de uma linha na tabela que contém a chave estrangeira: Garantir que o valor da chave estrangeira exista na chave primária da outra tabela. Alteração do valor da chave estrangeira: O novo valor deve aparecer na coluna da chave primária referenciada.

16 Modelo Relacional Chave estrangeira impõe restrições que devem ser garantidas ao serem executadas no BD: Exclusão de uma linha da tabela que contém a chave primária referenciada por uma chave estrangeira: Não se exclui a linha caso exista um valor na tabela com a chave estrangeira. Remove-se também a linha com o valor de chave estrangeira. Valor da chave estrangeira é ajustado como NULL.

17 Modelo Relacional Chave estrangeira impõe restrições que devem ser garantidas ao serem executadas no BD: Alteração do valor da chave primária referenciada por alguma chave estrangeira: Propagar a modificação Não deixar que seja feita a modificação

18 Restrições de integridade Uma das funcionalidades básicas que todo SGBD deve oferecer. É uma regra de consistência de dados que é garantida pelo SGBD. Tipos de Restrições: Restrição de domínio Integridade de chave Integridade Referencial Modelo Relacional

19 Álgebra Relacional Conjunto de operações que usam uma ou duas relações como entrada e geram uma relação de saída operação (REL 1 ) REL 2 operação (REL 1,REL 2 ) REL 3 Operações básicas: Operações unárias: seleção, projeção, renomeação Operações binárias: produto cartesiano, união e diferença

20 Operadores da Álgebra Relacional Seleção: seleciona tuplas que satisfazem um certo predicado ou condição Clientes a) selecionar tuplas cujo nome = João nome=João (Clientes)

21 Operadores da Álgebra Relacional b) selecionar as tuplas de Clientes cujo registro > 1 registro>1 (Clientes) c) selecionar as tuplas de Clientes com registro > 1 e registro < 3 registro>1 registro < 3 (Clientes)

22 Operadores da Álgebra Relacional Projeção: gera novas relações excluindo alguns atributos exemplo: projete o atributo nome sobre a relação Clientes nome (Clientes) Clientes

23 Operadores da Álgebra Relacional União: união de atributos do mesmo domínio que estão em relações diferentes as relações devem possuir o mesmo número de atributos exemplo: encontre todos os clientes da agência que possuem conta corrente ou empréstimo. Relações existentes na agência: ContaCorrente e Emprestimo

24 Operadores da Álgebra Relacional União : nome (ContaCorrente) U nome (Emprestimo) = ContaCorrente Emprestimo Resultado da união

25 Operadores da Álgebra Relacional Diferença: tuplas que se encontram em uma relação, mas não em outra exemplo: encontre todos clientes sem empréstimo Resultado da diferença = - ContaCorrente Emprestimo nome (ContaCorrente) - nome (Emprestimo)

26 Operadores da Álgebra Relacional Produto Cartesiano Faz todas as combinações entre as tuplas de duas relações Gera uma nova relação formada pela união dessas combinações Exemplo: produto cartesiano entre os clientes e os empréstimos de Maria emprestimo.nome = Maria (ContaCorrente X Emprestimo)

27 Operadores da Álgebra Relacional Operadores derivados: Intersecção Seleciona tudo que está em ambas relações Exemplo: todos os clientes que possuem empréstimo Emprestimo ContaCorrente = Resultado da intersecção nome (ContaCorrente) nome (Emprestimo) U

28 Operadores da Álgebra Relacional Operadores derivados Junção Inclui um produto cartesiano, seguido de uma seleção (pode ter projeção ao final) Exemplo: nomes dos clientes com conta corrente e número de empréstimo: contacorrente.nome, emprestimo.emprestimo ( contacorrente.nome = emprestimo.nome ( ContaCorrente X Emprestimo )) contacorrente.nome, emprestimo.emprestimo ( ContaCorrente Emprestimo ))

29 Álgebra Relacional - Resumo

30 SQL - Structured Query Language Linguagem de consulta usada pela maioria de SGBD-R e SGBD-OR Baseada na álgebra relacional É divida em: Linguagem de definição de dados (DDL) Linguagem de manipulação de dados (DML) Definição de vistas Especificação de autorização Especificação de integridade Controle de transação

31 SQL - Structured Query Language Alguns comandos em SQL ComandosUsado paraTipo selectConsultar dadosDML insert, update, delete Incluir, alterar e remover dados DML commit, rollbackControlar transaçõesDML create, alter, dropDefinir, alterar e remover esquemas DDL

32 SQL - Structured Query Language Definição de esquema: Comando create table cria uma nova tabela create table r (A 1 D 1, A 2 D 2,...., A n D n,,...., ) A: nome do atributo D: domínio

33 SQL - Structured Query Language DomínioDescrição char(n)conjunto de n caracteres de tamanho definido varchar(n)conjunto de n caracteres de tamanho variável IntInteiro SmallIntInteiro numeric(p, d)real com precisão definida realreal com precisão dupla float(n)real com precisão de pelo menos n dígitos datedata com 4 dígitos para ano e 2 dígitos para mês e dia timehora do dia em horas, minutos e segundos

34 SQL - Structured Query Language Restrições de integridade: primary key (A j1, A j2,..., A jm ) unique key (A 1 ) foreign key (A) references T not null null check (P)

35 SQL - Structured Query Language Exemplos: create table cliente (nome char(20) not null, endereço char(30), cidadechar(30), primary key(nome)) create table contacorrente (númerochar(10) not null, bancochar(30), saldoreal, primary key(número), check (saldo > 0))

36 SQL - Structured Query Language Definição de esquema : comando drop table Elimina uma tabela do banco comando alter table Altera o esquema de uma tabela do banco

37 SQL - Structured Query Language Exemplos Remover uma tabela drop table clientes Adicionar uma nova coluna alter table cliente add RG char(10) Alterar o tipo de uma coluna alter table cliente modify RG char(20) Remover uma coluna alter table cliente drop column RG

38 SQL - Structured Query Language Consulta: Sintaxe do comando select : select [distinct] {*, coluna [alias], expressões [alias], funções [alias],...} from {tabelas [alias],} [where condição] [group by colunas] [having condição] [order by colunas [asc | desc]] [ ]: opcional { }: pode aparecer várias vezes | : mutuamente exclusivas (ou uma ou outra).

39 SQL - Structured Query Language OpçõesDescrição distinctIndica que as linhas duplicadas devem ser eliminadas do resultado *Indica que todas as colunas de todas as tabelas da cláusula from devem ser incluídas no resultado colunaColuna de uma tabela listada na cláusula from que deve ser incluída no resultado expressõesExpressões aritméticas envolvendo uma ou mais colunas das tabelas listadas na cláusula from funções Funções definidas em SQL como, por exemplo, funções de agregação, que calculam estatísticas sobre colunas (avg, min, max, count, etc)

40 SQL - Structured Query Language OpçõesDescrição aliasNome alternativo para uma coluna, expressão ou tabela tabelasUma ou mais tabelas envolvidas na consulta condição (where) Especifica um condição à qual as linhas das tabelas da cláusula from devem satisfazer para gerar uma linha do resultado group by colunas Indica que o resultado deve ser agrupado pelas colunas especificadas condição (having) Limita os grupos a serem mostrados àqueles satisfazendo a condição order byOrdenação do resultado, podendo ser crescente (asc) ou descescente(desc)

41 SQL - Structured Query Language Comando select e álgebra relacional: cláusula select implementa o operador projeção cláusula from implementa o produto cartesiano cláusula where implementa o operador de seleção

42 SQL - Structured Query Language Exemplos: alunodisciplinanota 001Banco de Dados Estatística Estatística Metodologia Banco de Dados Metodologia Física4.5 Alunos idnome 001João 002Maria 003Pedro 004Fabio 005José Matricula

43 SQL - Structured Query Language Exemplos – consulta simples: 1) Liste todos os alunos: SELECT * FROM alunos 2) Liste em ordem alfabética quais as disciplinas oferecidas: SELECT DISTINCT m.disciplina FROM matricula AS m ORDER BY m.disciplina ASC

44 SQL - Structured Query Language Resultado: 1) Liste todos os alunos: ID NOME João 2 Maria 3 Pedro 4 Fabio 5 Jose 2) Liste em ordem alfabética quais as disciplinas oferecidas: DISCIPLINA Banco de Dados Estatística Física Metodologia OBS: O Oracle não aceita a palavra AS nem ALIAS.

45 SQL - Structured Query Language Exemplos – consulta simples: 3) Selecione os códigos dos alunos que tiveram alguma nota maior do que 1 e menor do que 4: SELECT aluno FROM matricula WHERE nota BETWEEN 1 AND 4 SELECT aluno FROM matricula WHERE nota >= 1 AND nota <= 4 4) Selecione os nomes dos alunos que começam com a letra J e que tem a letra S: SELECT nome FROM alunos WHERE nome LIKE J% AND nome LIKE %s%

46 SQL - Structured Query Language Resultado: 3) Selecione os códigos dos alunos que tiveram alguma nota maior do que 1 e menor do que 4: ALUNO ) Selecione os nomes dos alunos que começam com a letra J e que tem a letra s: NOME Jose

47 SQL - Structured Query Language Exemplos – operador de agregação: AVG(…): média dos valores da coluna SUM(…): soma dos valores da coluna COUNT(…): número de valores na coluna MAX(…): maior valor na coluna MIN(…): menor valor na coluna Podem ser aplicados pra todos os registros de uma coluna ou para grupos de registros (usando o group by)

48 SQL - Structured Query Language Exemplos – operador de agregação: 5) Quantos alunos estão cadastrados no banco: SELECT COUNT(*) AS num FROM alunos 6) Quantos alunos estão matriculados em cada disciplina: SELECT disciplina, COUNT(*) AS num FROM matricula GROUP BY disciplina 7) Qual a média das notas de cada aluno: SELECT aluno, AVG(nota) AS media FROM matricula GROUP BY aluno

49 SQL - Structured Query Language Resultado: 5) Quantos alunos estão cadastrados no banco: NUM ) Quantos alunos estão matriculados em cada disciplina: DISCIPLINA NUM Banco de Dados 2 Estatística 2 Física 1 Metodologia 2 7) Qual a média das notas de cada aluno: ALUNO MEDIA

50 SQL - Structured Query Language Exemplos - junção: Usada quando precisamos de informações de mais de uma tabela A cláusula from define um produto cartesiano entre as relações T1 INNER JOIN T2: Só retornam as linhas que ocorrem em T1 e em T2. T1 LEFT JOIN T2: retornam todas as linhas que ocorrem em T1 e, se tiver ocorrência em T2, as linhas correspondentes de T2. T1 RIGTH JOIN T2: retornam todas as linhas que ocorrem em T2 e, se tiver ocorrência em T1, as linhas correspondentes de T1.

51 SQL - Structured Query Language Exemplos - junção: 8) Liste todos os alunos e quais disciplinas eles estão matriculados: SELECT nome, disciplina FROM alunos INNER JOIN matricula ON alunos.id = matricula.aluno 9) Selecione quais alunos tiveram nota menor do que 6.0: SELECT DISTINCT nome FROM alunos RIGHT JOIN matricula ON alunos.id = matricula.aluno WHERE nota < 6.0

52 SQL - Structured Query Language Resultado: 8) Liste todos os alunos e quais disciplinas eles estão matriculados: NOME DISCIPLINA JoãoBanco de Dados JoãoEstatística MariaEstatística MariaMetodologia PedroBanco de Dados JoseMetodologia JoseFísica 9) Selecione quais alunos tiveram nota menor do que 6.0: NOME Maria Jose

53 SQL - Structured Query Language Exemplos - junção: 10) Selecione todos os alunos e as disciplinas se o aluno tiver matriculado: SELECT id, disciplina FROM alunos LEFT JOIN matricula ON alunos.id = matricula.aluno 11) Para cada aluno selecione sua maior nota e armazene essa consulta em uma nova tabela: SELECT aluno, MAX(nota) AS notaMaxima INTONovaTabela FROM alunos INNER JOIN matricula ON alunos.id = matricula.aluno GROUP BY aluno

54 SQL - Structured Query Language Resultado: 10) Selecione todos os alunos e as disciplinas se o aluno tiver matriculado: ID DISCIPLINA Banco de Dados 1 Estatística 2 Estatística 2 Metodologia 3 Banco de Dados 5 Metodologia 5 Física 4 null 11) Para cada aluno selecione sua maior nota e armazene essa consulta em uma nova tabela: OBS: O comando INTO só funciona no Access, não funciona no Oracle nem no MySQL.

55 SQL - Structured Query Language Exemplos - subconsulta: 12) Selecione as disciplinas que os alunos João, Pedro e Fábio estão fazendo: SELECT nome, disciplina FROM alunos INNER JOIN matricula ON alunos.id = matricula.aluno WHERE nome IN (João, Pedro, Fabio) 13) Selecione quais alunos tiveram nota menor do que 6.0: SELECT nome FROM alunos WHERE id IN (SELECT DISTINCT aluno FROM matricula WHERE nota<6.0)

56 SQL - Structured Query Language Resultado: 12) Selecione as disciplinas que os alunos João, Pedro e Fábio estão fazendo: NOMEDISCIPLINA JoãoBanco de Dados JoãoEstatística PedroBanco de Dados 13) Selecione quais alunos tiveram nota menor do que 6.0: NOME Maria Jose

57 SQL - Structured Query Language Exemplos – operadores de conjunto (União): 14) Selecione os alunos: ( SELECT id FROM alunos) UNION (SELECT aluno FROM matricula) 15) Selecione os alunos (mantendo os alunos repetidos): ( SELECT id FROM alunos) UNION ALL (SELECT aluno FROM matricula) OBS: O comando UNION e UNION ALL não funciona no MySQL.

58 SQL - Structured Query Language Resultado: 14) Selecione os alunos: ID ) Selecione os alunos (mantendo os alunos repetidos): IDID

59 SQL - Structured Query Language Exemplos – operadores de conjunto (Interseção): 16) Selecione somente os alunos que estão matriculados, ou seja, que aparecem na tabela alunos e matricula:( SELECT id FROM alunos) INTERSECT (SELECT aluno FROM matricula) 17) Selecione somente os alunos que estão matriculados, ou seja, que aparecem na tabela alunos e matricula (mantendo os alunos repetidos): ( SELECT id FROM alunos) INTERSECT ALL (SELECT aluno FROM matricula)

60 SQL - Structured Query Language Resultado: 16) Selecione somente os alunos que estão matriculados, ou seja, que aparecem na tabela alunos e matricula: ID ) Selecione somente os alunos que estão matriculados, ou seja, que aparecem na tabela alunos e matricula (mantendo os alunos repetidos): OBS: O comando INTERSECT não funciona no MySQL e no Access OBS: O comando INTERSECT ALL não funciona no MySQL, no Access e no Oracle

61 SQL - Structured Query Language Exemplos – having: 18) Selecione os alunos que tiveram nota máxima maior que 8: SELECT aluno, MAX(nota) FROM matricula GROUP BY aluno HAVING MAX(nota) > 8 19) Selecione os alunos que estão matriculados em mais de 1 disciplinas: SELECT nome, count(*) FROM alunos AS a INNER JOIN matricul AS m ON a.id = m.aluno GROUP BY nome HAVING count(*) > 1

62 SQL - Structured Query Language Resultado: 18) Selecione os alunos que tiveram nota máxima maior que 8: ALUNO MAX(NOTA) ) Selecione os alunos que estão matriculados em mais de 1 disciplinas: NOME COUNT(*) Jose 2 João 2 Maria2

63 SQL - Structured Query Language Inserção: INSERT INTO alunos VALUES (001, 'João'); INSERT INTO alunos (id, nome) VALUES (002, 'Maria'); Remoção: DELETE FROM alunos; DELETE FROM matricula WHERE disciplina = Estatistica Alteração: UPDATE matricula SET disciplina = Estatistica I WHERE disciplina = Estatistica; UPDATE matricula SET nota = nota WHERE aluno = 001 AND disciplina = Banco de Dados;

64 SQL - Structured Query Language Controle de transação: begin transaction commit transaction rollback transaction Criação de índice: CREATE INDEX nome_idx ON alunos(nome); CREATE INDEX discip_idx ON matricula(disciplina);

65 SQL - Structured Query Language Restrições de integridade CREATE TABLE matricula ( aluno INTEGER NOT NULL, disciplinaVARCHAR(50)NOT NULL, nota REAL NULL CHECK (nota => 0 AND nota <= 10), PRIMARY KEY (aluno, disciplina), CONSTRAINT fk_aluno FOREIGN KEY (aluno) REFERENCES alunos(id) ); nulidade chave primária composta chave estrangeira Integridade semântica

66 Conversão E-R Modelo Relacional Entidades com atributos chaves bem definidos geram uma relação. Relacionamentos podem gerar uma relação adicionando-se os atributos chaves das entidades relacionadas e os atributos do relacionamento. Entidades com atributos chaves não bem definidos geram uma relação adicionando-se a chave da relação que dependem

67 Conversão E-R Modelo Relacional Exemplo: lote id area_total possui area_const proprietário nome cpf data 1n DER Relações Lote (id_lote, area_total, area_const) Lote_proprietario (id_lote, cpf, data) Proprietario (cpf, nome)

68 Conversão E-R Modelo Relacional Modelo ERModelo Relacional Classe de EntidadesTabela (Relação) EntidadeLinha (Tupla) AtributoColuna (Atributo) Atributo MultivaloradoTabela Auxiliar Atributo IdentificadorChave Atributo CompostoVárias Colunas RelacionamentoLigações

69 Conversão E-R Modelo Relacional Cada entidade é traduzida para uma tabela. Cada atributo (simples) da entidade define uma coluna da tabela. A coluna correspondente ao atributo identificador é chave primária Ex: lote id area_total area_const Lote(id_lote, area_total, area_const)

70 Conversão E-R Modelo Relacional Relacionamento A tradução do relacionamento depende da cardinalidade das entidades que participam do relacionamento. Formas básicas de tradução: Tabela própria Colunas adicionais dentro da tabela de entidade

71 Conversão E-R Modelo Relacional Relacionamento 1:N ou N:1 1n lote id area_total pertence area_const quadra area num Lote(id_lote, area_total, area_const, num_quadra) Quadra(num_quadra, area)

72 Conversão E-R Modelo Relacional Relacionamento N:N Lote(id_lote, area_total, area_const) Fronteira(id_lote, id_rua, num_inicial, num_final) Rua(id_rua, nome) nn lote id area_total faz fronteira area_const rua nome id num_inicial num_final

73 Conversão E-R Modelo Relacional Auto relacionamento Lote(id_lote, area_total, area_const) Composição(id_lote, id_lote_comp, quantidade) lote composto 1N quantidade

74 Conversão E-R Modelo Relacional Relacionamento múltiplo Lote(id_lote, area_total, area_const) Proprietario(cpf, nome) Contrato(id_contrato, documento) Lote_Prop_Contr(id_lote, cpf, id_contrato, data) lote possui proprietário contrato_compra_venda 1n n

75 Conversão E-R Modelo Relacional Especialização Solução 1 Quadra comercial (num_quadra, area, imposto_servico) Quadra_residencial (num_quadra, area, num_residencias) numero area quadra comercialquadra residencial valor_imposto_serviconum_residencias quadra e uma

76 Conversão E-R Modelo Relacional Especialização Solução 2 Quadra(num_quadra, area) Quadra comercial (num_quadra, imposto_servico) Quadra_residencial (num_quadra, num_residencias) numero area quadra comercialquadra residencial valor_imposto_serviconum_residencias quadra e uma

77 Passos na Modelagem de BD Requisitos: identificação dos dados Modelagem conceitual: mapear visão do usuário em um conjunto de dados descreve entidades, atributos e relacionamentos Implementação: esquema de banco de dados Projeto físico: estruturas de dados, métodos de acesso, segurança Identificação de Requisitos Modelo Conceitual Implementação Projeto Físico

78 Projeto Lógico de BD Normalização Processo pelo qual um esquema de tabelas (relações) insatisfatório é quebrado de forma que seus atributos formem relações menores que sejam mais adequadas: Sem redundância de informações Maior facilidade de manutenção Baseado em varias regras de normalização: 1 a forma normal 2 a forma normal 3 a forma normal

79 Normalização Ex. tabela não normalizada: num_solicdata_soliccod_funcnome_funccod_proddesc_prodquant_prod 00112/06/03func01Joao Silva2345papel /06/03func01Joao Silva2398tinta /06/03func01Joao Silva4300impressora1 solicitacao_compra

80 Problemas em uma tabela não normalizada: Redundância dos dados Possui vários grupos repetidos Anomalias de inserção Inserir um novo funcionário Inserir um novo produto Anomalias de atualização Alterar o nome de um funcionário Anomalias de remoção Remover um produto Normalização

81 1 a Forma normal: Uma relação esta na 1FN se, e somente se, todos os domínios contiverem apenas valores atômicos. Ou seja, uma relação está na 1FN quando seus atributos não contém grupos de repetição

82 Normalização 1 a Forma normal: num_soliccod_proddesc_prodquant_prod papel tinta impressora1 solicitacao_compra num_solicdata_soliccod_funcnome_func 00112/06/03func01Joao Silva solicitacao_produtos num_solicdata_soliccod_funcnome_funccod_proddesc_prodquant_prod 00112/06/03func01Joao Silva2345papel /06/03func01Joao Silva2398tinta /06/03func01Joao Silva4300impressora1 solicitacao_compra 1FN

83 Dependência funcional Dada uma relação R, o atributo Y de R e funcionalmente dependente do atributo X de R (R.X R.Y) se, e somente se, cada valor X em R for associado ao mesmo precisamente um valor Y em R ( a qualquer momento). Ex. cod_func nome_func cod_prod desc_prod num_solic, cod_prod quant_prod Normalização

84 2 a Forma normal: Uma relação está na segunda forma normal se, e apenas se, estiver na 1FN, e cada atributo não-chave for totalmente dependente da chave primária. Ocorre quando a chave primária é composta por mais de um campo. verificar se todos os campos que não fazem parte da chave dependem de todos os campos que compõem a chave. Se algum campo depender somente de parte da chave composta, então este campo deve pertencer a outra tabela. Normalização

85 2 a Forma normal: Normalização num_soliccod_prodquant_prod solicitacao_produtos cod_proddesc_prod 2345papel 2398tinta 4300impressora produtos num_soliccod_proddesc_prodquant_prod papel tinta impressora1 solicitacao_produtos 2FN

86 2 a Forma normal - resultado: Normalização num_soliccod_prodquant_prod solicitacao_compra num_solicdata_soliccod_funcnome_func 00112/06/03func01Joao Silva solicitacao_produtos cod_proddesc_prod 2345papel 2398tinta 4300impressora produtos

87 3 a Forma normal: Um relação está na terceira forma normal se e apenas se, estiver na 2FN, e não tiver dependências transitivas Dependência transitiva: ocorre quando um atributo não- chave, além de depender da chave primária da tabela, depende funcionalmente de outro atributo ou combinação de atributos não-chave. Em uma tabela na 3FN não existem atributos não-chave que tenham dependência de outros atributos não chave. Normalização

88 3 a Forma normal: Normalização solicitacao_compra num_solicdata_soliccod_func 00112/06/03func01 cod_funcnome_func func01Joao Silva funcionarios solicitacao_compra num_solicdata_soliccod_funcnome_func 00112/06/03func01Joao Silva 3FN

89 3 a Forma normal - resultado: Normalização num_soliccod_prodquant_prod solicitacao_compra num_solicdata_soliccod_func 00112/06/03func01 solicitacao_produtos cod_proddesc_prod 2345papel 2398tinta 4300impressora produtos cod_funcnome_func func01Joao Silva funcionarios


Carregar ppt "Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005."

Apresentações semelhantes


Anúncios Google