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

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

Banco de Dados Geográficos

Apresentações semelhantes


Apresentação em tema: "Banco de Dados Geográficos"— Transcrição da apresentação:

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

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 Modelos orientados a objetos coleção de objetos objetos contém atributos e métodos para acessar suas informações objetos do mesmo tipo são agrupado em classes Classe empregado atributos: nome, endereço métodos: define_nome, recupera_nome define_endereço, recupera_endereço

3 Modelo Orientado a Objetos
Diagrama UML Modelos orientados a objetos coleção de objetos objetos contém atributos e métodos para acessar suas informações objetos do mesmo tipo são agrupado em classes Classe empregado atributos: nome, endereço métodos: define_nome, recupera_nome define_endereço, recupera_endereço

4 Modelo Relacional Representa bancos de dados relacionais
Dados são armazenados em tabelas compostas por colunas e linhas PROPRIETARIO CPF NOME RUA NUMERO BAIRRO JOÃO DA SILVA SAO JOAO 180 HENRIQUE CARDOSO IMIGRANTE 1700 VILA 12 JOSÉ DE SOUZA 35 CENTRO LOTE NUMERO PROPRIETARIO_CPF AREA_TOTAL AREA_CONST 00001 00003 75.00 00039

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.: D1 = { x   | x  -5 e x  5 } D2 = { y   | y  0 } Domínio do atributo: conjunto de possíveis valores X = { x   | x  -5 e x  5 } Y = { y   | y  0 }

7 Modelo Relacional Conceito de relação
Dados os domínios D1, D2, ..., Dn não necessariamente distintos, uma relação é definida como: R = { (d1, d2,..., dn) | d1  D1, d2  D2,..., dn  Dn } O conjunto (d1, d2,..., dn) de valores ordenados define uma tupla Uma relação é o conjunto de n-tuplas ordenadas, onde n define o grau da relação Relação: define uma tabela no banco de dados. Dado os domínios D1, D2,..., Dn não necessáriamente distintos, uma relação é definida: R = { (d1, d2,..., dn) | d1  D1, d2  D2,..., dn  Dn } O conjunto (d1, d2,..., dn) de valores ordenados define um tupla. Uma relação é o conjunto de n-tuplas ordenadas, onde n define o grau da relação.

8 Modelo Relacional Exemplo de relação PROPRIETARIO Atributo Domínio
CPF NOME RUA NUMERO BAIRRO JOÃO DA SILVA SAO JOAO 180 HENRIQUE CARDOSO IMIGRANTE 1700 VILA 12 JOSÉ DE SOUZA 35 CENTRO Atributo Domínio cpf inteiro longo positivo nome conjunto de caracteres rua conjunto de caracteres numero inteiro positivo bairro conjunto de caracteres

9 Modelo Relacional Super-chave: Chave candidata: Chave primária:
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 Modelo Relacional Chave primária: chave primária
Coluna ou combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela chave primária PROPRIETARIO CPF NOME RUA NUMERO BAIRRO JOÃO DA SILVA SAO JOAO 180 HENRIQUE CARDOSO IMIGRANTE 1700 VILA 12 JOSÉ DE SOUZA 35 CENTRO

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

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 Curso relacionamento Aluno
CURSOID TITULO DURAÇÃO INFO Informática Indust. 4 BIO Biologia ENG Engenharia Civil 5 MAT Licenciatura Mat. relacionamento Aluno MATRICULA NOME CURSO 98765 João MAT 67765 José BIO 84562 Maria ENG 34256 Luis INFO Ana 34529 Luana Obs.: Através do relacionamento, evitamos a repetição de informações.

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 Modelo Relacional 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

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 (REL1)  REL2 operação (REL1,REL2)  REL3 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 nome (ContaCorrente) - nome (Emprestimo) ContaCorrente Resultado da diferença 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 nome (ContaCorrente) nome (Emprestimo) U Emprestimo ContaCorrente = Resultado da intersecção

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 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 Comandos Usado para Tipo select Consultar dados DML insert, update, delete Incluir, alterar e remover dados commit, rollback Controlar transações create, alter, drop Definir, alterar e remover esquemas DDL

