tópicos em banco de dados prof. edson scalabrin e aroldo vieira [email protected]

43
Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira [email protected]

Upload: internet

Post on 16-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Tópicos em Banco de Dados

Prof. Edson Scalabrin e Aroldo Vieira

[email protected]

Page 2: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Conceitos e Arquitetura

Page 3: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

O que é um SGBD

SGBD – Sistema Gerenciador de Banco de Dados.

DBMS – Data Base Management System

Sistema que visa gerenciar de modo adequado e eficiente as bases de dados

Page 4: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

DBMSAplicativos Usuários

Banco de dados

Visão simplificada de um sistema de banco de dados

Page 5: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

SGBD

Arquitetura – Visão Global

Nível ConceitualVisão da comunidade de usuários

Nível InternoVisão do armazenamento de dados

Nível ExternoVisão de cada usuário Visão de cada usuário

Page 6: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Vantagens do uso de DBMS

Redução de redundância de informações

Redução de inconsistência

Compartilhamento de informações

Manutenção da integridade dos dados

Independência de dados em relação ao aspecto físico de armazenamento

Page 7: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Vantagens do uso de DBMS

Reforço dos padrões da empresa

Melhoria na segurança das informações

Balanceamento das necessidades conflitantes

Page 8: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Objetos do DBMS

Page 9: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Objetos de um DBMS

Usuários / Autorizações / Papéis

Tabelas / Colunas

Nulos e defaults

Índices

Constraints de Integridade

Stored Procedures

Triggers

Page 10: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Objetos do DBMS

Conexões Client / Server

Controles de acessos multiusuários Integridade Segurança

Otimizador e Planos de acesso

Catálogo de dados

Logs

Page 11: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

DBMS Relacional

Page 12: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

DBMS Relacional

Representação dos dados em formas de tabelas, como conjunto de linhas e colunas Como conjunto não possui ordenação

Maior facilidade na implementação

Possuem regras para a nomenclatura

As tabelas devem estar normalizadas

Page 13: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

DBMS Relacional

Os arquivos obedecem a limitações que podem ser consideradas como relações matemáticas

Linhas

Colunas

Domínios => Reservatório de valores

Page 14: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

DBMS Relacional

Dicionário de dados integrado (catálogo)

Linguagem SQL padrão: DDL – Data Definition Language DML – Data Manipulation Language DCL – Data Control Language

Page 15: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

DBMS Relacional

Chave Primária (PK): Coluna(s) que identifica unicamente uma linha da tabela Não pode possuir valores nulos Não pode ter valores duplicados Não pode ter seus valores alterados

Chaves estrangeiras (FK): Coluna(s) cujos valores fazem referência a uma PK em outra tabela

Page 16: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Modelo Relacional

Formas Normais

Page 17: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Formas Normais

Regras desenvolvidas para: Evitar inconsistências lógicas nas operações de atualização das tabelas. Evitar redundância na organização das tabelas.

Primeira Forma Normal

SegundaForma Normal

TerceiraForma Normal

Diminui o desempenho

Aumenta as restrições

Page 18: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Primeira Forma Normal – 1FN

Definição: o domínio de todos os atributos das tabelas deve ser atômico (indivisível) Cada coluna da tabela deve conter só um tipo de

atributos

id_pessoaid_pessoa nome contatoTabela Pessoa

Não Satisfaz 1FN

Brigadeiro [email protected]

id_pessoaid_pessoa nome endereçoTabela Pessoa

telefone Satisfaz 1FN

email

Page 19: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Exercício – 1FN

Cadastro de clientes COD CLIENTE NUM_CPF_CGC VALOR_DEVEDOR

• Cadastro de clientes– COD CLIENTE– NUM_CPF_CGC– NUM_DV_CPF– NUM_CGC– NUM_DV_CGC– VALOR_EMPREST– VALOR JUROS– VALOR_CORR_MON

Não atende a 1FN

Atende a 1FN

Page 20: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Segunda Forma Normal – 2FN• Definição: cada tabela deve satisfazer a 1FN, cada

registro deve ter uma chave primária e cada campo não chave deve depender totalmente da chave primária.

Não Satisfaz 2FN

id_pessoaid_pessoa nome endereço conta saldo agência endereço_agência

os campos dependem apenas de parte da chave primária, alguns apenas de conta outros apenas de id_pessoa

chave primária: id_pessoa + conta

Satisfaz 2FN

conta saldo agência endereço_agência

id_pessoaid_pessoa nome endereço conta

chave primária: id_pessoa

chave primária: conta

Page 21: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Exercício – 2 FN

Peça_Carro Cod_peça Desc_peça Qtde_estoque End_local_estoque

• Peça_Carro– Cod_peça– Desc_peça– Qtde_estoque– Rua_End_local– Num_end_local– Etc_endereço

