Você está na página 1de 44

Banco de Dados Captulo 2: Modelo Relacional

Bach. em Cincia da Computao UFPB/CCT Cludio Baptista, PhD baptista@dsc.ufpb.br

2.1 Histrico Modelo Relacional


Foi introduzido por Codd (1970) Tornou-se um padro de fato para aplicaes comerciais, devido a sua simplicidade e performance. um modelo formal, baseado na teoria matemtica das relaes Um dos SGBD's precursores que implementaram este modelo foi o System R (IBM). Baseado em seus conceitos surgiram: DB2 (IBM), SQL-DS (IBM), Oracle, Informix, Ingres, Sybase entre outros.

2.2 Conceitos do Modelo Relacional O modelo relacional representa os dados num BD como uma coleo de tabelas (relaes). Cada tabela ter um nome, que ser nico, e um conjunto de atributos com seus respectivos nomes e domnios. Todos os valores de uma coluna so do mesmo tipo de dados.

2.2 Conceitos do Modelo Relacional


Exemplo de uma tabela de empregados de uma empresa
Ex.: Empregado Matr Nome Endereo Funo 100 Ana R. da Juaras, 12, Alto Secretria 250 Pedro R. J. Silva, 24, Calhau Engenheiro 108 Andr R. Itlia, 33, B. Naes Tcnico 210 Paulo R. Par, 98, B. Estados Engenheiro 105 Snia R. Oliveira, 76, Alto Engenheiro

Salrio 500,00 1500,00 950,00 1810,00 2500,00

Depart D1 D1 D2 D2 D1

2.2 Conceitos do Modelo Relacional Terminologia:


Na terminologia de BD Relacional uma linha chamada tupla, um nome de coluna chamado de atributo e cada tabela chamada de relao.

Definies:
Domnio: Um domnio D um conjunto de valores atmicos.
Ex.: Fone: conjunto de 10, dgitos CPF: conjunto de 7 dgitos Idade_Empregado: 16 idade 70 Departamentos: conjunto departamentos de uma empresa.

de

2.2 Conceitos do Modelo Relacional


A cada domnio est associado um tipo de dados ou formato.
Ex.: Fone: (ddd) ddd-dddd onde d = {0,1,2,...,9} IdadeEmpregado: inteiro entre 16 e 70.

Um esquema de relao R, denotado por R(A1,A2,...,An), um conjunto de atributos R = {A1,A2,...,An}. Cada atributo Ai o nome de um papel realizado por algum domnio D na relao R. O grau de uma relao o nmero de atributos que seu esquema contm.
Ex.: Seja o esquema Estudante (matrcula, nome, fone, idade, curso) => grau = 5

2.2 Conceitos do Modelo Relacional


Um instante (snapshot) de relao r, do esquema R(A1, A2, ...,An), denotado por r(R), o conjunto de n-tuplas r = {t1,t2,...,tn}. Cada tupla t uma lista ordenada de valores t = <v1,v2,...,vn> Os termos inteno para o esquema R e extenso para instante de relao so tambm empregados. Uma instncia r(R) um subconjunto do produto cartesiano dos domnios de R. r(R) (dom(A1) X dom(A2) X ... X dom(An))

2.2 Conceitos do Modelo Relacional Caractersticas de Relaes:


A ordem das tuplas e dos atributos no tem importncia Todo atributo possui valor atmico Cada atributo numa relao tem um nome que nico dentro da relao. Todas as tuplas (conjunto). devem ser nicas

2.2 Conceitos do Modelo Relacional Chaves de uma Relao


Valem os mesmos conceitos de superchave, chave candidata e chave primria vistos no captulo 2. Convenciona-se sublinhar os atributos que compem a chave primria. Ex.:Empregado (Matrcula, Nome, Endereo, Funo,Salrio) Um mesmo atributo pode ter nomes diferentes nas diversas relaes em que participa. Ex.: Empregado (Matrcula, Nome, Endereo, Funo, Salrio, Dep) e Departamento(CodDepart, Nome, Endereo) Atributos que representam diferentes conceitos podem ter o mesmo nome. Ex.: Ver os atributos Nome do exemplo anterior.

2.2 Conceitos do Modelo Relacional Restries de integridade


Integridade de Chave: Toda tupla tem um conjunto de atributos que a identifica de maneira nica na relao. Integridade de Entidade: Nenhum valor de chave primria poder ser NULO. Integridade Referencial: Uma relao pode ter um conjunto de atributos que contm valores com mesmo domnio de um conjunto de atributos que forma a chave primria de uma outra relao. Este conjunto chamado chave estrangeira.

2.2 Conceitos do Modelo Relacional