32 SQL - Structured Query Language
Definição de esquema: Comando create table cria uma nova tabela create table r (A1D1, A2D2, ...., AnDn, <restrição de integridade1>, ...., <restrição de integridadek>) A: nome do atributo D: domínio

33 SQL - Structured Query Language
Domínio Descrição char(n) conjunto de n caracteres de tamanho definido varchar(n) conjunto de n caracteres de tamanho variável Int Inteiro SmallInt numeric(p, d) real com precisão definida real real com precisão dupla float(n) real com precisão de pelo menos n dígitos date data com 4 dígitos para ano e 2 dígitos para mês e dia time hora do dia em horas, minutos e segundos

34 SQL - Structured Query Language
Restrições de integridade: primary key (Aj1, Aj2, ..., Ajm) unique key (A1) 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), cidade char(30), primary key (nome)) create table contacorrente (número char(10) not null, banco char(30), saldo real, 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ções Descrição distinct Indica 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 coluna Coluna de uma tabela listada na cláusula from que deve ser incluída no resultado expressões Expressõ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ções Descrição alias Nome alternativo para uma coluna, expressão ou tabela tabelas Uma 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 (having) Limita os grupos a serem mostrados àqueles satisfazendo a condição order by Ordenaçã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: Alunos Matricula id nome 001 João 002 Maria 003 Pedro 004 Fabio 005 José aluno disciplina nota 001 Banco de Dados 6.0 Estatística 8.0 002 3.0 Metodologia 5.0 003 9.0 005 7.5 Física 4.5

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 1 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 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 2 4) 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 GROUP BY aluno

49 SQL - Structured Query Language
Resultado: 5) Quantos alunos estão cadastrados no banco: NUM 5 6) Quantos alunos estão matriculados em cada disciplina: DISCIPLINA NUM Banco de Dados Estatística Física Metodologia 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 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ão Banco de Dados João Estatística Maria Estatística Maria Metodologia Pedro Banco de Dados Jose Metodologia Jose Fí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 INTO NovaTabela FROM alunos INNER JOIN matricula GROUP BY aluno

54 SQL - Structured Query Language
Resultado: 10) Selecione todos os alunos e as disciplinas se o aluno tiver matriculado: ID DISCIPLINA 1 Banco de Dados 1 Estatística 2 Estatística 2 Metodologia 3 Banco de Dados 5 Metodologia 5 Física 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: NOME DISCIPLINA João Banco de Dados João Estatística Pedro Banco 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): UNION ALL OBS: O comando UNION e UNION ALL não funciona no MySQL.

58 SQL - Structured Query Language
Resultado: 14) Selecione os alunos: ID 1 2 3 4 5 15) Selecione os alunos (mantendo os alunos repetidos): ID ID

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

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 1 2 3 5 17) 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) 19) Selecione os alunos que estão matriculados em mais de 1 disciplinas: NOME COUNT(*) Jose 2 João 2 Maria 2

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 + 1.5 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, disciplina VARCHAR(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 Integridade semântica chave primária composta chave estrangeira

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 1 n DER Relações Lote (id_lote, area_total, area_const) Lote_proprietario (id_lote, cpf, data) Proprietario (cpf, nome) pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo)

68 Conversão E-R Modelo Relacional
Modelo ER Modelo Relacional Classe de Entidades Tabela (Relação) Entidade Linha (Tupla) Atributo Coluna (Atributo) Atributo Multivalorado Tabela Auxiliar Atributo Identificador Chave Atributo Composto Várias Colunas Relacionamento Ligações pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo)

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: area_total id area_const pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo) lote 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 pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo)

