Transcript of 2-Modelo Relacional v3
Slide 1Livros Texto : Introdução a Sistemas de Banco de Dados -
Date
Sistemas de Banco de Dados – Korth & Silberschatz Sistemas de
Banco de Dados Fundamentos e Aplicações – Elmasri &
Navathe
Banco de Dados
O Modelo Relacional de Dados está fundamentado :
Aspecto de estrutura : o banco de dados é representado com uma
coleção de relações (Tabelas)
Aspecto de integridade : estas relações satisfazem certas
restrições de integridade
Aspectos de manipulação : as relações são manipuladas por
operadores da álgebra relacional
Modelo Relacional
Conceitos Básicos
Modelo Relacional - Slide *
O Modelo Relacional de Dados representa o banco de dados como uma
coleção de relações.
Informalmente :
Uma relação se assemelha a uma tabela
Cada linha da tabela representa uma coleção de valores de dados
relacionados
Cada linha de uma tabela representa um fato do mundo real – uma
instância de uma entidade ou de um relacionamento
Nomes das colunas especificam o modo como se deve interpretar os
valores dos dados em cada linha
Modelo Relacional
Conceitos Básicos
Uma linha é chamada de tupla
O título da coluna é chamado de atributo
A tabela é chamada de relação
Tipo de dado que descreve os possíveis valores que podem aparecer
nas coluna é chamado de domínio
Modelo Relacional
Conceitos Básicos
Esquema de uma relação
R(A1, A2, ..., An) – composto pelo nome da relação R e um conjunto
de atributos. Cada atributo A, é o nome de um papel desempenhado
por algum domínio D no esquema da relação R.
Funcionario(matricula, nome, endereco, telefoneF, telefoneC,
salario)
Modelo Relacional
Conceitos Básicos
Aluno(nome, endereco, telefoneF)
D(telefoneF) = números
Modelo Relacional
Conceitos Básicos
Explicita o papel de um domínio em uma relação
Os atributos de uma dada relação devem ser diferentes (teoria dos
conjuntos)
Ex : Nome, Endereço, Salário
Tupla
Corresponde a uma lista ordenada de valores t = <v1, v2, ...,
vn>, onde cada valor de v é um elemento do dom(A) ou um valor
especial nulo. Um relação r(R) é um conjunto de n-tuplas
r(R) = {t1, t2, ..., tn}
Cardinalidade de uma relação
Modelo Relacional
Conceitos Básicos
Caraterísticas das Relações
Uma relação é um conjunto de tuplas, matematicamente não existe
ordenamento entre os elementos de um conjunto
Não existem tuplas duplicadas
Não existem apontadores
Todos os atributos são atômicos, valores compostos e multivalorados
não são permitidos
Valores nulos representam a ausência de valor
Modelo Relacional - Slide *
Caraterísticas das Relações
Interpretação da Relação
O esquema de uma relação é uma afirmação e cada tupla um fato. Uma
relação representa fatos sobre entidade e relacionamentos
Exemplo :
(14567, Ana Santos, Rua Pará, 3456734, 99875436, analista,
3000)
(14568, Alicia Matos, Rua Ceará, 3456733, 99875435,
arquiteta,4000)
(14569, Carlos Queiros, Rua Maranhão, 3456732, 99875437,
engenheiro, 5000)
Modelo Relacional - Slide *
Chaves primária : Um conjunto de atributos únicos e não nulos com
característica de minimalidade, que identificam unicamente uma
tupla
Chave estrangeira: Um atributo ou uma combinação de atributos,
cujos valores aparecem necessariamente na chave primária de uma
outra relação ou da mesma relação.
t1 [FK] = t2 [PK] ou é nulo
Modelo Relacional
Integridade de Entidade
Toda tupla de uma relação é unicamente identificada por um ou mais
atributos definidos como “chave primária”, cujos valores dos
atributos não pode conter nulos
Integridade Referencial
Regras de relacionamentos entre duas relações usando “chaves
primárias” e “chaves estrangeiras”, com a finalidade de manter
consistência na atualização
Integridade de Domínio
Modelo Relacional - Slide *
Fornece uma lista de valores dos atributos para uma nova
tupla
Pode violar :
restrição de integridade referêncial
Exclusão (Delete)
Elimina uma tupla da relação, utiliza uma condição nos atributos
para selecionar a tupla a ser eliminada
Excluir Empregado com matricula=123456
Pode violar:
Atualização (Update)
Altera valores de um ou mais atributos numa tupla ou tuplas.
Especifica uma condição nos atributos para selecionar a tupla a ser
modificada
Altere o salário da tupla Empregado com matricula=123456
para 2000
Pode violar:
Restrição de domínio para o atributo alterado
Restrição de integridade referencial se afetar um atributo que é
chave estrangeira
Se afetar chave primária produz exclusão e inserção da tupla
Modelo Relacional - Slide *
“Linguagem de consulta, que consiste em um conjunto de operações
que tomam uma ou duas relações como entrada e produzem uma nova
relação como resultado”
Korth & Silberschatz
“Conjunto básico de operações da modelo relacional. Essas operações
possibilitam ao usuário especificar solicitações básicas de
recuperação. O resultado de uma recuperação é uma nova relação, que
pode ter sido formada a partir de uma ou mais relações “
Elsmari & Navathe
Modelo Relacional
Álgebra Relacional
Componente para manipulação do modelo
Conjunto de operadores que tomam relações como operandos e retornam
uma relação como resultado
Operadores baseados na teoria matemática dos conjuntos
(união, interseção, diferença, produto cartesiano) e operadores
específicos (seleção/restrição, projeção, divisão e junção)
Modelo Relacional
Álgebra Relacional
Selecionar (restrição)
Utilizada para selecionar um subconjunto de tuplas de uma relação
que satisfaça uma condição
<condição da seleção> (R)
mais de R$ 3.000,00
ou
<nome do atributo> <operador de comparação> <nome do
atributo>
Ex : Selecionar todos os empregados que trabalham no departamento 2
e ganham acima de 2400 ou que trabalham no departamento 3 e ganham
acima de 3000
(departamento=2 and salario > 2400) or
(departamento=3 and salario>3000) (Empregado)
Modelo Relacional
Álgebra Relacional
<lista de atributos> (R)
todos os empregados
Operações da teoria dos conjuntos
União - O resultado é uma relação que contém todas as tuplas de
duas relações sem repetições. Todas as tuplas (compatíveis) que
estão em R, ou em S, ou em ambas.
R S
Ou (união) do depatamento 03.
EmpDep2 departamento=2 (Empregado)
EmpDep3 departamento=3 (Empregado)
Modelo Relacional - Slide *
Interseção - O resultado é uma relação que contém apenas as tuplas
que pertencem às duas relações.
R S
que são analistas
Modelo Relacional - Slide *
Diferença - O resultado é uma relação que contém as tuplas que
aparecem na primeira relação, mas não aparecem na segunda
relação.
R – S
não são analistas
Modelo Relacional - Slide *
Para as operações união, interseção e diferença as duas relações
envolvidas devem ter compatibilidade: mesmo número de atributos e
cada par correspondente de atributos o mesmo domínio
Modelo Relacional
Álgebra Relacional
Modelo Relacional - Slide *
Produto Cartesiano - O resultado é uma relação que contém todas as
tuplas da primeira relação associadas às tuplas da segunda relação.
(Análise combinatória)
R X S
Se R tem n tuplas e R tem m tuplas
R X S terá nxm tuplas
Modelo Relacional
Álgebra Relacional
Produto Cartesiano
Exemplo : Para cada empregado do sexo feminino gerar uma lista com
todos os seus dependentes
EmpregadoMulher sexo=“F” (Empregado)
Obs – Produto cartesiano apresenta tuplas com atributos combinados
de duas relações.
Modelo Relacional
Álgebra Relacional
Junção (join)
O resultado é a combinação de tuplas relacionadas de duas relações
em uma única tupla. Apenas as combinações de tuplas que
satisfizerem a condição de junção aparecerão no resultado.
Junção entre R(A1, A2, ..., An) e S(B1, B2, ..., Bm)
é R <condição> S
Junção é um a relação Q com n+m atributos
Q (A1, A2,..., An, B1, B2, ...,Bm)
Modelo Relacional
Álgebra Relacional
Junção (join)
Exemplo : Fazer uma lista com o nome do departamento, nome do
gerente e salario dos gerentes.
GerenteDep (Departamento codgerente=cod Empregado)
Resultado nomedepart,nome,salario(GerenteDep)
Modelo Relacional
Álgebra Relacional
Divisão
Produz como resultado os elementos da primeira relação que se
relacionam com todos os elementos da segunda relação. A tuplas
resultantes possuem os atributos da primeira relação menos os
atributos da segunda. R S
Modelo Relacional
Álgebra Relacional
Divisão
Exemplo : Recuperar as matriculas dos empregados que trabalham em
todos os projetos nos quais Ana Santos trabalha.
FuncAna nome=“Ana Santos” (Empregado)
ProjAna codproj(TrabalhaEm codemp=cod FuncAna)
ProjTodos codemp, codproj(TrabalhaEm)
Resultado(cod) ProjTodos ProjAna
Modelo Relacional - Slide *
Consulta 1: Liste o nome e salário de todos os empregados que
trabalham no departamento “Engenharia” e que ganham mais de
3000
Consulta 2: Recuperar o nome e endereço de todos os empregados que
trabalham para o departamento “Informática”
Consulta 3: Para cada projeto controlado pelo departamento
“Engenharia”, liste o codigo do projeto, nome, endereço e data de
nascimento do gerente do departamento que controla o projeto.
Consulta 4: Encontre o nome de todos os empregados que trabalham
nos projetos controlados pelo departamento 3.
Consulta 5: Recuperar o nome dos empregados que não têm
dependentes
Consulta 6: Liste a matricula e nome dos gerentes que tenham pelo
menos um dependente
Consulta 7: Liste nome do empregado e nome do projeto de todo os
empregados que trabalham em projetos controlados pelo departamento
de “Engenharia”, mas que não trabalham em projetos controlados pelo
departamento de “Informática”
Modelo Relacional