tema 6 - mapeamento do modelo entidade- relacionamento para o modelo relacional. tema 7 –...

46
Tema 6 - Mapeamento do Modelo Entidade-Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro.

Upload: marta-benevides-raminhos

Post on 07-Apr-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Tema 6 - Mapeamento do Modelo Entidade-Relacionamento para o Modelo Relacional.

Tema 7 – Introdução a Linguagem SQL.Professor Me. Jeferson Bussula Pinheiro.

Page 2: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Para início de Conversa!

Page 3: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Objetivos deste encontro• Objetivo da normalização• Funcionamento de cada forma normal (FN)• Melhor forma normal a ser utilizada• Transformar MER em modelo relacional• Linguagem de manipulação de dados. • Linguagem de definição de dados. • Tipos para definição de dados.

Page 4: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Objetivo da normalização

• Normalização é um recurso que evita anomalias na geração de tabelas para o modelo relacional, através da aplicação de regras sucessivas, conhecidas como formas normais (FN).

Page 5: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

1ª Forma Normal (1FN)

• Define que não devem existir campos multivalorados em uma tabela ou subgrupos de atributos repetidos.

Page 6: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

• Converter atributos não atômicos em atributos atômicos, impossibilitando a inserção de mais que um valor em cada campo de uma tabela.

• Eliminar os atributos repetidos, considerando-os elementos de uma nova tabela.

1ª Forma Normal (1FN)

Page 7: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

1ª Forma Normal (1FN)

O campo “itens” possui diversos valores, caracterizando um campo multivalorado.

Fonte: Caderno de atividades

Page 8: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

1ª Forma Normal (1FN)

Fonte: Caderno de atividades

• Eliminar os grupos de repetição.

Page 9: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Fonte: Caderno de atividades

Page 10: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

2ª Forma Normal (2FN)

• Toda relação deve estar na 1FN e deve-se eliminar dependências funcionais parciais, ou seja, todo atributo não chave deve ser totalmente dependente da chave primária.

Page 11: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Fonte: Caderno de atividades

Page 12: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Fonte: Caderno de atividades

Page 13: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

3ª Forma Normal (3FN)

• Toda relação deve estar na 2FN e deve-se eliminar dependências funcionais transitivas, ou seja, todo atributo não chave deve ser mutuamente independente.

Page 14: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Fonte: Caderno de atividades

Page 15: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

4ª Forma Normal (4FN)

• Deve estar na 3FN.• É baseada na remoção de

dependências multivaloradas, como é o caso de um provável campo que trate vários telefones.

Page 16: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Boyce and Codd Normal Form (BCNF)

• Uma relação está na BCNF se e somente se todo determinante é chave candidata.

• Um determinante é qualquer atributo do qual algum outro atributo é funcionalmente dependente.aluno

disciplina

instrutor

Page 17: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Continuando...

Page 18: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

DML, DDL, DCL! O que é isso?

• A linguagem SQL é composta por inúmeros comandos, os quais são agrupados da seguinte maneira:– Comandos que definem dados;– Comandos que manipulam dados;– Comandos de controle de dados.

Page 19: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

DML, DDL, DCL e SQL

Page 20: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

DDL

• CREATE TABLE – cria uma nova tabela (relação) no BD nova

tabela não possui dados• DROP TABLE

– remove uma tabela e sua instância do BD

• ALTER TABLE– altera a estrutura de uma tabela já existente

no BD

Page 21: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

CREATE TABLE• Cria uma nova tabela (relação)• Cria os atributos da nova tabela, com

– nome do atributo: Ai (1 <= i <= n)– tipo de dado (domínio do atributo): Di– restrições que atuam no atributo: Ri

Page 22: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

DROP TABLE

• Remove uma tabela existente do BD– Dados– Indices, etc.

• Usuários autorizados– Proprietário do banco de dados– DBA.

Page 23: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

ALTER TABLE

• Altera o esquema de uma tabela do BD

Page 24: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Exemplos de alter table

Page 25: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro
Page 26: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

DML• Insert

– Inserir dados • insert into aluno (id, nome) values (1, ‘Ana’);

• Update– Atualizar dados

• update aluno set nome =‘Ana’ where id = 1;• Delete

– Deletar dados• Delete from aluno where id = 1;