71 Conversão E-R Modelo Relacional
Relacionamento 1:N ou N:1 1 n lote id area_total pertence area_const quadra area num pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo) Lote(id_lote, area_total, area_const, num_quadra) Quadra(num_quadra, area)

72 Conversão E-R Modelo Relacional
Relacionamento N:N n lote id area_total faz fronteira area_const rua nome num_inicial num_final pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo) Lote(id_lote, area_total, area_const) Fronteira(id_lote, id_rua, num_inicial, num_final) Rua(id_rua, nome)

73 Conversão E-R Modelo Relacional
Auto relacionamento lote composto 1 N quantidade pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo) Lote(id_lote, area_total, area_const) Composição(id_lote, id_lote_comp, quantidade)

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

75 Conversão E-R Modelo Relacional
Especialização Solução 1 numero area quadra comercial quadra residencial valor_imposto_servico num_residencias quadra e uma pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo) Quadra comercial (num_quadra, area, imposto_servico) Quadra_residencial (num_quadra, area, num_residencias)

76 Conversão E-R Modelo Relacional
Especialização Solução 2 numero area quadra comercial quadra residencial valor_imposto_servico num_residencias quadra e uma pessoa (cpf, endereço) acesso (cpf,numero,data) contacorrente(numero,saldo) Quadra(num_quadra, area) Quadra comercial (num_quadra, imposto_servico) Quadra_residencial (num_quadra, num_residencias)

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 Sem redundância de informações
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: 1a forma normal 2a forma normal 3a forma normal

79 Normalização Ex. tabela não normalizada: solicitacao_compra num_solic
data_solic cod_func nome_func cod_prod desc_prod quant_prod 001 12/06/03 func01 Joao Silva 2345 papel 3 2398 tinta 2 4300 impressora 1

80 Normalização 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

81 Normalização 1a 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 1a Forma normal: solicitacao_compra 1FN
num_solic data_solic cod_func nome_func cod_prod desc_prod quant_prod 001 12/06/03 func01 Joao Silva 2345 papel 3 2398 tinta 2 4300 impressora 1 1FN solicitacao_compra num_solic data_solic cod_func nome_func 001 12/06/03 func01 Joao Silva solicitacao_produtos num_solic cod_prod desc_prod quant_prod 001 2345 papel 3 2398 tinta 2 4300 impressora 1

83 Normalização Dependência funcional cod_func  nome_func
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

84 Normalização 2a 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.

85 Normalização 2a Forma normal: solicitacao_produtos 2FN
num_solic cod_prod desc_prod quant_prod 001 2345 papel 3 2398 tinta 2 4300 impressora 1 2FN solicitacao_produtos produtos cod_prod desc_prod 2345 papel 2398 tinta 4300 impressora num_solic cod_prod quant_prod 001 2345 3 2398 2 4300 1

86 Normalização 2a Forma normal - resultado: solicitacao_compra produtos
num_solic data_solic cod_func nome_func 001 12/06/03 func01 Joao Silva produtos cod_prod desc_prod 2345 papel 2398 tinta 4300 impressora solicitacao_produtos num_solic cod_prod quant_prod 001 2345 3 2398 2 4300 1

87 Normalização 3a 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.

88 Normalização 3a Forma normal: solicitacao_compra 3FN funcionarios
num_solic data_solic cod_func nome_func 001 12/06/03 func01 Joao Silva 3FN funcionarios solicitacao_compra cod_func nome_func func01 Joao Silva num_solic data_solic cod_func 001 12/06/03 func01

89 Normalização 3a Forma normal - resultado: funcionarios
solicitacao_compra cod_func nome_func func01 Joao Silva num_solic data_solic cod_func 001 12/06/03 func01 produtos cod_prod desc_prod 2345 papel 2398 tinta 4300 impressora solicitacao_produtos num_solic cod_prod quant_prod 001 2345 3 2398 2 4300 1


Carregar ppt "Banco de Dados Geográficos"

Apresentações semelhantes


Anúncios Google