Exemplo de Integridade Referencial
Departamento CodDep Nome MatrGerent Produo 210 D2 Custos 105 D1 Pessoal NULL D5 ____________________________| Empregado Mat Nome Ana 100 250 Pedro 108 Andr 210 Paulo 105 Snia

Endereo Funo Salrio Dep R. Pedro I, 12, Alto Secretria 500,00 D1 R. J. Silva, 24,Calhau Engenheiro 1500,00 D1 R. Itlia, 33, Naes Tcnico 950,00 D2 R. Par, 98, Estados Engenheiro 1810,00 D2 R. Olivas, 76, Alto Engenheiro 2500,00 D1

2.2 Conceitos do Modelo Relacional Um conjunto de atributos de uma relao R1 uma chave estrangeira se satisfaz s seguintes regras:
Os atributos da chave estrangeira tm o mesmo domnio dos atributos da chave primria de outra relao R2. Um valor da chave estrangeira numa tupla t1 de R1 possui o mesmo valor da chave primria para alguma tupla t2 em R2 ou NULO.
A integridade referencial estabelece que todo valor de chave estrangeira numa relao deve corresponder a um valor de chave primria de uma segunda relao ou deve ser nulo.

2.2 Conceitos do Modelo Relacional


Uma chave estrangeira pode referenciarse a sua prpria relao (autorelacionamento). Ex.:Empregado(matrcula,nome,salrio, matr_supervisor) As restries de integridade devem ser implementadas pelo SGBD. Muitos SGBD's implementam integridade de chave e de entidade, mas no implementam integridade referencial. Estudaremos as integridades semnticas mais a frente. Ex.: "Nenhum empregado pode ganhar mais que seu gerente"

2.2.1 Operaes de atualizao

em relaes

Insero:
1. Inserir <'102','Andr',null, 'Engenheiro', '1.980','D2'> => aceito sem problemas 2. Inserir <'100', 'Maria', null, 'Tcnica', '950','D1'> => viola a restrio de chave. 3.Inserir <null, 'Ceclia', null, 'Engenheiro , '1.950','D1'> => viola restrio de integridade de entidade. 4. Inserir <'108', 'Mauro', 'Rua 4', 'Tcnico', '980','B6'> => viola a restrio de integridade referencial.

2.2.1 Operaes de atualizao

em relaes

Insero:
O que fazer quando se detectar uma violao de integridade?
Rejeitar a insero (podendo explicar o porqu) Tentar corrigir a anomalia para depois inserir.

2.2.1 Operaes de atualizao

em relaes

Remoo:
1. Remover da tabela empregado a tupla com matrcula = '100'. => remoo aceita sem problemas. 2. Remover da tabela departamento a tupla com CodDep = 'D1'. =>viola a regra de integridade referencial. Pois existem empregados que esto alocados neste departamento.

2.2.1 Operaes de atualizao

em relaes

Remoo:
O que fazer quando uma violao ocorrer numa remoo?
Rejeitar a remoo Dar o efeito cascata na remoo, removendo todas as tuplas referenciadas por aquela tupla que est sendo removida. Modificar os atributos referenciados para novos valores ou nulos (caso no faam parte da chave primria).

Dos trs tipos de restries de integridade discutidas, uma operao de remoo poder violar apenas a integridade referencial.

2.2.1 Operaes de atualizao

em relaes

Modificao:
1. Modificar o salrio do empregado com matrcula='250 => operao aceita sem problemas. 2. Modificar o nmero do departamento da tupla de empregado com matrcula '210' para 'D1 => operao aceita sem problemas. 3. Modificar o nmero do departamento de empregado '108' para 'D9 => viola a integridade referencial 4. Modificar a matrcula do empregado '100' para '250 => viola regra de integridade de chave.

2.3 lgebra Relacional


uma linguagem de banco de dados procedural e formal.
Seja o esquema relacional de uma empresa hipottica a seguir:
Empregado(matr, nomeE, endereo, sexo, salrio, supervisor, depto) Departamento(codDepto, nomeD, matrGerente) DepLocalizaes(codDepto, Localizao) Alocao(matrEmp, codProj, numHoras) Projetos(codProj, nome, localizao, deptoControla) Dependentes( matrEmp, nomeDep, sexo, dataNasc, parentesco)

2.3 lgebra Relacional


Usaremos o esquema acima para exemplificar os diversos operadores da lgebra relacional. Operao de Seleo ()
Seleciona um subconjunto de tuplas de uma relao, de acordo com uma condio Sintaxe: <predicado> (<Relao>) Onde: = Operador de seleo Predicado: <atributo> <op> <constante> ou <atributo> <op> <atributo> <op> = {=, >, <, , , } No predicado podemos ter as clusulas conectadas pelos conectivos Booleanos AND, OR e NOT.

2.3 lgebra Relacional


