Академический Документы
Профессиональный Документы
Культура Документы
Abstração de dados
Abstrair dados significa omitir a complexidade do sistema de modo a facilitar a
interação dos usuários com ele. Existem três tipos de abstração:
• Nível Físico: descreve como os dados estão de fato armazenados.
• Nível lógico: descreve quais dados estão armazenados no banco de dados e quais são
os inter‐relacionamentos entre eles.
• Nível de visão: descreve apenas parte do BD, pois os usuários normalmente não
precisam conhecer todo o banco, eles acabam utilizando apenas parte dele.
Visão 1 Visão 2
Visão n
Nível de Visão
Nível Lógico
Nível Físico
Instância do BD = conjunto de informações contidas em um BD num dado momento.
“Fotografia” do banco.
Esquema do BD = projeto geral do BD
• Esquema físico
• Esquema lógico Um para cada tipo de abstração
• Subesquemas
Independência de Dados
É a capacidade de modificar a definição dos esquemas em determinado nível, sem
afetar o esquema dos outros níveis. Existem dois tipos de independência de dados:
• Independência de dados física: capacidade de alterar o esquema físico sem que seja
necessário alterar qualquer aplicação.
• Independência de dados lógica: capacidade de modificar o esquema lógico sem que,
com isso, qualquer programa precise ser reescrito.
Modelos de Dados
Modelo de dados é um conjunto de ferramentas conceituais usadas para a descrição
de dados, relacionamentos entre dados, semântica de dados e regras de consistência.
1. Modelos Lógicos com Base em Objetos
São usados na descrição de dados no nível lógico e de visões. São caracterizados por dispor
de recursos de estruturação bem mais flexíveis e por viabilizar a especificação explícita das
restrições dos dados.
1
1.1. Modelo Entidade Relacionamento
Percepção do mundo real como um conjunto de entidades e do relacionamento entre
elas. O modelo E‐R representa certas regras que o conteúdo do BD deve respeitar; por
exemplo o mapeamento das cardinalidades. Toda a estrutura lógica do BD pode ser expressa
graficamente por meio do diagrama de E‐R.
1.2. Modelo Orientado a Objetos = Programação OO
Tem por base um conjunto de objetos. Um objeto possui métodos que são conjuntos
de códigos que operam os objetos. Os objetos são agrupados em classes. Um objeto só pode
acessar outro objeto por meio de seus métodos (envio de msgs).
2. Modelos Lógicos com Base em Registros
São usados para descrever os dados no nível lógico e de visões. É usado tanto para
especificar a estrutura lógica do BD como para implementar uma descrição de alto nível. Têm
esse nome porque o banco de dados é estruturado por meio de registros de formato fixo de
todos os tipos. Cada registro define um número fixo de campos ou atributos e cada campo
possui tamanho fixo (como se fosse um array).
2.1. Modelo Relacional = em tabelas
Utiliza um conjunto de tabelas para representar tanto os dados como a relação entre
eles. Cada tabela possui múltiplas colunas e cada uma deve possuir um único nome.
2.2. Modelo de Rede
Os dados são representados por um conjunto de registros e as relações entre os
registros são representadas por links. Os registros são organizados no banco de dados por um
conjunto arbitrário de gráficos (grafos?):
nome CPF rua cidade conta saldo
conta saldo
2.3. Modelo Hierárquico
Similar ao modelo em rede, pois os dados e suas relações são representados,
respectivamente, por registros e links. A diferença é que no modelo hierárquico os registros
estão organizados em árvores ao invés de gráficos arbitrários:
Funções do Administrador do Banco de Dados (DBA)
• Instalar o SGBD
• Criar os BDs
• Fornecer autorização de acesso
• Especificar regras de integridade e de segurança
• Fazer backup e recovery, carga e descarga
• Otimizar o desempenho
• Criar o esquema interno e conceitual
• Definir estrutura de dados e métodos de acesso
• Esquema e modificações na organização física
• Criar índices e o dicionário de dados
2
Funções do Administrador de Dados (AD)
• Definir o projeto lógico
• Modela e observa os dados do ponto de vista semântico, de integração e de negócio
da empresa
• Responsabiliza‐se pela qualidade e compatibilidade dos modelos de dados da empresa
• Administra a descrição dos dados corporativos
Gerenciamento de Transações (Propriedades ACID)
Transação é uma coleção de operações que desempenha uma função lógica única
dentro de uma aplicação do sistema de banco de dados.
• Atomicidade: a execução de uma transação deve ser integral, ou seja, ou todas as
operações são executadas ou nenhuma deve ser feita.
• Consistência: a execução de uma transação deve levar um banco em estado
consistente a outro estado também consistente.
• Isolamento: uma transação não deve tornar suas alterações visíveis a outras
transações antes de sua completa execução.
o Usuário solicita saldo e conta está sofrendo uma transação de débito, o banco
só retornará o saldo depois que o débito tiver sido realmente efetivado
(transação tiver terminado).
• Durabilidade: após o término de uma transação, suas atualizações não podem ser
perdidas por causa de falhas futuras. Antes que uma transação seja completada, ela
deve verificar se as alterações foram gravadas com sucesso.
Integridade e Regras/Restrições de Integridade
A integridade de um banco de dados refere‐se à precisão ou correção dos dados nele
armazenados. Garantimos essa integridade por meio de Restrições de Integridade que são
armazenadas no dicionário de dados. O SGBD encarrega‐se então de, a cada operação que
acarrete alteração nos dados, verificar se a alteração solicitada viola as restrições de
integridade. Em caso afirmativo, a operação é interrompida.
As restrições de integridade características da empresa proprietária do banco de dados
são normalmente chamadas de Regras de Negócio, pois descrevem o funcionamento do
negócio da empresa. São definidas pelo Administrador de Banco de Dados (DBA) e evitam o
armazenamento de dados em desacordo com a política da empresa. Por exemplo, se uma
política da empresa determina que o desconto comercial máximo concedido a um cliente é de
dez por cento, uma operação de atualização no banco de dados que informe um desconto de
vinte por cento será interrompida.
Além das regras de negócio, existem restrições que visam a manter a integridade dos
dados do banco de dados, independente da política da empresa. Podemos classificar essas
restrições de integridade em restrições de: tipos de dados (domínio), integridade de
entidade (de tabela) e integridade referencial (chave estrangeira).
1. Restrições de Domínio (Tipos de dados)
Evitam que dados incompatíveis com os tipos de dados selecionados para seus
atributos sejam aceitos pelo banco de dados. Permitem criarmos restrições que o
banco sempre deve verificar antes de inserir dados.
Utilizamos a cláusula check em SQL para criarmos restrições de domínios:
create domain salário‐do‐João numeric(5,2)
constraint valor‐mínimo check(salário >=50000.00)
3
2. Restrições de Tabela (Entidade)
Certificam que as chaves primárias sempre não serão nulas.
3. Restrições de Integridade Referencial (chave estrangeira)
Assegura que um valor que aparece em uma relação (tabela) para um determinado
conjunto de atributos apareça em outro conjunto de atributos em outra relação
(tabela). Em outras palavras, a restrição de integridade referencial diz que uma tupla
da relação R1, que se refere a outra relação R2, deve referir‐se a uma tupla existente
em R2 .
Modelo Entidade Relacionamento
1. Conjunto de Entidades
Uma entidade é uma “coisa” ou um objeto no mundo real que pode ser identificada de
forma unívoca em relação a todos os outros objetos ou coisas. Uma entidade possui um
conjunto de propriedades (atributos).
Um conjunto de entidades é um conjunto que abrange entidades de mesmo tipo que
compartilham os atributos.
Uma entidade é representada por seu conjunto de atributos. Atributos são propriedades
descritivas de cada membro de um conjunto de entidades. Cada atributo possui um conjunto
de valores possíveis denominado domínio.
TIPOS DE ATRIBUTOS:
• Atributo simples
Não são divididos em partes.
• Atributo composto
Podem ser divididos em outros atributos. Um atributo endereço pode ser dividido
nos atributos rua, bairro, CEP, etc.
• Atributo monovalorado
Possui apenas um valor por entidade.
• Atributo multivalorado
Pode possuir mais de um valor. É um atributo que possui um grupo de valores para
uma única entidade. A entidade Pessoa que tem o atributo dependentes pode
possuir os valores João, José, Lya, Luana que são os dependentes de alguma
pessoa.
• Atributo nulo
É usado quando uma entidade não possui valor para determinado atributo. Pode
indicar que o valor do atributo é desconhecido ou que este foi omitido.
• Atributo derivado/descritivo
O valor do atributo pode ser derivado de outros atributos ou entidades a ele
relacionados.
chave_primária
atributo
multivalorado
Entidade atributo derivado
atributo simples parte1
atributo
composto Parte2
4
Conceitos de Chaves:
• Superchave: é um conjunto de um ou mais atributos que permite identificar
univocamente uma entidade em um conjunto de entidades.
• Chave candidata: são superchaves para as quais nenhum subconjunto possa ser
uma superchave. Em outras palavras nerds, chave candidata é um conjunto de
atributos que possui ao mesmo tempo as propriedades de unicidade (não existem
tuplas com mesmo valor) e irredutibilidade (nenhum subconjunto terá a
propriedade da unicidade).
• Chave primária: é a chave candidata escolhida para identificar o conjunto de
entidades.
• Chave estrangeira: O modelo relacional não utiliza ponteiros para conectar duas
relações entre si. Essa ligação é realizada pelo aparecimento, nos atributos de uma
relação, de um elemento de ligação comum a ambas.
Sejam duas variáveis de relações R1 e R2. Para que a variável de relação R1 seja
conectada à variável de relação R2, é necessário que um dos atributos de R2
referencie um atributo de R1, e que esse atributo seja uma Chave Candidata de
R1. Dessa forma, uma Chave Estrangeira é um conjunto de atributos de uma
variável de relação, cujos valores correspondem obrigatoriamente aos valores de
uma chave candidata de outra variável de relação conectada a ela. Pode ser nula!
2. Conjunto de Relacionamentos
Um relacionamento é uma associação entre uma ou várias entidades. Um conjunto de
relacionamentos é um conjunto de relacionamentos de mesmo tipo. A função que uma
entidade desempenha num relacionamento é chamada de papel. É possível termos atributos
descritivos nos relacionamentos.
Cardinalidade Completa Cardinalidades
(mínima,máxima) 1..1
(0,n) (1,n) (1,1) 1..n
n..1
n..n
(1,n) (1,1)
Pessoa
Proprietário Carro
atributo
5
3. Conjunto de Entidades Fracas
É um conjunto de entidades que não possui atributos suficientes para formar uma chave
primária. A chave primária do conjunto de entidades fracas é formada pela chave primária do
conjunto de entidades fortes da relação mais o identificador do conjunto de entidades fracas.
Existem duas notações:
Pagar
empréstimo (1,n)
pagamento
(1,n) Pagar
empréstimo pagamento
4. Especialização e Generalização
Na especialização um subconjunto de entidades dentro de um conjunto pode possuir
atributos que não são compartilhados pelas demais entidades do conjunto. A
especialização é a herança na POO. A generalização é o inverso da especialização:
conta
ISA
poupança investimento
5. Agregação/Entidade Associativa
É um relacionamento entre relacionamentos. Possui duas notações:
E1 R1 E2 E1 R1 E2
R2 R2
E3 E3
6
Modelo Relacional
Um banco de dados relacional consiste de uma coleção de tabelas, cada uma das quais
com um nome único. Uma linha da tabela representa um relacionamento de valores e uma
coluna representa um atributo da entidade. Utilizamos os nomes relação e tupla ao invés de
tabela e linha. Esquema de uma relação corresponde ao conceito de definição de tipos em
linguagem de programação.
Esquema_conta = (nome_agência, número_conta, saldo)
conta(Esquema_conta)
O esquema acima é denotado pela relação (tabela) conta a seguir:
nome_agência número_conta saldo
Mapeamento do Modelo ER para Modelo Relacional
1. Mapeamento de Entidades Fortes
Cada conjunto de entidades fortes é mapeado como uma relação que envolve todos os
atributos do conjunto de entidades:
Aluno
Esquema_aluno={nome,CPF}
nome CPF
2. Mapeamento de Entidades Fracas
São mapeadas numa relação formada por todos os atributos do conjunto de entidades
fracas mais os atributos que formam a chave primária das relações que o conjunto de
entidades fracas depende. O relacionamento não é mapeado.
nome
1 (0,n)
funcionário tem dependente Funcionário= {nome,COD}
Dependente= {nome,RG,COD}
COD nome
RG
3. Mapeamento de Relacionamentos Binários 1:1
Não são mapeados em novas relações. Seus atributos são colocados em qualquer uma das
relações que mapeiem as entidades envolvidas. A entidade escolhida para receber os atributos
do relacionamento receberá também a chave primária da outra entidade envolvida.
nome
a cod
Aluno= {nome,RG,COD,a}
aluno 1 estu 1
escola
da
Escola= {COD}
RG
7
4. Mapeamento de Relacionamentos Binários 1:N
Não são mapeados em novas relações. Seus atributos são colocados na relação que
mapeia o conjunto de entidades com cardinalidade N. Os atributos chave do conjunto de
entidades com cardinalidade 1 são mapeados no conjunto de entidades com cardinalidade N.
nome
a cod
Aluno= {nome,RG}
aluno 1 N
cursa cursos
Cursos= {COD,RG,a}
RG
5. Mapeamento de Relacionamentos Binários N:N
O relacionamento é mapeado em uma nova relação que recebe os atributos do
relacionamento mais os atributos chave das entidades envolvidas. A chave da relação será a
concatenação das chaves das entidades.
nome
a b cod
Aluno= {nome,RG}
N matric N
aluno matérias
ulado
Matérias= {COD,nomeD}
RG nomeD
Matriculado= {RG,COD,a,b}
6. Mapeamento de Relacionamentos Ternários, Quaternários, etc
Usualmente mapeamos tais relacionamentos como se todos fossem de cardinalidade M:N.
A relação será formada pelos atributos do relacionamento e as chaves primárias das entidades
envolvidas.
nome
a b sigla Aluno= {nome,RG}
N monito M
Disciplina= {sigla,nomeD}
aluno disciplina
ra
Professor= {COD,nomeP}
RG P nomeD
Monitora= {RG,COD,sigla,a,b}
professor nomeP
COD
7. Atributos Compostos e Multivalorados
Os atributos compostos são apenas decompostos na relação. Já os multivalorados vão se
tornar relações cujas chaves primárias serão compostas pela chave da entidade possuidora do
atributo mais o atributo multivalorado.
Secretaria COD
Secretaria= {COD,rua,número }
rua
telefone
Secretaria_telefone= {COD,telefone }
endereço número
8
8. Especialização e Generalização
A especialização é top‐down e a generalização é bottom‐up.
• Se a especialização for mutuamente exclusiva e total, ou seja, nenhuma entidade é
membro de mais de um conjunto de entidades e se todas as entidades do nível
superior forem membros dos níveis inferiores (todas as contas ou serão poupança ou
investimento, nunca será apenas conta), neste caso são criadas relações apenas para
as especializações com a chave da entidade principal:
• Se a especialização não for mutuamente exclusiva, ou seja, a conta pode ser uma
conta normal, ou ser conta poupança ou ser conta investimento, criamos uma tabela
para cada entidade com a chave da entidade principal:
taxa ações
9. Agregação/Entidade Associativa
É um relacionamento entre relacionamentos. Primeiro criamos relações para todas as
entidades envolvidas. Segundo criamos uma relação para o primeiro relacionamento com as
chaves primárias das entidades diretamente envolvidas. Terceiro criamos uma relação para o
relacionamento externo contendo as chaves primárias de todas as entidades:
codP
M N Projeto= {codP}
projeto parti funcionário
cipa
Funcionário= {RG}
codM
P RG Máquina= {codM}
Q usa
máquina Participa= {codP,RG}
Usa= {codP,RG,codM}
9
10. Autorelacionamento
Existem duas maneiras de transformar um auto‐relacionamento em relações:
(0,1)
empregados gerência
RG nome
(0,N)
• Apenas uma relação com duas ocorrências da chave primária:
Empregados = {RG1,RG2,nome}
• Duas relações, uma para a entidade e outra para o relacionamento:
Empregados = {RG,nome}
Gerência = {RG1,RG2}
Normalização
Conceito
“A normalização é uma técnica para projetar tabelas em bancos de dados relacionais
de maneira a diminuir a duplicação de informações e, ao fazer isso, proteger o banco contra
alguns tipos de problemas lógicos ou estruturais, as chamadas anomalias de dados” – Wiki
Quanto mais normalizado estiver o banco, mais tabelas ele possuirá e,
conseqüentemente, terá sua performance diminuída. As formas normais são sucessivas.
Primeira Forma Normal (1FN)
Para que uma tabela esteja na 1FN todos os seus atributos devem ser atômicos e
monovalorados e não possua grupos de repetição, ou seja, seus atributos não podem ser
tratados em partes separadas e possuem apenas um valor.
Segunda Forma Normal (2FN)
Uma tabela está na 2FN se, além de estar na 1FN, não possuir dependências funcionais
parciais, ou seja, todos os atributos não‐chave devem depender funcionalmente da chave
primária inteira. Só ocorre com chaves primárias compostas. Usando uma linguagem menos
nerd, os atributos que não fazem parte da chave primária composta devem depender
integralmente dela, eles não podem ser identificáveis por somente parte da chave, devem ser
identificáveis pela chave inteira.
• Dependência funcional
É um relacionamento entre pelo menos dois atributos. Se o valor de um conjunto de
atributos A permite descobrir o valor de outro conjunto de atributos B, dizemos que A
determina funcionalmente B ou que B depende de A. Utilizando uma linguagem
menos nerd, dizemos que os atributos de A identificam os atributos de B. Denotamos
tal relacionamento da seguinte forma:
A Æ B
CPF Æ nome, endereço, telefone
CPF, nome Æ endereço, telefone
10
Analisando os exemplos acima, notamos que com os o número de CPF podemos
identificar o nome, endereço e telefone de uma pessoa, isto é dependência funcional.
Terceira Forma Normal (3FN)
Uma tabela está na 3FN se, além de estar na 2FN, não possuir dependências transitivas
entre os atributos.
• Dependência Transitiva:
Quando um atributo não‐chave depende de outro que não é chave da relação.
OBSERVAÇÕES QUE SEMPRE CAEM NA FCC
Funções Agregadas Básicas
Uma função agregada trabalha com uma coluna inteira e retorna apenas um valor
As funções agregadas segundo o SQL‐99 são:
• AVG = calcula a média dos valores NUMÉRICOS de uma coluna
• COUNT = conta quantos itens existem na coluna
• MAX
• MIN
• SUM = soma os valores NUMÉRICOS de uma coluna
• Existem várias outras funções agregadas que são específicas de SGBDs, mas a FCC já
cobrou em alguns concursos.
11
Para quem quiser imprimir a tabela com uma melhor qualidade:
http://www.oreilly.com/catalog/sqlnut2/chapter/ch04.pdf
Funções Escalares
As funções escalares trabalham com apenas uma entrada (um valor) ou até sem nenhuma.
Dependem totalmente da implementação utilizada
• CURRENT_TIME
• LEFT
• MID
Relação entre SQL e Álgebra Relacional
• SELECT = PROJEÇÃO ∏
• FROM = PRODUTO CARTESIANO x
• WHERE = SELEÇÃO ρ
DML
• Select, Insert, Delete, Update, Visões
DDL
• Create, Drop, Alter, Truncate
12