Não atende a 1FN

Atende a 1FN

Page 22: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Exercício – 2 FNPeça_Carro Cod_peça Desc_peça Qtde_estoque End_local_estoque

• Peça_Carro– Cod_peça– Desc_peça– Qtde_estoque– Cod_local_estoque

• Local_estoque– Cod_local_estoque– Rua_End_local– Num_end_local– Etc_endereço

Não atende a 2FN

Atende a 2FN

Page 23: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Terceira Forma Normal – 3FNDefinição: cada tabela deve satisfazer a 2FN e cada atributo não chave primária depende diretamente da chave primária.

Não Satisfaz 3FNconta saldo agência endereço_agência

id_pessoaid_pessoa nome endereço conta

o endereço da agência não depende da conta, mas da agência.

Satisfaz 3FN

endereço_agência

conta saldo agência

agência

Page 24: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Exercício – 3 FNNota_aluno Cod_aluno Nome_aluno Nome_disciplina Cod_professor Nota

• Aluno– Cod_aluno– Nome_aluno

• Disciplina– Cod_disciplina– Nome_disciplina– Cod_professor

• Nota_aluno– Cod_aluno– Cod_disciplina– Nota

Não atende a 3FN

Atende a 3FN

Page 25: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Comandos básicos de SQL

Page 26: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

SQL – Criação de tabela

CREATE TABLE tabela

(

coluna1 int not null,

coluna2 varchar(50) not null default (‘XX'),

coluna3 datetime not null default (getdate())

)

Page 27: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

SQL - Insert

Insert into tabela

(coluna, coluna)

Values

(valor_coluna, valor_coluna)

Page 28: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

SQL - Update

Update tabela

Set coluna = novo_valor

Where condição

Page 29: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

SQL - Delete

Delete from tabela

Where condição

Page 30: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

SQL – Seleção de dados

Select função(colunas), coluna

From tabela

Where condição

Order by coluna

Group by coluna

Having condição

Obs: having deve ser usado quando existir restrição e utilização de funções de grupo.

Page 31: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

SQL – Operadores do Where

= > < >= < >Between

In

Like

Is null

NOT (pode ser utilizado com todos os operadores)

Page 32: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

SQL – Funções de agrupamento

Sum ( n )

Avg ( n )

Min (exp )

Max (exp )

Count ( exp )

Page 33: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Exercício

Page 34: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Coluna Tipo Null Default Constraint

Id_aluno smallint N   PK

Nome_aluno Char(40) N ‘NP’  

Sexo_aluno Char(01) N   ‘M’ , ‘F’

Dt_nasc Smalldatetime      

Dt_alter_tab Datetime N GETDATE()  

Observacoes Varchar(250)      

Criar tabela aluno

Page 35: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Inserir as linhas abaixo

Id_aluno = 1 / Sexo_aluno = ‘X’

Id_aluno = 1 / Sexo_aluno = ‘M’

Id_aluno = 1 / Sexo_aluno = ‘F’

Observar as mensagens que ocorreram e o resultado final

Obs: Utilizar o query analizer e inserir as linhas utilizando o comando “insert into...”

Page 36: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Inserir as colunas em “aluno”

Cd_sit_aluno tipo smallint

Id_curso tipo smallint

Verificar a possibilidade de incluir restrição de “not null” para as novas colunas

Utilizar enterprise manager ou query analizer

Page 37: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Criar tabela “curso”

Id_curso tipo smallintNome_curso tipo char(30)Dt_implantação tipo smalldateDt_alt_tab tipo datetime

Considerar todos os campos sendo “not null”Incluir default “data atual” para dt_alt_tab

Inserir linhas nesta tabela

Page 38: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Criar tabela “situacao_aluno”

Cd_sit_aluno tipo smallintDesc_sit_aluno tipo char(30)Dt_alt_tab tipo datetime

Considerar todos os campos sendo “not null”Incluir default “data atual” para dt_alt_tab

Inserir linhas nesta tabela

Page 39: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Implementar Foreign key

Alterar a tabela “aluno”, implementando a integridade relacional com as demais tabelas criadas

Em caso de erro, verificar e acertar os dados nas tabelas, para não ferir a integridade

Page 40: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Select

Obter todos os alunos do sexo “M”

Obter todos os alunos do sexo “F”

Contar o total de linhas da tabela aluno

Contar a qtde de alunos do sexo “F” e “M”

Contar os alunos por curso

Contar os alunos por situação

Contar os alunos por curso e situação

Page 41: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Exercício

Page 42: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Exercício – Banco de dados

Definir modelo normalizado, para a questão apresentada anexa

Implementar e popular as tabelas do modelo

Page 43: Tópicos em Banco de Dados Prof. Edson Scalabrin e Aroldo Vieira avieira@bsi.com.br

Mãos à obra ! ! ! !