Exemplo 1: Selecione os empregados que trabalham no departamento 4. DEPTO = 4 (Empregado) Exemplo 2: Selecione os empregados que ganham mais de R$ 3.000,00 salrio>3000 (Empregado) Exemplo 3: Selecione os empregados que ganham mais de R$2.000,00 e trabalham no departamento 4, ou ganham menos de R$500,00 e trabalham no departamento 5. (salrio>3000 AND depto=4) OR (salrio < 500 AND depto=5)(Empregado)

2.3 lgebra Relacional


O operador de seleo unrio (aplicado a uma nica relao) O grau da relao resultante o mesmo da relao original O nmero de tuplas da relao resultante menor ou igual ao nmero de tuplas da relao original. A seleo comutativa: <COND1>( <COND2> (<COND1> (R))

(R))

<COND2>

<COND1>( <COND2>((<CONDn> (R)) ))

2.3 lgebra Relacional


Operao de Projeo
Seleciona um subconjunto de atributos de uma dada relao. Sintaxe: <LISTA DE ATRIBUTOS> (Relao) Obs: Se a lista de atributos inclui apenas atributos no-chave, tuplas duplicadas podero aparecer no resultado, porm, a operao de projeo elimina esta duplicao. Exemplo: <FUNO, SALRIO>(Empregado)

2.3 lgebra Relacional


O nmero de tuplas da relao resultante ser menor ou igual ao da relao original <LISTA-1> (<LISTA-2> (Relao)) = (<LISTA-1> (Relao)) <LISTA-2> <LISTA-1> Exemplo: NOME, SALRIO(NOME, FUNO,SEXO,SALRIO (Empregado)) = NOME, SALRIO(Empregado)

2.3 lgebra Relacional


Combinando Seleo e Projeo:
Exemplo: Obtenha o nome e salrio dos empregados do departamento 5 NOME, SALRIO(DEPTO = 5 (Empregado)) Alternativamente podemos usar uma notao que usa uma sequncia dos resultados dando nome as relaes intermedirias: EmpDepto5 DEPTO = 5 (Empregado) Resultado NOME, SALRIO(EmpDepto5)

2.3 lgebra Relacional


Unio A unio de duas relaes, R S, o conjunto de tuplas que est em R ou S ou em ambas. Duplicatas so eliminadas.
R A a d c B b a b C c f d

S D b d

E g a

F a f

RUS a b d a c b b g

c f d a

2.3 lgebra Relacional


Exemplo: Obtenha a matrcula dos empregados que trabalham no departamento 5 ou supervsionam empregados que trabalham no departamento 5. EmpDepto5 depto = 5(Empregados) Temp1 matricula(EmpDepto5) Temp2 supervisor(EmpDepto5) Resultado Temp1 U Temp2

2.3 lgebra Relacional


Interseo
A interseo de duas relaes, R S, uma relao que inclui todas as tuplas que esto em R e em S.
R A a d c B b a b C c f d

S D b d

E g a

F a f

RS
d a f

2.3 lgebra Relacional


Diferena
A diferena entre duas relaes R S, o conjunto de tuplas que esto em R mas no esto em S.
R A a d c
B b a b C c f d

S D b d

E g a

F a f

R-S a c b b c d

2.3 lgebra Relacional


Observaes:
1) As operaes de conjunto (Unio, Interseo, Diferena) devem ser compatveis de unio. Duas relaes R(A1,A2, , An) e S(B1, B2, , Bn) so compatveis de unio se tm o mesmo grau e domnio(A) = domnio(B), para 1 <= i <= n. 2) R U S = S U R RS=SR RSSR R U (S U T) = (R U S) U T R (S T) = (R S) T

2.3 lgebra Relacional


Produto Cartesiano
O produto Cartesiano de duas relaes R X S combina cada tupla de R com cada tupla de S. O resultado de R(A1, A2, , An) X S(B1, B2, , Bm) uma relao Q com n + m atributos Q(A1, A2, , An, B1, B2, , Bm). Se R tem x tuplas e S tem y tuplas => R X S ter x*y tuplas

2.3 lgebra Relacional


Exemplo: Obtenha para cada empregado do sexo feminino, uma lista dos nomes de seus dependentes Mulher sexo=F(Empregados) NomesMulheres matrcula, nome (Mulher) DependentesMulher1 NomesMulheres X Dependentes DependentesMulher2 matr = matrEmp (DependentesMulher1) Resultado nomeE, nomeDep (DependentesMulher2)

2.3 lgebra Relacional