Page 27: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

DML

• Select– Selecionar dados

• Select * from aluno;

Page 28: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

DCL

• Revoke– Revogar permissões

• Grant– Conceder permissões

Page 29: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Exemplos de Tipos de Dados

• Numéricos– Integer, float, number ...

• Hora/Data– Date (YYYY-MM-DD), time (HH-MM-SS), ...

• Strings– Char, varchar, nchar, ...

• Binário– Blob, lob

• Etc.

Page 30: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Restrições de Integridade

• Valor nulo– representado por NULL – membro de todos os domínios

• Restrição NOT NULL– especificada quando NULL não é

permitido– proíbe que o atributo receba valor

nulo

Page 31: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Vamos Praticar!!??

Page 32: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

ExercíciosConsidere para um sistema de encomenda onde temos o seguinte documento.

Empresa e Cia, Ltda.Rua 15 de Novembro, 234– Campo Grande-MSCNPJ – 02.987.405.0001-60

Encomenda nº 2125Data: 05/02/2014

Cliente Jeferson Bussula PinheiroRua Semíramis, 234 Campo Grande-MS - CPF: 111.111.111.11

Código Descrição Qtde Desconto Preço Total

2 Impressora 3 0 230,00 690,005 Pen Drive 2 0 40,00 80,00

8 Not Book 1 0 2350,00 2350,00Total Encomenda 3120,00

Page 33: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

1. Quais os campos envolvidos na encomenda?

R: Cod_enc, Data_enc, CPF_cliente, nome_cliente, endereco_cliente, cod_produto, descricao_produto, qtde_produto, preco_produto, desconto, total_produto, total_encomenda

Page 34: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

2. Considerando o sistema de encomenda, aplique a 1FN (“Eliminar

os grupos repetidos”) .R:

Encomenda

Cod_enc

Data_enc

CPF_cliente

nome_cliente

endereco_cliente

total_encomenda

Encomenda_Produto

Cod_enc

cod_produto

descricao_produto

qtde_produto

preco_produto

desconto

total_produto

Page 35: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

3. Considerando o sistema de encomenda, aplique a 2FN. (“atributos não-chave são funcionalmente dependentes ”)

R:

Encomenda

Cod_enc

Data_enc

CPF_cliente

nome_cliente

endereco_cliente

total_encomenda

Encomenda_Produto

Cod_enc

cod_produto

desconto

qtde_produto

total_produto

Produto

cod_produto

descricao_produto

preco_produto

Page 36: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

4. Considerando o sistema de encomenda, aplique a 3FN. (“nenhum atributo não-chave funcionalmente de nenhum outro

atributo não-chave”).

R:Encomenda

Cod_enc

Data_enc

CPF_cliente

total_encomenda

Encomenda_Produto

Cod_enc

cod_produto

desconto

qtde_produto

total_produto

Produtocod_produto

descricao_produto

preco_produto

cliente

CPF_cliente

nome_cliente

endereco_cliente

Page 37: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro
Page 38: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

6. Informe pelo menos três tipos de dados que podemos definir nos campos em uma tabela no banco de dados relacional?

R:

Page 39: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro
Page 40: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Finalizando...

Page 41: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Revisando...

• Objetivo da normalização.– O grau de normalização possui

grande importância para definir o comportamento e a forma das tabelas, campos e registros.

Page 42: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

Formas normais

• 1FN– Excluir repetições.

• 2FN– Os campos devem ser dependentes

da chave primária.• 3FN

– Todo atributo não chave deve ser independente.

Page 43: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

• 4FN– Remoção das dependências.

• BCNF– Uma relação está na BCNF se e

somente se todo determinante é chave candidata.

– Dependência funcional.

Page 44: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

– Introdução SQL• DDL

– Tipo de dados• DML

– Insert, update, delete e select• DCL

– Administrativo

Page 45: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

• Transformar MER em modelo relacional– Atributos– Relacionamentos– Chaves primárias e estrangeiras

Page 46: Tema 6 - Mapeamento do Modelo Entidade- Relacionamento para o Modelo Relacional. Tema 7 – Introdução a Linguagem SQL. Professor Me. Jeferson Bussula Pinheiro

• Melhor forma normal a ser utilizada– Normalizar/Desnormalização