Tópicos em Banco de Dados

Propaganda
Tópicos em Banco de Dados
Prof. Edson Scalabrin e Aroldo Vieira
[email protected]
Conceitos e Arquitetura
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
Visão simplificada de um sistema de banco de dados
Aplicativos
DBMS
Banco de dados
Usuários
Arquitetura – Visão Global
Nível Externo
Visão de cada usuário
Visão de cada usuário
Nível Conceitual
Visão da comunidade de usuários
Nível Interno
Visão do armazenamento de dados
SGBD
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
Vantagens do uso de DBMS
Reforço dos padrões da empresa
Melhoria na segurança das informações
Balanceamento das necessidades
conflitantes
Objetos do DBMS
Objetos de um DBMS
Usuários / Autorizações / Papéis
Tabelas / Colunas
Nulos e defaults
Índices
Constraints de Integridade
Stored Procedures
Triggers
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
DBMS Relacional
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
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
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

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
Modelo Relacional
Formas Normais
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
Segunda
Forma
Normal
Terceira
Forma
Normal
Aumenta as restrições
Diminui o desempenho
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
Tabela
Pessoa
id_pessoa nome contato
Não Satisfaz
1FN
Brigadeiro Franco
233-3932
[email protected]
Tabela
Pessoa
id_pessoa nome endereço telefone email
Satisfaz
1FN
Exercício – 1FN
Cadastro de clientes
COD CLIENTE
 NUM_CPF_CGC
 VALOR_DEVEDOR

Não atende a 1FN
Atende a 1FN
• Cadastro de clientes
–
–
–
–
–
–
–
–
COD CLIENTE
NUM_CPF_CGC
NUM_DV_CPF
NUM_CGC
NUM_DV_CGC
VALOR_EMPREST
VALOR JUROS
VALOR_CORR_MON
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.
chave primária: id_pessoa + conta
Não Satisfaz 2FN
id_pessoa nome endereço conta saldo agência endereço_agência
Satisfaz 2FN
chave primária: id_pessoa
id_pessoa nome endereço conta
chave primária: conta
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
Exercício – 2 FN
Peça_Carro
Cod_peça
 Desc_peça
 Qtde_estoque
 End_local_estoque

Não atende a 1FN
Atende a 1FN
• Peça_Carro
–
–
–
–
–
–
Cod_peça
Desc_peça
Qtde_estoque
Rua_End_local
Num_end_local
Etc_endereço
Exercício – 2 FN
Peça_Carro
Cod_peça
 Desc_peça
 Qtde_estoque
 End_local_estoque

Não atende a 2FN
Atende a 2FN
• 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
Terceira Forma Normal – 3FN
Definição: cada tabela deve satisfazer a 2FN e
cada atributo não chave primária depende
diretamente da chave primária.
id_pessoa nome endereço conta
o endereço da agência não
depende da conta, mas da
agência.
conta saldo agência endereço_agência
conta saldo agência
agência endereço_agência
Não Satisfaz 3FN
Satisfaz
3FN
Exercício – 3 FN
Nota_aluno
Cod_aluno
 Nome_aluno
 Nome_disciplina
 Cod_professor
 Nota

Não atende a 3FN
Atende a 3FN
• Aluno
– Cod_aluno
– Nome_aluno
• Disciplina
– Cod_disciplina
– Nome_disciplina
– Cod_professor
• Nota_aluno
– Cod_aluno
– Cod_disciplina
– Nota
Comandos básicos de SQL
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())
)
SQL - Insert
Insert into tabela
(coluna, coluna)
Values
(valor_coluna, valor_coluna)
SQL - Update
Update tabela
Set coluna = novo_valor
Where condição
SQL - Delete
Delete from tabela
Where condição
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.
SQL – Operadores do Where
=
>
<
>=
<>
Between
In
Like
Is null
NOT (pode ser utilizado com todos os operadores)
SQL – Funções de agrupamento
Sum ( n )
Avg ( n )
Min (exp )
Max (exp )
Count ( exp )
Exercício
Criar tabela aluno
Coluna
Tipo
Null
Id_aluno
smallint
N
Nome_aluno
Char(40)
N
Sexo_aluno
Char(01)
N
Dt_nasc
Smalldatetime
Dt_alter_tab
Datetime
Observacoes
Varchar(250)
N
Default
Constraint
PK
‘NP’
‘M’ , ‘F’
GETDATE()
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...”
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
Criar tabela “curso”
Id_curso
Nome_curso
Dt_implantação
Dt_alt_tab
tipo smallint
tipo char(30)
tipo smalldate
tipo datetime
Considerar todos os campos sendo “not null”
Incluir default “data atual” para dt_alt_tab
Inserir linhas nesta tabela
Criar tabela “situacao_aluno”
Cd_sit_aluno
Desc_sit_aluno
Dt_alt_tab
tipo smallint
tipo char(30)
tipo datetime
Considerar todos os campos sendo “not null”
Incluir default “data atual” para dt_alt_tab
Inserir linhas nesta tabela
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
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
Exercício
Exercício – Banco de dados
Definir modelo normalizado, para a
questão apresentada anexa
Implementar e popular as tabelas do
modelo
Mãos à obra ! ! ! !
Download