Juno
Uma juno de duas relaes R(A1, A2, , An) e S(B1,B2,,Bm), denotada por R |x| <condio de juno> S, usada para combinar tuplas de duas relaes numa nica tupla. O resultado de uma juno uma relao Q com n + m atributos Q(A1, , An, B1, , Bm) Q contm uma tupla para cada combinao de tuplas (R x S) que satisfaz a condio de juno Uma condio de juno tem a forma: <cond> AND <cond> AND AND <cond> onde,<cond>: Ai Bi, Ai atributo de R, Bi atributo de S, dom(Ai) = dom(Bi) e = {=, <, >, , , }

2.3 lgebra Relacional


Exemplo: Obtenha o nome do gerente de cada departamento
DeptoGer Departamento |x| matrGer Empregado Resultado nomeD, nomeE (DeptoGer)
= matr

Quando a condio de juno uma igualdade a juno chamada de equijoin. Juno Natural uma equijoin onde um dos atributos com valores repetidos (condio de juno) eliminado.

2.3 lgebra Relacional


Diviso
A diviso de duas relaes R S, onde atributos(S) atributos(R), resulta na relao T com atributos(T) = { atributos(R) atributos(S)}, onde para cada tupla t que aparece no resultado, os valores de t devem aparecer em R combinado com cada tupla de S.

2.3 lgebra Relacional


Exemplo de Diviso
R A a1 a2 a3 a4 a1 a3 a2 a3 a4 a1 a2 a3 B b1 b1 b1 b1 b2 b2 b3 b3 b3 b4 b4 b4
S A a1 a2 a3
RS B b1 b4

2.3 lgebra Relacional


Obs.: Quase sempre, a diviso usada quando temos nas consultas frases do tipo para todos Exemplo: Obtenha o nome dos empregados que trablham em todos os projetos que Silva trabalha Silva nome = silva(Empregados) ProjSilva codProj (Alocao |x| matrEmp = matr Silva) ProjEmp codProj, matrEmp (Alocao) TrabProjSilva (ProjEmp ProjSilva) Result nome (TrabProjSilva |x| matrEmp = matr Empregado)

2.3 lgebra Relacional


Operao Rename
Permite que renomeemos Relaes e/ou atributos para que se evite a ambigidade na hora de compararmos atributos com mesmo nome de diferentes relaes. Pode renomear uma relao ou os atributos da relao ou ambos. A operao Rename quando aplicada a uma relao R de grau N denotada por: S(B1,B2,,Bn) (R) ou S(R) ou (B1,B2,, Bn) (R) onde: denota o operador Rename S o nome da nova relao B1, , Bn so os nomes dos novos atributos

2.3 lgebra Relacional


Exemplo de consultas
1)Obtenha o nome e o endereo de todos os empregados do departamento de Pesquisa Pesquisa nomeD = Pesquisa(Departamento) Resultado nomeE, |x| endereco (Empregado depto = codDepto Pesquisa)

2.3 lgebra Relacional


2) Para cada projeto localizado em Natal, liste o cdigo do projeto, o cdigo do departamento que controla o projeto e o nome, endereo e salrio do gerente deste departamento ProjNatal localizao = Natal (Projetos) Result1 (ProjNatal |x| depControla = codDepto Departamento) Result2 (Result1 |x| matrGerente = matr Empregado) Resultado codProj, codDepto, nomeE, endereo, salrio (Result2)

2.3 lgebra Relacional


3) Encontre os nomes dos empregados que trabalham em todos os projetos do departamento 6 ProjDep6 codProj (depControla = 6 (Projetos)) Temp_1 matrEmp, codProj (Alocao) Temp_2 (Temp1 ProjDep6) Resultado nomeE (Temp_2 |x| matrEmo = matr Empregado)

2.3 lgebra Relacional


4) Faa uma lista dos cdigos dos projetos que envolvem um empregado cujo nome Silvacomo trabalhador ou como gerente do departamento que controla o projeto. Silva matr (nomeE=Silva (Empregado)) ProjSilvaPart codProj (Silva |x| matr=matrEmp Alocao) DepSilvaGer codDepto (Silva |x| matr=matrGerenteDepartamento) ProjDepSilGer codProj (DepSilvaGer |x| codDepto=deptoControla Projeto) Resultado ProjSilvaPart U ProjSilvaPart

2.3 lgebra Relacional


5) Liste os nomes dos empregados que no tm dependentes TodosEmpr matr (Empregado) EmpComDep matrEmp (Dependentes) EmpSemDep (TodosEmpr EmpComDep) EmpSemDep2 (matricula)(EmpSemDep) Resultado nomeE (EmpSemDep2 |x| matricula=matrEmpregado)

2.3 lgebra Relacional


6) Liste os nomes dos gerentes que tm pelo menos 1 dependente Gerentes matrGerente(Departamento) EmpComDepend matrEmp (Dependentes) GerComDepend (matrG)(Gerentes EmpComDepend) Resultado nomeE (GerComDepend |x| matrG = matr Empregado)

Você também pode gostar