Professional Documents
Culture Documents
Administração de
Banco de Dados
Agosto/2008
Índice
1. Introdução...................................................................................................................................4
1.1. Dado.....................................................................................................................................4
1.2. Informação...........................................................................................................................4
1.3. A Informação como Recurso da Empresa...........................................................................4
2. Organizações Básicas de Arquivos............................................................................................5
2.1. Conceitos.............................................................................................................................5
2.2. Estruturas de Arquivos.........................................................................................................5
2.2.1. Arquivo seqüencial.......................................................................................................5
3. Bancos de Dados.......................................................................................................................7
3.1. Banco de Dados (BD)..........................................................................................................7
3.2. Sistema de Gerência de Banco de Dados (SGBD).............................................................7
3.2.1. Processamento de Dados sem Banco de Dados........................................................7
3.2.2. Processamento de dados com uso de SGBD............................................................. 8
3.2.3. Principais Componentes de um Sgbd..........................................................................8
3.2.4. Características de um SGBD.......................................................................................8
3.3. Abstração de Dados............................................................................................................9
3.4. Modelos de Bancos de Dados...........................................................................................10
3.5. Independência de Dados...................................................................................................10
3.6. Funções relacionadas ao Sgbd.........................................................................................10
3.6.1. Administrador de Dados.............................................................................................10
3.6.2. Administrador de Banco de Dados............................................................................10
3.6.3. Projetista da Base de Dados......................................................................................11
3.6.4. Analista de Sistemas..................................................................................................11
3.7. Arquiteturas para uso do Sgbd..........................................................................................11
3.7.1. Mono-usuário.............................................................................................................11
3.7.2. Multi-Usuário com Processamento Central............................................................... 11
3.7.3. Arquitetura em Rede com Servidor de Arquivos....................................................... 11
3.7.4. Arquitetura Cliente/Servidor.......................................................................................11
3.8. Fases do Projeto de Bd.....................................................................................................11
3.8.1. Construir o Modelo Conceitual...................................................................................11
3.8.2. Construir o Modelo Lógico.........................................................................................11
3.8.3. Construir o Modelo Físico .........................................................................................12
3.8.4. Avaliar o Modelo Físico .............................................................................................12
3.8.5. Implementar o BD......................................................................................................12
4. MODELAGEM DE DADOS......................................................................................................13
4.1. Conceitos...........................................................................................................................13
4.2. Tipos de Abstração............................................................................................................13
4.2.1. Classificação..............................................................................................................13
4.2.2. Agregação..................................................................................................................13
4.2.3. Generalização............................................................................................................13
4.3. Requisitos para Modelagem de Dados............................................................................. 13
4.4. Modelos Conceituais..........................................................................................................13
4.5. Modelos Lógicos................................................................................................................14
4.5.1. Modelo Hierárquico....................................................................................................14
4.5.2. Modelo de Rede.........................................................................................................14
4.5.3. Modelo Relacional......................................................................................................15
4.6. Modelo de Dados Físico....................................................................................................16
5. MODELO ENTIDADE-RELACIONAMENTO (M.E.R.).............................................................17
5.1. Introdução..........................................................................................................................17
5.2. Entidade.............................................................................................................................17
5.3. Relacionamento.................................................................................................................17
5.3.1. Auto-relacionamento..................................................................................................18
5.3.2. Cardinalidade de Relacionamentos...........................................................................19
5.3.3. Cardinalidade Máxima...............................................................................................19
5.3.4. Classificação de Relacionamentos Binários..............................................................19
5.3.5. Relacionamento ternário............................................................................................21
5.3.6. Cardinalidade mínima................................................................................................21
5.4. Notações Alternativas........................................................................................................22
5.5. Atributo ..............................................................................................................................22
5.5.1. Domínio......................................................................................................................23
5.5.2. Tipos de Atributos......................................................................................................23
5.5.3. Atributo de Relacionamento ......................................................................................23
5.5.4. Identificador de Entidades..........................................................................................23
5.5.5. Relacionamento Identificador (Entidade Fraca)........................................................ 24
5.5.6. Identificador de Relacionamentos..............................................................................24
5.6. Generalização/Especialização...........................................................................................24
5.7. Entidade Associativa (Agregação).....................................................................................26
5.8. Relacionamento Mutuamente Exclusivo........................................................................... 27
5.9. Restrição de Persistência no Relacionamento..................................................................27
5.10. Esquema Textual do MER...............................................................................................28
6. Linguagem de Banco de Dados – SQL....................................................................................29
1. INTRODUÇÃO
1.1. DADO
Representação de um evento do mundo físico, de um fato ou de uma idéia
Representação de uma propriedade ou característica de um objeto real
Não tem significado por si só
Ex.: quantidade de Kwh consumidos em uma residência.
1.2. INFORMAÇÃO
Organização e agregação dos dados, permitindo uma interpretação
Informação interpretação dos dados
Ex.: Consumo de energia comparado com a capacidade geradora da usina.
Identificados
Dados Organizados geram Informação
Agrupados
Armazenados
Recuperados
a) Acesso a um registro
Podemos considerar dois tipos de acesso: seqüencial ou aleatório.
O acesso seqüencial consiste em acessar os registros na ordem em que estão
armazenados, ou seja, o registro obtido é sempre o posterior ao último acessado. Como os
registros são armazenados em sucessão contínua, acessar o registro “n” de um arquivo requer
a leitura dos “n-1” registros anteriores.
c) Exclusão de um registro
Normalmente é implementada como a inserção, com a criação de um arquivo de
transações que contém os registros a serem excluídos, que é processado posteriormente.
Pode ainda ser implementada através de um campo adicional no arquivo que indique o
estado (status) de cada registro. Na exclusão, o valor deste campo seria alterado para
“excluído”. Posteriormente, é feita a leitura seqüencial de todos os registros, sendo que os
registros que não estiverem marcados como “excluídos” são copiados para um novo arquivo.
d) Alteração de um registro
Consiste na modificação do valor de um ou mais atributos de um registro. O registro
deve ser localizado, lido e os campos alterados, sendo gravado novamente, na mesma
posição.
A alteração é feita sem problemas, desde que ela não altere o tamanho do registro
nem modifique o valor de um campo usado como chave de ordenação.
3.7.1. MONO-USUÁRIO
BD está no mesmo computador que as aplicações
Não há múltiplos usuários
Recuperação geralmente através de backup
Típico de computadores pessoais
3.8.5. IMPLEMENTAR O BD
Etapa de carga (load) dos dados
Gerar as interfaces com outras aplicações
4.2.1. CLASSIFICAÇÃO
Os objetos do mundo real são organizados segundo suas propriedades ou
características comuns, formando classes de objetos. Um objeto pode pertencer
simultaneamente a várias classes.
4.2.2. AGREGAÇÃO
Uma classe é definida a partir de um conjunto de outras classes, que representam suas
partes componentes.
4.2.3. GENERALIZAÇÃO
Define uma nova classe a partir de características comuns de outras classes. A classe
genérica que reúne as características comuns é denominada superclasse e as classes que
herdam estas características são denominadas subclasses.
5.2. ENTIDADE
Conjunto de objetos da realidade modelada sobre os quais deseja-se manter informações
no Banco de Dados
Uma entidade pode representar objetos concretos da realidade (pessoas, automóveis,
material, nota fiscal) quanto objetos abstratos (departamentos, disciplinas, cidades)
A entidade se refere a um conjunto de objetos; para se referir a um objeto em particular é
usado o termo instância (ou ocorrência)
No DER, uma entidade é representada através de um retângulo que contém o nome da
entidade
PESSOA DEPARTAMENTO
5.3. RELACIONAMENTO
É toda associação entre entidades, sobre a qual deseja-se manter informações no Banco
de Dados.
Os relacionamentos representam fatos ou situações da realidade, onde as entidades
interagem de alguma forma
Um dado por si só não faz uma informação, pois não tem sentido próprio; é necessário que
haja uma associação de dados para que a informação seja obtida.
Exemplos:
Fornecimento: entre as entidades FORNECEDOR e MATERIAL
Matrícula: entre as entidades ALUNO e DISCIPLINA
Financiamento: entre as entidades PROJETO e AGENTE FINANCEIRO
No DER, os relacionamentos são representados por losangos, ligados às entidades que
participam do relacionamento
5.3.1. AUTO-RELACIONAMENTO
Relacionamento entre ocorrências da mesma entidade.
PESSOA
marido esposa
CASAMENT
O
1 N
CLIENTE REALIZA PEDIDO
Um cliente pode fazer pedidos ou não, mas todos os pedidos devem estar associados a
um cliente.
1 N
DEPTO ALOCA EMPREGADO
Administração de Banco de Dados 21
Todos os departamentos devem possuir pelo menos um empregado alocado, e todos
os empregados devem estar alocados em um departamento.
1 N
DEPTO ALOCA EMPREGADO
10
Parcialidade mínima: para um departamento ser criado, devem existem pelo menos
10 empregados alocados.
(1,1) (0,N)
DEPTO ALOCA EMPREGADO
(0,N) (1,1)
DEPTO ALOCA EMPREGADO
1 N
DEPTO ALOCA EMPREGADO
5.5. ATRIBUTO
É um dado que é associado a cada ocorrência de uma entidade ou relacionamento.
Os atributos não possuem existência própria ou independente - estão sempre associados a
uma entidade ou relacionamento
Exemplos:
Funcionário: Matrícula, Nome, Endereço
Material: Código, Descrição
Financiamento: Valor total, Meses
Fornecedor: Nome, Endereço
a) Opcional/Mandatório
130.Opcional: o atributo pode possuir um valor nulo (vazio). Ex: número
de telefone
Mandatório: o atributo deve possuir um valor válido, não nulo. Ex: nome do cliente
b) Monovalorado/Multivalorado
132.Monovalorado: o atributo assume um único valor dentro do domínio.
Ex: data de nascimento
Multivalorado: o atributo pode assumir um número qualquer de valores dentro do
domínio. Ex: Telefone para contato
c) Atômico/Composto
134.Atômico: o atributo não pode ser decomposto em outros atributos. Ex:
Idade
Composto: o atributo é composto por mais de um atributo. Ex: Endereço
TRANSPORTE
PASSAGEIRO
1 N
ALUNO EMPRÉS- LIVRO
TIMO
SEÇÃO_ENTIDADE → (DECL_ENT)
DECL_ENT → Entidade: ENTIDADE_NOME
{SEÇÃO_ATRIBUTO}
{SEÇÃO_IDENTIFICADOR}
MIN_CARD → 0 | 1
MAX_CARD → 1 | N
DECL_TIPO → inteiro|real|boolean|texto(inteiro)|enum(LISTA_VALORES)|data
SEÇÃO_GENERALIZAÇÃO → {DECL_HIERARQUIA_GEN}
DECL_HIERARQUIA_GEN → Generalização[(CORBERTURA)]; NOME_GEN
PAI: NOME_ENTIDADE
FILHO: LISTA_NOME_ENTIDADE
COBERTURA → t | p
SEÇÃO_AGREGAÇÃO →{DECL_ENT_ASSOC}
DECL_ENT_ASSOC → EntidadeAssociativa: NOME_RELACIONAMENTO
SEÇÃO_RELACIONAMENTO → {DECL_RELACIONAMENTO}
DECL_RELACIONAMENTO → Relacionamento: NOME_RELACIONAMENTO
Entidades: {DECL_ENT-RELACIONADA}
[ Atributos: {DECL_ATRIB} ]
[ Identificadores: {DECL_IDENT}]
DECL_ENT-RELACIONADA → [(MIN_CARD,MAX_CARD)] NOME_ENTIDADE
Exemplo:
Esquema: EMPRESA
Entidade: DEPARTAMENTO
Atributos: código: inteiro;
Nome: texto(20);
Ativo: boolean;
Identificador: código
Entidade: EMPREGADO
Atributos: matrícula: inteiro;
Nome: texto(50);
DataNasc : data;
Identificador: matrícula
Relacionamento: ALOCA
Entidades: (0,N) DEPARTAMENTO
(1,1) EMPREGADO
Administração de Banco de Dados 28
6. LINGUAGEM DE BANCO DE DADOS – SQL
Devemos ressaltar que a linguagem SQL é utilizada tanto pelos profissionais responsáveis
pelos dados, onde é ressaltada a figura do Administrador do Banco de Dados e dos Analistas
de Dados, como também pelos desenvolvedores de Aplicações. Enquanto àqueles estão
preocupados com o desempenho, integridade do Banco de Dados e utilizam toda gama de
recursos disponíveis no SQL, estes estão preocupados apenas em "transformar dados em
informações", portanto para os desenvolvedores costuma-se dizer que conhecer o "select" já
basta. Em nosso curso enfatizaremos a importância de TODOS os comandos do SQL, mas
sabemos de antemão que os professores responsáveis pelas linguagens IDEO, VB e Delphi,
ressaltarão a preponderância da instrução "select", que será apresentada a seguir e não no
final do curso de SQL como geralmente acontece, pelo fato de que diversas disciplinas
necessitam especificamente deste comando, que passaremos a apresentar:
Exercício: baseado nas vinte questões expostas a seguir, elabore o DER contemplando os
atributos e entidades citados em cada uma.
Resp:
SELECT * FROM DEPARTAMENTOS;
O exemplo utiliza o coringa "*" para selecionar as colunas na ordem em que foram criadas. A
instrução Select, como pudemos observar seleciona um grupo de registros de uma (ou mais)
tabela(s). No caso a instrução From nos indica a necessidade de pesquisarmos tais dados
apenas na tabela Departamentos.
Operadores lógicos
operador significado
= igual a
> maior que
>= maior que ou igual a
< menor que
<= menor que ou igual a
O conjunto de caracteres ou datas devem estar entre apóstrofes (‘) na cláusula "where".
2) Selecione todos os departamentos cujo orçamento mensal seja maior que 100000.
Apresente o Nome de tal departamento e seu orçamento anual, que será obtido
multiplicando-se o orçamento mensal por 12.
Resp: Neste exemplo deveremos denominar colunas por apelidos. Os nomes das colunas
mostradas por uma consulta, são geralmente os nomes existentes no Dicionário de Dado,
porém geralmente estão armazenados na forma do mais puro "informatiquês", onde "todo
mundo" sabe que CliCodi significa Código do Cliente. É possível (e provável) que o usuário
desconheça estes símbolos, portanto devemos os apresentar dando apelidos às colunas
"contaminadas" pelo informatiquês, que apesar de fundamental para os analistas, somente são
vistos como enigmas para os usuários.
Resp: A cláusula Distinct elimina duplicidades, significando que somente relações distintas
serão apresentadas como resultado de uma pesquisa.
Nota: Também é possível fazer com que o resultado da pesquisa venha classificado por várias
colunas. Sem a claúsula "order by" as linhas serão exibidas na sequência que o SGBD
determinar.
Resp:
SELECT DEPARTAMENTO
FROM DEPARTAMENTOS
WHERE [LOCAL DEPARTAMENTO] = "SÃO PAULO";
O exemplo exigiu uma restrição (São Paulo) que nos obrigou a utilizar da instrução Where.
Alguns analistas costumam afirmar em tom jocoso que SQL não passa de
Acreditamos que esta brincadeira pode ser útil ao estudante, na medida em que facilita sua
compreensão dos objetivos elementares do SQL.
Demais Operadores
Operador Significado
between ... and ... entre dois valores ( inclusive )
in ( .... ) lista de valores
like com um padrao de caracteres
is null é um valor nulo
Exemplos:
SELECT EMPREGADO, SALÁRIO
Administração de Banco de Dados 31
FROM EMPREGADOS
WHERE SALÁRIO BETWEEN 500 AND 1000;
O símbolo "%" pode ser usado para construir a pesquisa ("%" = qualquer sequência de nenhum
até vários caracteres).
Operadores Negativos
operador descrição
<> diferente
not nome_coluna = diferente da coluna
not nome_coluna > não maior que
not between não entre dois valores informados
not in não existente numa dada lista de valores
not like diferente do padrao de caracteres informado
is not null não é um valor nulo
8) Selecione os Empregados cujos salários sejam menores que 1000 ou maiores que
3500.
9) Apresente todos os funcionários com salários entre 200 e 700 e que sejam
Vendedores.
Resp:
SELECT EMPREGADO, SALÁRIO, FUNÇÃO
FROM EMPREGADO
WHERE SALÁRIO BETWEEN 700 AND 2000
AND ( FUNÇÃO = 'BALCONISTA' OR FUNÇÃO = 'VENDEDOR' );
Funções de Caracteres
Resp:
SELECT *
FROM EMPREGADOS
WHERE [DATA ADMISSÃO] = 01/01/80;
função retorno
avg(n) média do valor n, ignorando nulos
count(expr) vezes que o número da expr avalia para algo nao nulo
max(expr) maior valor da expr
min(expr) menor valor da expr
sum(n) soma dos valores de n, ignorando nulos
13) Apresente a Média, o Maior, o Menor e também a Somatória dos Salários pagos aos
empregados.
Resp:
SELECT AVG(SALÁRIO) FROM EMPREGADOS;
Agrupamentos
A cláusula "GROUP BY" pode ser usada para dividir as tuplas de uma tabela em grupos
menores. As funções de grupo devolvem uma informação sumarizada para cada grupo.
Resp:
SELECT DUPNUME, AVG(SALÁRIO)
FROM EMPREGADOS
GROUP BY [CÓDIGO DEPARTAMENTO];
Obs.: Qualquer coluna ou expressão na lista de seleção, que não for uma função agregada,
deverá constar da claúsula "group by". Portanto é errado tentar impor uma "restrição" do tipo
agregada na cláusula Where.
Having
A cláusula "HAVING" pode ser utilizada para especificar quais grupos deverão ser exibidos,
portanto restringindo-os.
15) Retome o problema anterior, porém apresente resposta apenas para departamentos
com mais de 10 empregados.
Resp:
SELECT [CÓDIGO DEPARTAMENTO], AVG(SALÁRIO)
FROM EMPREGADO
GROUP BY [CÓDIGO DEPARTAMENTO]
HAVING COUNT(*) > 3;
Obs.: A claúsula "group by" deve ser colocada antes da "having", pois os grupos são formados
e as funções de grupos são calculadas antes de se resolver a cláusula "having".
A cláusula "where" não pode ser utilizada para restringir grupos que deverão ser exibidos.
SELECT coluna(s)
FROM tabela(s)
WHERE condição(ões) da(s) tupla(s)
GROUP BY condição(ões) do(s) grupo(s) de tupla(s)
HAVING condição(ões) do(s) grupo(s) de tupla(s)
ORDER BY coluna(s);
a) WHERE, para estabelecer tuplas individuais candidatas (não pode conter funções de grupo)
b) GROUP BY, para fixar grupos.
c) HAVING, para selecionar grupos para exibiçao.
Resp: Observemos que dois dos três dados solicitados estão na Tabela Emp, enquanto o outro
dado está na Tabela Departamentos. Deveremos então acessar os dados restringindo
convenientemente as relações existentes entre as tabelas. De fato sabemos que [CÓDIGO
DEPARTAMENTO] é chave primária da tabela de Departamentos e também é chave
estrangeira da Tabela de Empregados. Portanto, este campo será o responsável pela equi-
junção.
Obs.: Note que as tabelas quando contém colunas com o mesmo nome, usa-se um apelido
"alias" para substituir o nome da tabela associado a coluna. Imagine que alguém tivesse
definido NOME para ser o Nome do Empregado na Tabela de Empregados e também NOME
para ser o Nome do Departamento na Tabela de
Departamentos. Tudo funcionaria de forma adequada, pois o aliás se encarregaria de evitar
que uma ambiqüidade fosse verificada. Embora SQL resolva de forma muito elegante o
problema da nomenclatura idêntica para campos de tabelas, recomendamos que o estudante
fortemente evite tal forma de nomear os campos. O SQL nunca confundirá um A.NOME com
um B.NOME, porém podemos afirmar o mesmo de nós mesmos?
Resp: Precisamos criar um auto-relacionamento, ou seja, juntar uma tabela a ela própria. É
possível juntarmos uma tabela a ela mesma com a utilização de apelidos, permitindo juntar
tuplas da tabela a outra tuplas da mesma tabela.
As Sub-Consultas
Uma sub-consulta é um comando "select" que é aninhado dentro de outro "select" e que
devolve resultados intermediários.
18) Relacione todos os nomes de funcionários e seus respectivos cargos, desde que o
orçamento do departamento seja igual a 300000.
Resp:
Nota: Observe que a cláusula IN torna-se verdadeira quando o atributo indicado está presente
no conjunto obtido através da subconsulta.
SELECT DEPARTAMENTO
FROM DEPARTAMENTOS AS A
WHERE EXISTS (SELECT *
FROM EMPREGADOS
WHERE SALÁRIO > 3500 AND EMP.[CÓDIGO DEPARTAMENTO]
= A.[CÓDIGO DEPARTAMENTO]);
Nota: Observe que a cláusula EXISTS indica se o resultado de uma pesquisa contém ou não
tuplas. Observe também que poderemos verficar a não existência (NOT EXISTS) caso esta
alternativa seja mais conveniente.
Uniões
20) Liste todos os empregados que tenham códigos > 10 ou Funcionários que trabalhem
em departamentos com código maior que 10.
O que ocorreria então se este programador tiver que adaptar-se ao Delphi (Pascal) da
Borland?
De forma alguma o mesmo ocorrerá com o especialista em SQL ao ter que migrar do Banco de
Dados X para o Banco de Dados Y. Naturalmente existirá a necessidade de aprendizado, mas
este programador poderá ir adaptando-se aos poucos sem precisar ser retreinado, o que é um
aspecto extremamente vantajoso para as empresas.
Inserir (Insert)
Ex:
INSERT INTO DEPARTAMENTOS;
Possibilita a inserção de registros de forma interativa.
INSERT INTO DEPARTAMENTOS ([CÓDIGO DEPARTAMENTO], DEPARTAMENTO, [LOCAL
DEPARTAMENTO])
VALUES (70,"PRODUCAO","RIO DE JANEIRO");
Atualizar (Update)
Administração de Banco de Dados 37
UPDATE <tabela> SET <campo> = <expressão> [WHERE <condição>];
Ex: UPDATE EMP SET SALÁRIO = SALÁRIO* 1.2 WHERE SALÁRIO< 1000;
Excluir (Delete)
DELETE FROM <tabela> [WHERE <condição>];
Ex: DELETE From Empregados WHERE SALÁRIO > 5000;
Visões
Uma visão consiste basicamente de uma tabela derivada de outras tabelas. Considerando o
exemplo TRABALHO, poderíamos criar uma visão baseada na Tabela de Empregados (EMP) e
na Tabela de Departamentos (DEPARTAMENTOS) onde tivéssemos somente os Nomes dos
Funcionários e os Departamenos nos quais estes trabalhassem. Teríamos algo assemelhado
ao abaixo representado:
1- Uma visão definida sobre uma única tabela somente será atualizável se os atributos da tal
visão contiverem a chave primária de tal tabela.
2- Visões sobre várias tabelas não são passíveis de atualizações.
3- Visões que utilizam funções de agrupamentos, também não poderão ser atualizadas.