Módulo 4b:Banco de Dados
• Um Banco de Dados (BD) é um armazém de informações sobre algum empreendimento.
•UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
•CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA
•DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
•Professor Ulrich Schiel
Diagrama E-R:
Associação dos Amigos dos Animais de Estimação (AAAE)
O Modelo de Entidades-Relacionamentos
• Classes de entidades são conjuntos
• O relacionamento (a relação) “é proprietário de” entre Pessoa e Animal é uma relação binária do tipo um-para-muitos capturada pelos pares (pessoa, animal)
• Um fato do tipo “nenhum animal tem mais de um dono” é uma regra do negócio e deve ser mantida no Banco de Dados.
• Entidades e relacionamentos podem ter atributos, que são listas de valores que caracterizam uma entidade.
O Modelo Relacional • As entidades e os relacionamentos podem ser
implementados no Modelo Relacional (MR)
• Um BD Relacional usa relações matemáticas definidas por tabelas para modelar os objetos (entidades) e seus relacionamentos
• Cada linha da tabela representa uma entidade com os seus atributos
• Uma tabela é um conjunto
O Modelo Relacional
• As tabelas descrevem uma relação
• Formalmente uma relação em um BD é uma relação entre domínios de valores
• D1 x D2 x D3 x ...... x Dn,
• Ou seja, temos
• R D1 x D2 x D3 x ...... x Dn
Relações Pessoa e Animal
O Modelo Relacional
• Chave de uma relação: subconjunto mínimo de atributos cujos valores não se repetem
• Se uma das regras de negócio do AAAE determina que pessoas distintas tem nomes distintos, o atributo nome pode ser a chave para a relação pessoa
O Modelo Relacional
• Uma Chave Estrangeira é um atributo de uma relação, do mesmo domínio de um atributo que é chave em outra relação. Esse atributo estabelece um relacionamento entre os objetos das duas relações
• Na relação que segue, Proprietário, relaciona Pessoa e Animal e é composta por dois atributos que são chaves estrangeiras.
• A primeira tupla estabelece que
Roberto da Silva é o proprietário de Pintado
O Modelo Relacional
• Relações ou Tabelas representam entidades.• Relacionamentos também podem ficar em
relações• Relacionamentos um-para-um ou um-para-
muitos também podem ser modelados como atributos
• P.ex., o relacionamento é proprietário é do tipo um-para-muitos. Então, a tabela Proprietário pode ser eliminada e o relacionamento ser estabelecido na tabela Animal através de uma chave estrangeira.
Operações Relacionais
• União, Diferença, Intersecção, etc..
• Restrição (seleção): cria um subconjunto de uma relação (das linhas )
• Projeção: cria um subconjunto das colunas
• Junção: cria um subconjunto do produto cartesiano de duas ou mais relações
Operações nas Relações - Restrição• Exemplo:
Seleção de Animal_Proprietário
onde Tipo_de_animal = “Cachorro”
fornecendo Cachorro-Proprietário
• Notação:
Cachorro_Proprietário = Animal_Proprietário[Tipo_de_Animal=“Cachorro”]
Operações nas Relações - Projeção
• Exemplo:
Projeção de Animal_Proprietário
sobre (Nome, Tipo_de_animal )
fornecendo Preferência
• Notação: Preferência=Animal_Proprietário[Nome, Tipo_de_Animal]
• Exemplo:Junção de Pessoa e Animal_Proprietário baseada em Nomefornecendo Listagem
• Notação: Pessoa.P [P.Nome=A.Nome] Animal_Proprietário.A
Operações nas Relações
• Como relações são conjuntos de n-tuplas as operações binárias de União, Interseção e Diferença também podem ser aplicadas a duas relações que tenham a mesma estrutura
Exemplo: União de Pessoas.CAAE1, Pessoas.CAAE2fornecendo Pessoas_do_Clube
• A Junção, operação que junta relações que tenham um atributo em comum, é implementada pelo Produto Cartesiano seguida da operação de Restrição
Processamento de consultas
• Todas operações podem ser combinadas para que um usuário do BD possa fazer uma consulta mais complexa.
Exemplo:
Considerando que as únicas relações do BD são Pessoa e Animal-Proprietário, como fazer a seguinte consulta?
“Forneça o nome de todos os gatos cujos donos vivem no estado do Rio de Janeiro”
EXEMPLO “Forneça o nome de todos os gatos cujos donos vivem
no estado do Rio de Janeiro”
• Resultado1 = Animal-Proprietario[Tipo-de-animal = “Gato”] - Seleção• Resultado2 = Pessoa[Estado = “RJ”] - Seleção• Resultado3 = Resultado1.R1[R1.Nome=R2.Nome]Resultado2 – Junção• Final = Resultado3[Nome-do-animal] - Projeção
• Alternativa:• Final = (Animal-Proprietario[Tipo-de-animal = “Gato”].R1)[R1.Nome= R2.Nome]
(Pessoa[Estado = “RJ”].R2) [Nome]
• Versão econômica:
• Resultado1 = (Animal-Proprietario[Tipo-de-animal = “Gato”]) [Nome, Nome-do-animal]
• Resultado2 = (Pessoa[Estado = “RJ”])[Nome]
• Resultado3 = Resultado1.R1[R1.Nome=R2.Nome]Resultado2.R2
• Final = Resultado3[Nome-do-Animal]
Álgebra Relacional
• A Álgebra Relacional é uma linguagem abstrata para transformação de relações
• A Álgebra Relacional permite todas as operações citadas, inclusive o uso combinado das operações de restrição, projeção e junção
Álgebra Relacional
• Na Álgebra Relacional a consulta
“Forneça o nome de todos os gatos cujos donos vivem no estado do Rio de Janeiro” , seria:
projeção
junção
(restrição Animal-Proprietário
onde Tipo-de-animal = “Gato”) e
(restrição Pessoa onde Estado = “RJ”)
baseada Nome
sobre Nome-do-animal fornecendo ResultadoFinal)
SQL
• Exemplo: A mesma consulta escrita em SQL
“Forneça o nome de todos os gatos cujos donos vivem no estado do Rio de Janeiro”
SELECT Nome-do-Animal
FROM Animal_Proprietário, Pessoa
WHERE Animal-Proprietário.Nome = Pessoa.Nome
AND Tipo-animal = “Gato”
AND Estado = “RJ”
Projeção
Restrição
Junção
Manipulação do BD
• O BD é dinâmico. Além das operações de consulta, está sujeito às operações de:
– Inclusão– Exclusão– Atualização
• Essas operações não devem afetar a integridade dos dados
Manipulação do BD
• Exemplos de operações que modificam o BD (SQL)
INSERT INTO Animal_ProprietárioVALUE (“Souza, Katia “, “Lex”, “Cachorro”, “Pastor”)
UPDATE Animal_Proprietário SET Nome = “Silva, Maria da” WHERE Nome-do-animal = Pintado
DELETE Animal_Proprietário PessoaWHERE Nome = “Lad”
Integridade do BD
• As operações que modificam o BD são efetuadas obedecendo as regras de negócio e mantendo o BD correto e consistente, isto é, sem ferir a integridade do BD
• Integridade do BD: • Integridade dos Dados (domínio)• Integridade das Entidades (chave primária)• Integridade Relacional (chave estrangeira)
Integridade do BD
• Os Sistemas de Gerenciamento de Banco de Dados SGBS tais como Oracle, MySQL, Informix ..., etc, dispõem de recursos que automaticamente gerenciam a Integridade do BD, deixando para os projetistas apenas os cuidados com as regras dos negócios que são implementadas com muita facilidade em SQL
• Detalhes sobre essas facilidades serão vistos em Banco de Dados I e
Banco de Dados II
Exemplo
• Seja o banco de dados
PESSOA(Nome, Endereco, Cidade, Estado);
ANIMAL(Nome-do-animal, Tipo, Raça);
PROPRIETARIO(Nome, Nome-do-anuimal);
• Queremos determinar os proprietários que não têm gatos e cachorros ao mesmo tempo.
1. Separar os animais em gatos e cachorros
2. Acrescentar a cada um seus proprietários
3. Determinar a lista dos proprietários de cada um
4. Determinar a lista dos proprietários que só aparecem em uma das listas
Exercício
• Seja o banco de dados
CURSO(Cur, Disc); EST(Matr, NomeE, CRE);
MATR(Matr, Disc, Turma, Nota); PROF(NomeP, Disc, Turma);
• Obtenha os dados:• Os nomes dos professores do curso de ‘Ciência da Computação’• Os nomes e notas dos estudantes reprovados em ‘Matematica Discreta’
pelo professor ‘Ulrich’• Todas disciplinas cursadas por “Djaildo” e por “Anissa”
• OBS: lembre-se que sobre estas relações podem ser aplicadas as operações convencionais sobre conjuntos, como união, intersecção, diferença, assim como as operações relacionais:
• .seleção, projeção e junção