Professional Documents
Culture Documents
FUNDAMENTOS DE
BANCO DE DADOS
Fundamentos de
Banco de Dados
PRESIDENTE DA REPBLICA
MINISTRO DA EDUCAO
GOVERNADOR DO ESTADO
REITOR DA UNIVERSIDADE FEDERAL DO PIAU
SECRETRIO DE EDUCAO A DISTNCIA DO MEC
PRESIDENTE DA CAPES
COORDENADOR GERAL DA UNIVERSIDADE ABERTA DO BRASIL
DIRETOR DO CENTRO DE EDUCAO ABERTA E A DISTNCIA DA UFPI
ADMINISTRAO
ADMINISTRAO PBLICA
CINCIAS BIOLGICAS
FILOSOFIA
FSICA
LETRAS PORTUGUS
LETRAS INGLS
MATEMTICA
PEDAGOGIA
QUMICA
SISTEMAS DE INFORMAO
EQUIPE DE DESENVOLVIMENTO
TCNICA EM ASSUNTOS EDUCACIONAIS
EDIO
PROJETO GRFICO
DIAGRAMAO
REVISO ORTOGRFICA
REVISO GRFICA
M838f
CDD 005.74
2013. Universidade Federal do Piau - UFPI. Todos os direitos reservados.
A responsabilidade pelo texto e imagens desta obra do autor. O contedo desta obra foi licenciado, temporria e
gratuitamente, para utilizao no mbito do Sistema Universidade Aberta do Brasil, atravs da UFPI. O leitor se compromete
a utilizar o contedo desta obra para aprendizado pessoal, sendo que a reproduo e distribuio ficaro limitadas ao mbito
interno dos cursos. A citao desta obra em trabalhos acadmicos e/ou profissionais poder ser feita, com indicao da fonte.
A cpia desta obra sem autorizao expressa, ou com intuito de lucro, constitui crime contra a propriedade intelectual, com
sanes previstas no Cdigo Penal.
proibida a venda deste material.
11
UNIDADE 1
CONCEITOS E ESTRUTURA DE BANCO DE DADOS
Histrico
Evoluo
Objetivos Fundamentais dos Sistemas de Bancos de Dados
Abstrao de dados
Instncias e Esquemas
Independncia de Dados
Linguagens de Banco de Dados
Sistema de Gerenciamento de Banco de Dados
Recursos Humanos
Exerccios
23
11
11
12
14
15
16
16
17
18
20
UNIDADE 2
MODELAGEM DE BANCO DE DADOS
Conceitos
Restries de Mapeamento (Cardinalidades)
Notaes para os diagramas
Relacionamentos Especiais
Um Exemplo Resolvido
Exerccios
23
25
25
27
29
30
35
UNIDADE 3
MODELO RELACIONAL
Origens e Conceitos
lgebra Relacional
Normalizao Teoria das Dependncias
Exerccios
55
35
36
43
50
UNIDADE 4
LINGUAGEM SQL E USO DO MYSQL
Consideraes Iniciais
Usando o MySQL Workbench 5.0 OSS
Usando o DB Manager
Tpicos sobre MySQL
Exerccios
67
APNDICE - A
83
APNDICE - B
55
56
59
63
63
UNIDADE 1
Conceitos e Estrutura
de Banco de Dados
Resumindo
Este material destina-se a iniciar os alunos na rea de Banco de Dados, promovendo
esclarecimentos sobre esta poderosa forma de armazenar os valiosos itens de
informao das empresas.
CONCEITOS E ESTRUTURA
DE BANCO DE DADOS
Histrico
Nas dcadas de 60 e 70 do sculo passado, a computao
ganhou grande importncia na vida das pessoas, com o processamento e
armazenando de dados e informaes de importncia cada vez maior para
todos. Percebendo esta realidade, os profissionais da rea de Computao
fizeram pesquisas sobre como armazenar tais dados, de forma que estes
ficassem em locais seguros e de acesso bem organizado. Desta forma,
houve uma evoluo dos primitivos arquivos tipados para armazenagem de
dados at chegar aos Bancos de Dados, os quais so constitudos de suas
estruturas internas e seus mtodos de acesso.
Ao longo dos anos, a evoluo desta rea foi instituda com tcnicas
cada vez mais avanadas, de modo a gerenciar o acesso simultneo de
diversos usurios aos dados, sem corromp-los, alm de promover a
segurana destes e garantir a confiabilidade do Sistema de Banco de Dados
como um todo.
A busca pela evoluo das linguagens de programao, em nvel de
Banco de Dados prosseguiu, entretanto, alguns detalhes de padronizao
impedem que os Sistemas de Gerenciamento de Banco de Dados da
atualidade tenham implementaes totalmente compatveis com as linguagens
orientadas a objeto.
Evoluo
Os primeiros Sistemas de Bancos de Dados foram baseados na
estrutura de rvore. Seus algoritmos de organizao e acesso so bem
conhecidos por todos ns. A complexidade do uso deste tipo de estrutura
11
12
UNIDADE 1
13
Dados deve ter para comear a ser confivel, a fim de se tornar um SISTEMA
DE GERENCIAMENTO DE BANCO DE DADOS SGBD.
Abstrao de dados
O Conceito de Abstrao de Dados fundamental para o bom
entendimento do funcionamento de um Sistema de Banco de Dados. Ele
divide o Sistema em trs camadas, a fim de facilitar o trabalho de todos os
profissionais da rea, sejam aqueles que desenvolvem SGBDs ou aqueles
que desenvolvem aplicativos comerciais usando o SGBD.
O Primeiro nvel o FISICO Sendo o nvel mais baixo, definese aqui o modo como os dados so fisicamente armazenados, que tipo de
estrutura de dados se usa para implement-los, bem como o tipo de algoritmo
de segurana deve ser usado;
O Segundo nvel o CONCEITUAL Neste nvel so definidos quais
dados so armazenados no Sistema, e de que forma eles esto relacionados.
Este o nvel usado pelos Administradores de Bancos de Dados ou pelos
Desenvolvedores de Sistemas de Informao;
O Terceiro e ltimo nvel o das VISES Sendo o mais alto nvel de
abstrao, aqui os desenvolvedores mostram o que um Banco de Dados deve
apresentar aos usurios. Trata-se da viso que alguns funcionrios tero do
sistema de informao, tal como o funcionrio do caixa vai ter acesso tela
de vendas e faturamento, o vendedor vai ter acesso tela e ao banco de
realizao de pedidos e romaneios, e assim sucessivamente.
A figura a seguir ilustra esta organizao de um Sistema de Banco
de Dados.
14
UNIDADE 1
Viso
Viso
...
Viso
Nvel
Conceitua
Nvel
Fsico
Figura 1 Nveis de Abstrao de Dados
Instncias e Esquemas
Estes dois conceitos so muito polmicos na rea de Banco de
Dados, pois muitos autores fazem inverses de seus significados. Sero
apresentados aqui os significados de Instncias e Esquemas aceitos pela
maioria dos autores e tambm por aqueles mais respeitados. Talvez o grande
problema desta inverso esteja em tradues mal feitas de textos escritos
originalmente em Espanhol, j que neste idioma os significados destas
palavras so oficialmente invertidos em relao ao Portugus.
ESQUEMA Tambm conhecido como BANCO DE DADOS referese ao Banco de Dados vazio recm-instalado no computador ou ao Banco
de Dados apenas com o nvel Conceitual definido com apenas tabelas e
estruturas criadas sem dados inseridos ainda.
INSTNCIAS Tambm conhecidas como BASE DE DADOS,
referem-se aos dados que foram inseridos, estando a partir de ento sob
a responsabilidade do Banco de Dados. Esta a parte que vale outro na
organizao. o tesouro a ser guardado no cofre com segredos e sete
chaves.
Os Sistemas Gerenciadores de Bancos de Dados so vendidos em
lojas ou disponibilizados em stios da Internet, podendo ser baixados de
maneira livre. As Bases de Dados, por ser propriedade de alguma organizao,
no devem ser vendidas nem disponibilizadas em stios aleatoriamente, pois
nelas existem informaes confidenciais e de propriedade de algum ou
algum projeto de trabalho de uma empresa.
15
Independncia de Dados
Este um conceito fundamental em Banco de Dados. A Independncia
de Dados deve ser mantida em dois nveis pelo Sistema de Banco de Dados:
o Fsico e o Lgico.
Independncia Fsica de Dados a capacidade de se fazer
modificaes no nvel fsico dos dados, sem haver a necessidade de
reescrever os programas aplicativos que dependem destes dados. Neste
conceito comum acontecer mudanas de verso do SGBD com novas
implementaes para tipos de dados j conhecidos; porm, os tipos antigos
so mantidos em respeito a este importante conceito. Por exemplo: ao se
lanar uma nova verso de um SGBD relacional de nome Xis, o tipo String
melhorado e d origem ao novo tipo Varchar. Os dois tipos de dados passam
a conviver pacificamente no SGBD, a partir daquela verso, em respeito ao
conceito de independncia fsica de dados.
Independncia Lgica de Dados Trata-se da capacidade de
se modificar o esquema conceitual dos dados, sem precisar recompilar as
aplicaes que no dependam da modificao feita. Neste caso, muitas
das vezes se torna necessrio fazer acrscimos ou modificaes de alguns
campos em uma tabela do Sistema de Informao. Porm, aqueles mdulos
que no dependam diretamente desta alterao, no devem precisar tambm
ser recompilados.
16
UNIDADE 1
17
Recursos Humanos
Aqui sero definidas as pessoas que trabalham ou usam Banco de
Dados em suas atividades, com a classificao e a definio de cada grupo.
Classificar as pessoas que esto envolvidas com Banco de Dados uma
etapa muito importante para as definies de segurana, em nvel de usurios
e permisses de acesso.
18
UNIDADE 1
Usurios Especializados
Usurios Ingnuos
Comentrio
So os profissionais que usam muita DML, fazem requisies
ao DBA para criao de estruturas e, muitas das vezes,
possuem uma rea do Banco de Dados destinada aos testes
de seus programas.
No so necessariamente programadores, pois sabem usar a
DML para realizar suas tarefas sem, para isto, precisar criar
aplicativos.
So potencialmente perigosos, pois dominam a DML e suas
permisses de acesso devem ser cuidadosamente definidas,
a fim de evitar acessos indevidos aos dados no permitidos
a estes.
Estes usurios normalmente dominam alguma linguagem
de programao especfica para determinada rea. Seus
programas so estratgicos para algum departamento da
empresa, mas no para todos, o que no justifica deixar a
implementao destes a cargo dos programadores.
Um exemplo comum deste tipo de usurio so os estatsticos
da empresa que fazem estudos baseados em dados
armazenados. Nesta equipe de usurio, normalmente
encontrado tambm um profissional de Informtica para fazer
o suporte de Banco de Dados.
Esta a categoria dominante em quantidade, pois a imensa
maioria das pessoas que vo trabalhar usando um Banco de
Dados no entende muito de Informtica. Isto pode abranger
desde os membros da diretoria da empresa at os funcionrios
mais humildes.
So pessoas que desempenham seus papis dominando
muito pouco da tecnologia que usam.
Na prtica, necessrio criar algumas subclasses de usurios
dentro desta categoria.
Exerccios
1. Diferencie um SBD de um SGBD.
2. Por que programas pessoais de Banco de Dados como Access, Paradox,
Dbase e outros no podem ser considerados SGBDs?
3. Conceitue Independncia de Dados em seus dois aspectos.
4. Fale da evoluo dos modelos de Banco de Dados.
19
20
UNIDADE 1
UNIDADE 2
Modelo
Entidade-Relacionamento
Resumindo
Neste captulo so abordados os aspectos de projeto de um Banco de Dados Relacional,
atravs do Modelo Entidade-Relacionamentos. Para que um Banco de Dados Relacional
seja criado corretamente, fundamental saber fazer projetos lgicos e fsicos. Nesta
unidade so estudados os projetos lgicos. Os projetos fsicos fluem naturalmente aps
os estudos das duas unidades seguintes, principalmente aps a teoria de Normalizao
de tabelas e comandos de SQL.
MODELO ENTIDADERELACIONAMENTO
Conceitos
Estudo de Caso (Descrio de Minimundo) - Texto que descreve
detalhes levantados a respeito da situao e dos procedimentos a serem
modelados para Banco de Dados. O analista deve fazer entrevistas com as
pessoas interessadas em encomendar o sistema para identificar que tipo de
dado relevante para a programao e para o Banco de Dados.
Observao:
A partir deste ponto os nomes que sero mapeados para o Banco
de Dados sero grafados sem acentuao e sem cedilha. Esta prtica evita
problemas de implementao e execuo.
Entidades (Conjunto de Entidades) - um elemento da vida real,
na situao a ser modelada para o Banco de Dados, que pode ser distinguvel
dos demais, estando sempre representadas no plural. No Estudo de Caso,
normalmente, as entidades tm ligaes com os substantivos mais relevantes
do texto.
Relacionamentos (Conjunto de Relacionamentos) - So as ligaes
que devem existir entre as entidades. Uma vez que foram destacados os
substantivos que levaro s entidades, os relacionamentos so os verbos
que esto ligados a estes substantivos.
Ex.: (...) Os Alunos podem fazer apenas um curso por vez. (...)
Tem-se neste trecho duas entidades: ALUNOS e CURSOS. O
relacionamento entre estas entidades PODEM FAZER.
Atributos - So qualificaes pertencentes s entidades. Quando se
faz necessrio um relacionamento ter atributos, este ser elevado categoria
de entidade associativa, conforme ser visto posteriormente. No texto, os
23
24
UNIDADE 2
Uma chave estrangeira aparece com a sigla CE (ou FK) acima de seu
nome. Exemplo: codCursoCE.
25
ALUNOS
Figura 2 Uma entidade
DEPENDENTES
Figura 2.1 Uma entidade fraca
Nome
ALUNO
Figura 2.2 Uma entidade com atributos
Peter Chen
Matr*
Cod*
Nome
1..n
ALUNOS
Fazem/
feito por
1..1
Desc
CURSOS
James Martin
Matr*
Cod*
Nome
Desc
Fazem
ALUNOS
E feito por
CURSOS
26
UNIDADE 2
James Martin
Peter Chen
Um-para-um
1..1
1..1
Um-para-muitos
1..1
1..m
Muitos-para-muitos
m..n
m..n
1..5
2..3
Zero ou um-paramuitos
0..1
1..m
Um-para-zero,
ou muitos
1..1
0..m
Quantidades fixas
NO TEM
um
Relacionamentos Especiais
Alguns tipos de relacionamentos no se encaixam no padro visto
at agora. Dentre estes se destacam a GENERELIZAO e a AGREGAO.
Matr*
Nome
PESSOAS
-UM
ALUNO
PROFESSOR
27
Generalizao
Tambm conhecido como especializao, este tipo de relacionamento
muito importante quando uma entidade contm o geral que deve se tornar
especfica, ao ser usada a primitiva -um ou -uma. Segue uma ilustrao
que melhora a percepo deste conceito.
Projetos
Funcionrios
Equipamentos
Figura 2.5 Notao de agregao
Agregao
Uma limitao do modelo Entidade-Relacionamentos diz respeito
quantidade de elementos envolvidos em cada relacionamento. Em cada
ponta de um relacionamento deve haver apenas uma entidade. Sendo assim,
deve-se relacionar sempre duas entidades em cada relacionamento.
Em alguns estudos de casos podem ocorrer limitaes como: um
funcionrio que trabalha em um determinado projeto responsvel por
um dado equipamento. Neste caso fica clara a necessidade de fazer um
relacionamento ternrio (que no permitido) entre FUNCIONRIOS,
PROJETOS e EQUIPAMENTOS. Para resolver este problema existe a
agregao.
Resolvendo este caso, faz-se a agregao entre funcionrio e projeto
ligando estes dois aos equipamentos relacionados, conforme ilustra a figura
a seguir.
Desta forma, percebe-se que possvel adaptar um relacionamento
ternrio ao M E-R atravs do recurso da agregao, pois o relacionamento
28
UNIDADE 2
que est agregado passa a ser considerado pelo modelo, como sendo uma
grande entidade em relao terceira entidade envolvida.
Matr*
Nome
FUNCIONRIOS
Autorrelacionamento
Em muitos casos, necessrio relacionar uma entidade consigo
mesma. Estes so os conhecidos autorrelacionamentos. Um exemplo prtico
pode ser visto a seguir, onde, no caso, dentre todos os funcionrios, um
deles o chefe. Assim, o relacionamento deve sair da entidade e voltar para
a mesma, seja qual for a notao usada.
Um Exemplo Resolvido
Estudo de caso:
Uma empresa tem vrios funcionrios que so lotados em
departamentos. Um funcionrio est em apenas um departamento de cada
vez. Ao funcionrio dada a opo de ter dependentes. Cada departamento
responsvel por um projeto da empresa. Os dados mais importantes de
funcionrio so: matrcula, nome, CPF, endereo e telefone. Os dependentes
devem ter nome e cdigo. Cada departamento tem cdigo, sigla e nome
completo. Os projetos possuem cdigo, data de criao e prazo de execuo.
Pede-se que seja feito o diagrama de entidades-relacionamentos deste caso.
29
Matr*
Nom
CPF
CodDp
Sigla
Ender
Nom
Fone
Funcionrios
Departamentos
Dt_cria
CodDe
CodPj*
Nom
Dependentes
Praz
Projetos
Exerccios
1. Conceitue os elementos bsicos do modelo entidade-relacionamentos,
mostrando as notaes de cada um deles.
2. O que se entende por cardinalidade?
3. Em que situaes so usadas as entidades fracas?
4. Quando as agregaes so necessrias?
5. Uma notao de generalizao deve ser usada em qual caso
6. Faa o Diagrama Entidade-Relacionamentos do estudo de caso a seguir:
A empresa de organizao de festas infantis XPTO est precisando
de um sistema para gerenciar suas rotinas de trabalho. Deve-se fazer
um cadastro de clientes contendo (CPF, nome, endereo, telefone e
observaes). Os temas de festa tambm devem ser gerenciados pelo
sistema com os dados: cdigo, descrio, quantidade de alegorias,
dimenso da mesa, dimenso do painel e preo da diria. O contrato
do evento relaciona o cliente com o tema da festa, e conta ainda, com
os seguintes dados: cdigo, data de contratao, preo total, forma de
pagamento, sinal, parcelas, data da festa, data de devoluo e status.
7. Uma empresa faz o gerenciamento de seu pessoal. Todos so
cadastrados no sistema. Cada funcionrio pode ter dependentes, como
tambm pode optar por um plano de sade ofertado por uma entidade
conveniada com a empresa. Todo funcionrio est alocado em um
30
UNIDADE 2
31
UNIDADE 3
Modelo Relacional
Resumindo
Este modelo de banco de Dados foi escolhido para ser estudado nesta etapa do material
por que o modelo dominante no mundo h mais de 25 anos. O Banco de Dados
Orientado a Objetos ainda no se firmou como um modelo amplamente aceito no
mundo, nem sequer foi padronizado para tal, apesar de as linguagens de programao
terem evoludo do paradigma imperativo para as linguagens orientadas a objetos. O
Modelo relacional de Dados surgiu da ideia de melhorar as estruturas de suporte aos
dados existentes nos Bancos de Dados da poca dos modelos: Hierrquico e em Rede.
A ideia fundamental foi escapar dos grafos e rvores e seus algoritmos complexos e
alguns at sem soluo.
MODELO RELACIONAL
Origens e Conceitos
O Modelo Relacional foi criado por Codd em 1970, com forte
embasamento matemtico. Ideias baseadas na lgebra e na teoria dos
conjuntos, tm por finalidade representar os dados como uma coleo de
relaes, onde cada relao representada por uma tabela. Quando uma
relao pensada como uma tabela de valores, cada linha nesta tabela
representa uma coleo de dados relacionados, conhecidos por registro.
J para cada coluna da tabela d-se o nome de atributo, com o
mesmo significado de atributo visto no captulo anterior. Estes valores podem
ser interpretados como fatos descrevendo uma instncia de uma entidade ou
de um relacionamento. Os nomes da tabela e de suas colunas so utilizados
para facilitar a interpretao dos valores armazenados. Todos os valores em
uma coluna so necessariamente do mesmo tipo.
Na terminologia do modelo relacional, cada tabela chamada de
relao; uma linha de uma tabela chamada de tupla; o nome de cada
coluna chamado de atributo, e o tipo de dado que descreve cada coluna
chamado de domnio.
O conceito de chave vlido aqui tambm e tem as mesmas
caractersticas e classificaes j conhecidas.
As linguagens DDL e DML deste modelo so fundidas em uma s, que
conhecida atualmente pelo nome de SQL (Structured Query Language).
Isto porque no incio faltava definir as linguagens deste modelo, quando a IBM
lanou seu SGBD no mercado, o DB/2, ainda hoje muito popular e usado. Este
produto da big blue veio com linguagens DDL e DML inovadoras e unidas
numa s, a SeQueL. Da houve uma grande revoluo dentre aqueles que
pesquisavam na rea de Banco de Dados, no final dos anos 70 do sculo XX.
35
A linguagem criada pela IBM passou a ser adotada como o padro para todo
e qualquer Banco de Dados Relacional. Apenas o nome foi trocado pela hoje
to popular sigla de SQL, isto, pelo fato de sequel parecer palavra associada
a coisas ruins em alguns idiomas, inclusive em portugus, pois se assemelha
a sequela que significa coisa ruim.
O que tem de to bom na linguagem SQL que a teoria de Banco
de Dados Relacionais define a lgebra relacional e suas operaes, como
sendo a forma de se fazer criao de estruturas e manipulao de dados
dentro deste modelo. A linguagem criada pela IBM simplesmente implementa
em nvel de programao, cada operao da referida lgebra. Desta forma,
a teoria foi totalmente respeitada, nascendo um novo padro mundial em
computao.
Finalmente, garantir o sucesso total do modelo s falta definir
mecanismos para garantir a confiabilidade dos dados, preservando sua
integridade e mantendo o seu real sentido. O embasamento terico desta
caracterstica to importante fica por conta da Teoria das Dependncias,
tambm conhecida por Normalizao.
Normalizar um Banco de Dados significa aplicar um conjunto de
regras s tabelas e aos seus atributos, de maneira que estes fiquem divididos
dentro da forma que mais preserve seus significados e valores, evitando a
redundncia e o isolamento dos dados, garantindo o acesso facilitado queles
que tiverem o devido direito de t-lo.
Logo adiante, neste mesmo captulo, sero detalhadas as chamadas
CINCO FORMAS NORMAIS, que so as regras para aplicar a normalizao
em um Banco de Dados. Neste ponto, faz-se necessrio, primeiramente, um
estudo de lgebra relacional e SQL bsica.
lgebra Relacional
Esta uma linguagem de consulta procedural que ser detalhada em
suas operaes fundamentais e avanadas a partir deste ponto. J existem
diversas evolues de verso, tanto da lgebra relacional, quanto da SQL. A
seguir, sero vistas as operaes mais populares desta dupla.
a) Operao Seleo ()
Esta operao permite selecionar em uma tabela registros que
36
UNIDADE 3
Alunos
Tabela 1: Alunos
Matr*
Nome
Endere
Fone
CodCursoCE
123
Flvio Jos
5859-6930
01
205
Aline Maria
7452-8520
01
330
Jos Luiz
3358-9665
02
440
Clarita Silva
05
205
Aline Maria
(Alunos)
7452-8520
01
37
Flvio Jos
5859-6930
01
330
Jos Luiz
3358-9665
02
b) Operao Projeo ()
Esta operao simbolizada pela letra grega pi minscula e lista
apenas alguns campos da tabela. til quando, em alguns resultados, tornase importante omitir certos valores em cada registro da tabela. A sintaxe da
operao a seguinte:
38
UNIDADE 3
Matr*
Nome
123
Flvio Jos
205
Aline Maria
330
Jos Luiz
440
Clarita Silva
Nome
Endere
Fone
CodCursoCE
123
Flvio Jos
5859-6930
01
205
Aline Maria
7452-8520
01
330
Jos Luiz
3358-9665
02
440
Clarita Silva
6598-8754
05
39
Tabela 3 - Cursos
Codigo*
Descricao
cargaHoraria
01
Informtica
120
02
Veterinria
220
05
Agronomia
190
01 Informtica 120
02 Veterinria
220
05 Agronomia
190
40
UNIDADE 3
Tabela 5
Matr*
Nome
Endere
Fone
CodCursoCE
Codigo
Descricao
cargaHoraria
123 Flvio
Jos
Rua Pedro,
2290
5859-6930
01
01
Informtica
120
205 Aline
Maria
Rua
Pereira,
224
7452-8520
01
01
Informtica
120
330 Jos
Luiz
Rua Pedro,
450
3358-9665
02
02
Veterinria
220
440 Clarita
Silva
Rua
Riachuelo,
177
6598-8754
05
05
Agronomia
190
Cursos
Conceito: Unio-Compatvel
Diz-se que duas tabelas so unio-compatveis quando ambas tm
a mesma quantidade de campos com a mesma sequncia de domnios, ou
seja, para uma tabela de trs campos, sendo: um inteiro, um varchar (string)
e um lgico. A outra tabela ter obrigatoriamente: um inteiro, um varchar e um
lgico para ser unio-compatvel. Algumas operaes da lgebra relacional
so definidas sobre este conceito, tais como: unio, diferena e interseco.
41
Clientes
Cod*
Nome
Funcionrios
Fone
Matr* NomeF
FoneF
Ana
8855-2121
Jos
8101-8585
01
Flvio
9966-6363
120
02
Aline
9494-4477
121
Nome
Fone
01
Flvio
9966-6363
02
Aline
9494-4477
120
Ana
8855-2121
121
Jos
8101-8585
Clientes-Poupana
Clientes-ContaCorrente
Cod*
Nome
Fone
Matr* NomeF
FoneF
01
Flvio
9966-6363
120
Ana
8855-2121
02
Aline
9494-4477
121
Jos
8101-8585
01
Flvio
9966-6363
42
UNIDADE 3
02
Aline
9494-4477
Flvio
9966-6363
43
Existe uma exceo para esta forma normal, que o atributo endereo,
devido a uma polmica existente entre diversos autores de Banco de Dados,
onde alguns consideram que endereo uma grande string, e outros, porm,
entendem que endereo seja no-atmico e divisvel em seus componentes,
como: tipo de logradouro, nome do logradouro, nmero e complemento.
Neste material, as duas apresentaes deste campo sero
consideradas pertinentes, de acordo com a primeira forma normal.
Itens-Pedidos
codPed*
codProd*
quant
pre_total
qt_min
data_ped
10
25
123,00
58
07-04-2009
44
UNIDADE 3
codPed*
codProd*
quant
pre_total
10
25
123,00
Alunos
Matr*
Nome
Cd_curso
Desc_curso
Carga_hor
01
Flvio Jos
120
Aplicaes Financeiras
200
02
Aline Maria
125
Engenharia de Software
72
Cd_cursoCE
01
Flvio Jos
120
02
Aline Maria
125
45
Cursos
Cd_curso Desc_curso
Carga_hor
120
Aplicaes Financeiras
200
125
Engenharia de Software
72
46
UNIDADE 3
Fun-esp-lin
Matrcula* cdEspecialid* cdIdioma*
120
02
01
120
03
03
120
03
04
121
01
01
121
06
02
02
120
03
120
03
121
01
121
06
Fun-lin
Matrcula* cdIdioma*
120
01
120
03
120
04
121
01
121
02
Assim, resolve-se o problema da Dependncia Multi-Valorada
47
refAviao*CE
Trecho*CE
01
737-300
THE-REC
01
A320
REC-RIO
02
A330
RIO-BSB
02
FKK-100
BSB-THE
48
UNIDADE 3
Vo1
matPiloto*CE
refAviao*CE
01
737-300
01
A320
02
A330
02
FKK-100
Vo2
matPiloto*CE
Trecho*CE
01
THE-REC
01
REC-RIO
02
RIO-BSB
02
BSB-THE
Vo3
refAviao*CE
Trecho*CE
737-300
THE-REC
A320
REC-RIO
A330
RIO-BSB
FKK-100
BSB-THE
49
Exerccio
1. Discuta por que os Bancos de Dados Relacionais se tornaram um padro
respeitado mundialmente.
2. Como o uso do Modelo Entidades-Relacionamentos colabora com um
bom projeto de Banco de Dados Relacional?
3. Qual a ligao entre lgebra relacional e SQL?
4. Qual a importncia da normalizao das tabelas?
5. Observe a tabela:
ALUNOS
Matr*
Nome
Endere
Fone
Jos
Rua 12,12
3251-1414
Pedro
3366-3635
Ana
Av Rosas, 10
3458-9587
50
UNIDADE 3
normalizado.
13. Observe a tabela a seguir.
Matr*
Nome
Endere
Fone
Curso
Turma
CargaHor
Turno
Jos
Rua 12,12
3251-1414
Cincias
T02
120
Pedro
3366-3635
Fsica
T01
180
Ana
Av Rosas, 10
3458-9587
Tec. Veter
T01
125
51
52
UNIDADE 3
UNIDADE 4
Prticas com os
Softwares de Apoio
Resumindo
Nesta unidade ser tratada a parte prtica da disciplina, onde sero abordados
programas para fazer modelagem de estudos de casos, uso da linguagem SQL dentro
do SGBD MySQL, os quais todos os programas aqui utilizados so do tipo freeware ou
open source. Tambm esto todos entre os mais populares do mercado de trabalho
atual.
PRTICAS COM OS
SOFTWARES DE APOIO
Consideraes Iniciais
Os programas a serem abordados podem ser baixados na Internet, a
partir dos stios de seus produtores ou de alguns outros stios que distribuem
programas livres. A localizao dos endereos extremamente simples,
atravs do sistema Google (), bastando apenas digitar o nome do programa
no campo de busca.
Estes arquivos tambm sero disponibilizados pelo stio do ensino
distncia da Universidade Aberta do Piau/Plataforma Moodle.
Eis a lista dos programas a serem instalados para o devido
acompanhamento desta unidade:
1. MySQL Workbench 5.0 OSS Este programa serve para fazer
modelagem conceitual e fsica de Bancos de Dados Relacionais,
onde seu SGBD alvo o MySQL. Neste programa se faz Diagramas
Entidades-Relacionamentos e gera-se os scripts SQL para execuo
no SGBD MySQL. Alternativamente a este programa pode-se trabalhar
com o BDDesigner Fork 1.4;
2. MySQL 5 Este SGBD deve ser instalado em sua mquina,
recomendando instalao tpica. Na configurao, enquanto seus
conhecimentos de BD no evolurem mais um pouco, recomenda-se
que esta seja feita na base do avanar em todas as telas. Porm,
importante definir uma senha para o root, que o usurio principal
deste SGBD, pois deix-lo com senha vazia abrir uma importante
brecha na segurana de sua mquina quando entrar na Internet.
Use uma senha fcil de memorizar e de lembrar, pois precisaremos
dela em nossas prticas;
3. DB Manager Esta ferramenta serve de interface grfica para
55
56
UNIDADE 4
57
58
UNIDADE 4
Usando o DB Manager
Agora o script precisa ser adicionado ao seu servidor de Banco de
Dados. Para tanto, no menu Iniciar, procure o grupo DBTools software e
clique no atalho do DB Manager. Ser exibida a tela a seguir:
59
60
UNIDADE 4
61
62
UNIDADE 4
Exerccios
1.
63
APNDICE - A
MySQL Tutorial Bsico
Este texto foi adaptado a partir do tutorial escrito por Rafael V. Aroca
- rafael@linuxqos.cjb.net, disponvel em http://www.apostilando.com.
Esta seo destina-se ao estudo do SGBD MySQL, desenvolvido
pela TcX DataKonsultAB. O programa est disponvel para download em sua
verso original em www.mysql.com, em ingls, e tambm em www.mysql.
com.br para sua verso brasileira, onde se encontram tambm, projetos de
traduo e documentao do MySQL, em portugus.
Este SGBD, alm de oferecer vrios recursos no existentes em
outros, tem a vantagem de ser totalmente gratuito para uso, tanto comercial,
quanto privado, em conformidade com a licena pblica GPL.
As principais metas da equipe de desenvolvimento do MySQL
construir um servidor rpido e robusto.
Os recursos acima mencionados incluem:
- Capacidade de lidar com um nmero ilimitado de usurios;
- Capacidade de manipular mais de cinquenta milhes (50.000.000)
de registros;
- Execuo muito rpida de comandos, provavelmente o mais rpido
do mercado;
- Sistema de segurana simples e funcional.
So usurios do MySQL:
- Silicon Graphics (www.sgi.com)
- Siemens (www.siemens.com)
- Yahoo (www.yahoo.com)
- IFX Networks (www.ifx.com.br)
- Dezenas de Web hosting e Provedores, devido ao enorme sucesso
que o MySQL vem fazendo.
Algumas bases de dados chegam a mais de 200GB. A lista completa
pode ser consultada em www.mysql.com.
Operao Bsica
Supondo que o MySQL esteja devidamente instalado e funcionando,
seguem-se os comandos mais importantes para seu uso dirio. Estes
comandos podem ser usados via MySQL Command Line Client ou via um
Apndice
67
68
Apndice
Repare que todo comando ser seguido de ponto e vrgula, pois como
em C, a maioria dos comandos do MySQL so sucedidos por ponto e vrgula.
Antes de fazer qualquer coisa, seria interessante voc consultar a
ajuda, que listar os comandos disponveis neste momento da execuo do
MySQL. Isto deve ser feito atravs do comando help.
------------------------------------------------------------------mysql>help
...
------------------------------------------------------------------Muitas destas funes no sero usadas a princpio, mas algumas
merecem destaque e ateno especial neste momento, sendo elas: status,
connect, clear, e quit, que sero usadas com mais frequncia e por isso sero
facilmente lembradas.
Tabelas e campos
Neste ponto, fica claro toda a estrutura de um SGBD relacional, onde
so definidas as Bases de Dados que vo conter Tabelas com seus Registros
divididos em Atributos, e seus respectivos Domnios.
Observando tudo isto de fora, podemos formar o seguinte esquema:
Base de dados Tabela Registro Coluna (domnio)
Banco de dados Tabela Linha Campo
Os campos podem ser de diferentes tipos e tamanhos, permitindo
ao programador criar tabelas que satisfaam o escopo do projeto. A deciso
de quais campos usarem e quais no usar muito importante, pois influi
drasticamente na performance da base de dados que estamos desenvolvendo,
sendo portanto, um conhecimento slido destes conceitos.
Tais conceitos so parte fundamental de uma base de dados. no
atributo campos que as informaes ficam armazenadas. Para um melhor
aproveitamento da base de dados, antes de utilizar, deve-se definir os campos
que se deseja usar e especificar o que cada um pode conter.
Neste momento, a modelagem mostra-se vital para o bom
Apndice
69
CHAR(M)
Os campos CHAR so usados para caracteres alfanumricos, como
endereos e nomes. Seu tamanho fixo e instaurado ao ser criado. Um
campo do tipo CHAR pode ter de 1 a 255 caracteres.
Exemplo:
endereco_comercial CHAR(10);
Define um campo chamado 'endereco_comercial', que pode conter
at dez letras.
Observe que no h acentos no nome do campo, pois muitos
servidores no acentuam e sua tabela teria difcil acesso.
VARCHAR(M)
Sua estrutura e funcionamento so idnticos ao campo anterior, salvo
que no tipo CHAR, o tamanho definido fixo e mesmo no usado, aquele
espao em disco alocado.
J o campo VARCHAR, aloca apenas o espao necessrio para
gravao. Contudo, vale lembrar que trocamos espao por velocidade, pois
este campo 50% mais lento que o anterior.
Exemplo:
endereco_comercial VARCHAR(10);
Define um campo chamado endereco_comercial que pode conter at
dez letras. Se voc preencher apenas duas, o campo no ocupar todos dez
bytes, mas apenas dois.
70
Apndice
INT(M) [Unsigned]
O campo INT, como o prprio nmero diz, suporta o conjunto dos
nmeros inteiros numa variao de -2147483648 a 2147483647. O parmetro
Unsigned pode ser passado, excluindo os nmeros negativos, proporcionando
um intervalo de 0 at 4294967295.
Exemplos:
carros_estocados INT;
Inteiro vlido: -245
Inteiro vlido: 245
Inteiro invlido: 3000000000
carros_estocados INT unsigned;
Inteiro vlido: 245
Inteiro invlido: -245
Inteiro invlido: 3000000000
FLOAT[(M,D)]
Os pontos flutuantes (FLOAT) representam pequenos nmeros
decimais, e so usados para representar nmeros com maior preciso.
Exemplo:
voltagem_cadeira_eletrica FLOAT(4,2);
Float vlido: 324.50
DATE
Campo usado para armazenar informaes referentes data. A forma
padro 'AAAA-MM-DD', onde AAAA corresponde ao ano, MM ao ms, e DD
ao dia. Ele pode variar de 0000-00-00 a 9999-12-31.
O MySQL possui um conjunto poderoso de comandos de formatao
e manipulao de datas. Consulte documentao adicional, se houver
interesse.
Apndice
71
Exemplo:
data_de_nascimento DATE;
Data vlida: 1999-12-06
Data invlida: 1999-06-12
TEXT/BLOB
Os campos texto e blob so usados para guardar grandes quantidades
de caracteres, j que, podendo conter de 0 a 65535 bytes, so teis para
armazenar documentos completos, como este que voc est lendo.
A nica diferena entre os campos BLOB e TEXT, est no fato de um
campo TEXT no ser sensvel a letras maisculas e minsculas quando uma
comparao realizada e os BLOBs sim.
Exemplo:
relatrio BLOB;
BLOB vlido: 'Minha terra tem palmeiras onde canta o...'
relatrio TEXT;
TEXT vlido: 'A que saudades que eu sinto...'
SET
Um campo interessante que permite que o usurio faa uma escolha
dado determinado nmero de opes.
Cada campo pode conter at 64 opes.
Exemplo:
vicio SET("cafe", "cigarro") NOT NULL;
Neste exemplo o campo pode conter apenas os seguintes itens:
""
"cafe"
72
Apndice
"cigarro"
"cafe,cigarro"
ENUM
Este campo tem funcionamento semelhante ao SET, com a diferena
que apenas um valor pode ser escolhido.
Exemplo:
virtude ENUM("programar", "amar") NOT NULL;
Neste exemplo este campo pode conter os seguintes valores:
""
"programar"
"amar"
Registros
So conjuntos de campos relacionados. Um registro, portanto, pode
ter a seguinte estrutura:
nome CHAR(15);
email CHAR(25);
telefone INT;
Neste exemplo, o registro contm trs campos, podendo armazenar o
e-mail e o telefone de uma determinada pessoa. Observe que o campo nome
foi definido como CHAR, portanto, poder conter qualquer tipo de caractere.
J o campo telefone, definido como INT, poder apenas conter
nmeros, pois foi configurado como INT.
Tabelas
Um conjunto de registros forma uma tabela. As tabelas, portanto,
armazenam grande quantidade de dados.
Como no exemplo anterior, poderamos ter centenas de nomes
diferentes cadastrados em nossa tabela de pessoas, pois cada conjunto de
dados corresponde a um registro.
Apndice
73
74
Apndice
Exemplo:
Matricula INT PRIMARY KEY;
Esta declarao faz com que no seja permitido o cadastro de dois
registros com matrculas iguais na tabela.
- Auto-incremento:
Este recurso atribui ao campo de um novo registro, o valor do campo
gravado no registro anterior somado mais um.
Exemplo:
codigo INT AUTO_INCREMENT;
Soma automaticamente um a cada registro neste campo, comeando
a partir de um em diante.
Comandos relativos s tabelas:
Pode-se executar comandos para saber as condies que as tabelas
se encontram e tambm manipul-las.
Seguem os comandos fundamentais:
- Mostrar tabelas
Funo:
Lista todas as tabelas existentes no banco de dados atual.
Comando:
mysql>show tables;
- Mostrar colunas
Funo:
Mostra as informaes referentes estrutura, ou seja, as colunas das
tabelas desejadas.
Comando:
Apndice
75
Inserindo registros
Para se adicionar dados a uma tabela, usamos o comando INSERT,
que diz por si s sua funo, como o exemplo que segue:
----------------------------------------------------------------------mysql>INSERT INTO teste VALUES
mysql>(NULL, 'Ernesto', 'ernesto@nbsnet.com.br',
mysql>2742729);
----------------------------------------------------------------------Observaes:
- Apstrofes foram colocadas na entrada de campos tipo CHAR. Todos
os campos que contm texto, ou seja, CHAR, VARCHAR, BLOB, TEXT, etc.
tm de ficar entre apstrofes, ou, do contrrio, um erro ocorrer;
- Para campos do tipo nmero no se usa apstrofes.
- A entrada NULL em um campo do tipo auto-incremento, permite
que o MySQL providencie o contedo deste campo de forma automtica. No
caso do primeiro campo, o valor ser 1, no segundo 2 e no terceiro 3 e assim
consecutivamente.
- Se possussemos um campo DATE, a entrada NULL faria com que
o valor gravado no registro se tornasse a data atual.
Nota 1:
importante lembrar-se sempre de passar para o camando INSERT,
um nmero de parmetros igual ao nmero de campos na tabela que est
76
Apndice
Nota 2:
Uma das grandes vantagens do MySQL a capacidade de converter
campos com facilidade e sem problemas entre eles, ou seja, o sistema
converte automaticamente entre nmeros, caracteres e datas, sem causar
danos.
Pesquisando registros
As pesquisas no MySQL so feitas atravs do comando SELECT.
Este comando pode realizar desde uma simples e trivial pesquisa at uma
pesquisa extremamente complexa.
Exemplos:
Ao:
mysql>SELECT * FROM teste;
Resultado:
Lista todos os registros da tabela teste.
Ao:
mysql>SELECT * FROM teste
mysql>WHERE (nome = "Ernesto");
Resultado:
Lista todos os registros da tabela teste que contm "Ernesto" no
campo nome.
Nota:
Consulte maiores detalhes e estude mais itens relacionados a
pesquisas SQL. Voc pode economizar centenas de linhas de cdigos em
Apndice
77
Apagando registros
Quando um registro no nos mais til, podemos apag-lo, a fim de
que a tabela no contenha dados obsoletos.
Isto pode ser facilmente feito usando o comando DELETE, que tem o
funcionamento semelhante ao comando INSERT.
Ao:
mysql>DELETE FROM teste
mysql>WHERE (telefone = 2744747);
Resultado:
Apaga da tabela teste todos os registros que tm o contedo
"2744747" no campo telefone.
Alterando registros
Esta operao vital, pois se um dado muda no universo da tabela,
ele deve ser alterado tambm na Base de Dados. Para tal, existe o camando
UPDATE.
Observe os exemplos:
Ao:
mysql>UPDATE teste SET nome = 'Nonato'
mysql>WHERE nome = 'Ernesto';
Resultado:
Procura na tabela um registro que contenha no campo nome o
contedo 'Ernesto', definido pelo comando WHERE. Encontrado o registro,
ele substitudo pelo nome definido no comando SET, que 'Nonato'.
Comandos avanados
A partir deste ponto, mostraremos alguns comandos avanados do
MySQL:
78
Apndice
Operadores lgicos:
O MySQL suporta todas operaes lgicas, estando abaixo listadas
as mais conhecidas:
AND (&&)
Este operador implementa o E lgico entre duas clusulas. Observe
o exemplo:
----------------------------------------------------mysql>SELECT * FROM teste WHERE
mysql>(nome = "Aline") AND
mysql>(telefone = 2728918);
----------------------------------------------------Esta pesquisa mostrar todos os registros que contm no campo
nome e contedo "Aline"; E (AND) no campo telefone, o contedo 2728988.
OR (||)
Este operador implementa o OU lgico entre duas clusulas.
----------------------------------------------------mysql>SELECT * FROM teste WHERE
mysql>(nome = "Aline") OR
mysql>(telefone = 2728918);
----------------------------------------------------A pesquisa realizada atravs deste operador far com que todos os
resultados que contenham o contedo "Aline" no campo nome OU 2728918
sejam exibidos na tela.
NOT (!)
O operador lgico NOT, que significa NO, realiza uma pesquisa,
excluindo valores determinados do resultado.
Apndice
79
FINALIZANDO
Mais detalhes sobre o MySQL podem ser obtidos na sua documentao
(apostila) e no stio oficial do programa.
80
Apndice
APNDICE - B
Uso prtico de SQL padro
significado
igual a
>
maior que
>=
<
<=
menor que
Exemplos:
SELECT EMPNOME, EMPSERV
FROM EMP
WHERE DEPNUME > 10;
Apndice
83
84
Apndice
Apndice
85
86
Apndice
Operador
Significado
entre dois valores (
inclusive )
in ( .... )
lista de valores
like
com um padro de
caracteres
is null
um valor nulo
Exemplos:
SELECT EMPNOME, EMPSALA
FROM EMP
WHERE EMPSALA BETWEEN 500 AND 1000;
SELECT EMPNOME, DEPNUME
FROM EMP
WHERE DEPNUME IN (10,30);
SELECT EMPNOME, EMPSERV
FROM EMP
WHERE EMPNOME LIKE 'F%';
SELECT EMPNOME, EMPSERV
FROM EMP
WHERE EMPCOMI IS NULL;
O smbolo "%" pode ser usado para construir a pesquisa ("%" =
qualquer sequncia de nenhum at vrios caracteres).
Operadores Negativos
Operador
<>
not nome_coluna =
not nome_coluna >
not between
Significado
diferente
diferente da coluna
no maior que
no entre dois valores
informados
not in
Apndice
87
diferente do padrao de
not like
caracteres informado
is not null
no um valor nulo
88
Apndice
Apndice
89
retorno
avg(n)
count(expr)
max(expr)
min(expr)
sum(n)
90
Apndice
Apndice
91
SELECT
FROM
WHERE
coluna(s)
tabela(s)
ORDER BY coluna(s);
A "SQL" far a seguinte avaliao:
a) WHERE, para estabelecer tuplas individuais candidatas (no pode conter
funes de grupo).
b) GROUP BY, para fixar grupos.
c) HAVING, para selecionar grupos para exibio.
Equi-Juno (Juno por igualdade)
92
Apndice
Apndice
93
94
Apndice
Resp:
SELECT DEPNOME
FROM DEPT A
WHERE EXISTS (SELECT *
FROM EMP
WHERE EMPSALA > 3500 AND EMP.
DEPNUME = A.DEPNUME');
Nota:
Observe que a clusula EXISTS indica se o resultado de uma
pesquisa contm ou no tuplas. Observe tambm que poderemos verificar a
no-existncia (NOT EXISTS), caso esta alternativa seja mais conveniente.
Unies
Podemos eventualmente unir duas linhas de consultas, simplesmente
utilizando a palavra reservada UNION.
Apndice
95
96
Apndice
<tabela>
SET
<campo>
<expresso>
[WHERE
<condio>];
Ex:
UPDATE EMP SET EMPSALA = EMPSALA* 1.2 WHERE EMPSALA<
1000;
Excluir (Delete)
DELETE FROM <tabela> [WHERE <condio>];
Ex:
DELETE FROM emp WHERE EMPSALA > 5000;
Apndice
97
Webliografia
http://disciplinas.dcc.ufba.br/svn/MATA60/tarefa1/historico/
historico.pdf?revision=21
http://www.ime.usp.br/~andrers/aulas/bd2005-1/
http://www.cos.ufrj.br/~marta/BdRel.pdf
http://www.webng.com/pmds/Arquivos/HistoricoBD.pdf
http://www.sqlmagazine.com.br/Colunistas/RicardoRezende/03_ConceitosBD_
P2.asp
http://www.devmedia.com.br/articles/viewcomp.asp?comp=5935
http://www.apostilando.com/
http://www.scribd.com/doc/512604/Modelo-EntidadeRelacionamento
http://www.inf.puc-rio.br/~casanova/INF1731-BD/modulo02.pdf
http://chasqueweb.ufrgs.br/~paul.fisher/apostilas/basdad/bd_mod_er.htm
http://www.ime.usp.br/~andrers/aulas/bd2005-1/aula6.html
http://www2.dc.ufscar.br/~carvalho/GUBD/aulas/36.html
http://www.ic.unicamp.br/~geovane/mo410-091/Ch02-MER_pt.pdf
http://www.shammas.eng.br/acad/materiais/mer.pdf
http://www.juliobattisti.com.br/artigos/office/modelorelacional_p1.asp
http://www.dca.fee.unicamp.br/cursos/PooJava/javadb/bdrel.htm
http://www.dpi.inpe.br/spring/teoria/consulta/consulta.html
http://pt.tech-faq.com/relational-database.shtm
http://www.baixaki.com.br/download/mysql-workbench.htm
http://forum.imasters.uol.com.br/index.php?showtopic=248701
http://www.webtuga.com/ola-mysql-workbench-adeus-dbdesigner4/
http://www.tipandtrick.net/2008/mysql-workbench-visual-database-deign-toolfree-download/pt/
http://www.mysqlbrasil.com.br/
http://dev.mysql.com/doc/refman/4.1/pt/index.html
http://br-linux.org/2009/sun-lanca-o-mysql-54/
http://www.criarweb.com/manuais/mysql/
http://www.dbtools.com.br/