Sunteți pe pagina 1din 7

Cálculo Relacional Bases do SQL

Banco de Dados: Teoria e Prática ▪ Álgebra Relacional


▫ operacional
André Santanchè Cálculo Relacional
Instituto de Computação – UNICAMP

Setembro 2011 ▫ Declarativo
(Ramakrishnan, 2003)

Picture by Evan Leeson [http://www.flickr.com/photos/ecstaticist/]


Operacional x Declarativo

▪ Declarativo:
▫ Quero um misto quente
▪ Operacional: Caso Prático - Taxis
▫ Quero duas fatias de pão de forma,
recheadas com uma fatia de queijo e
uma fatia de presunto. Tudo isto bem
tostado.

Esquema Conceitual – Exemplo Esquema Conceitual – Exemplo


Cliente
Táxis Cliente

CliId
DataPedido Placa
Nome CPF
Marca
Modelo ISA CGC
AnoFab

Cliente Cliente
1 N Particular Empresa
Cliente Corrida N 1 Taxi
Para ilustrar o tema apresentado, foram acrescentadas
duas entidades que são especialização de Cliente. A
Este é um subconjunto do Estudo de Caso primeira representa um indivíduo que irá pagar a conta,
proposto “Despacho e controle de Táxis via a segunda representa um funcionário de uma empresa
terminais móveis ligados on-line com um sistema conveniada, para a qual a conta será enviada. Um
multi-usuário” por prof. Geovane Cayres cliente pode pertencer a ambas especializações.
Magalhães
Tabelas para exemplo - Táxis
Esquema Conceitual completo
Táxis Cliente Particular (CP)
CliId Nome CPF
CliId DataPedido
Placa
Nome 1532 Asdrúbal 448.754.253-65
Marca
Modelo
AnoFab
1755 Doriana 567.387.387-44
1780 Quincas 546.373.762-02
Cliente 1 N Corrida N 1 Taxi
Cliente Empresa (CE)
CliId Nome CGC
CPF
ISA CGC 1532 Asdrúbal 754.856.965/0001-54
1644 Jepeto 478.652.635/0001-75
Cliente Cliente 1780 Quincas 554.663.996/0001-87
Particular Empresa 1982 Zandor 736.952.369/0001-23

Tabelas para exemplo - Táxis Cálculo Relacional

Táxi (TX)
Forma Geral - Expressão
Placa Marca Modelo AnoFab { t | F(t) }
DAE6534 Ford Fiesta 1999
DKL4598 Wolksvagen Gol 2001
DKL7878 Ford Fiesta 2001 conjunto de tuplas t tal que F(t) é verdadeiro
JDM8776 Wolksvagen Santana 2002
JJM3692 Chevrolet Corsa 1999
(Guimarães, 2003)
Corrida (R1)
ClId Placa DataPedido
1755 DAE6534 15/02/2003
1982 JDM8776 18/02/2003

Relação de Intervalo (Range) Projeção


{ t | t ∈ TX } { t.marca, t.modelo | t ∈ TX }

Placa Marca Modelo AnoFab Placa Marca Modelo AnoFab


DAE6534 Ford Fiesta 1999 DAE6534 Ford Fiesta 1999
DKL4598 Wolksvagen Gol 2001 DKL4598 Wolksvagen Gol 2001
DKL7878 Ford Fiesta 2001 DKL7878 Ford Fiesta 2001
JDM8776 Wolksvagen Santana 2002 JDM8776 Wolksvagen Santana 2002
JJM3692 Chevrolet Corsa 1999 JJM3692 Chevrolet Corsa 1999

Marca,Modelo(TX)
Projeção Seleção
{ t.marca, t.modelo | t ∈ TX } ?

Marca Modelo Placa Marca Modelo AnoFab


Ford Fiesta DAE6534 Ford Fiesta 1999
Wolksvagen Gol DKL4598 Wolksvagen Gol 2001
Wolksvagen Santana DKL7878 Ford Fiesta 2001
Chevrolet Corsa JDM8776 Wolksvagen Santana 2002
JJM3692 Chevrolet Corsa 1999

Marca,Modelo(TX) AnoFab>2000(TX)

Seleção Seleção
{ t | t ∈ TX and t.anofab>2000 } { t | t ∈ TX and t.anofab>2000 }

Placa Marca Modelo AnoFab Placa Marca Modelo AnoFab


DAE6534 Ford Fiesta 1999 DKL4598 Wolksvagen Gol 2001
DKL4598 Wolksvagen Gol 2001 DKL7878 Ford Fiesta 2001
DKL7878 Ford Fiesta 2001 JDM8776 Wolksvagen Santana 2002
JDM8776 Wolksvagen Santana 2002
JJM3692 Chevrolet Corsa 1999

AnoFab>2000(TX) AnoFab>2000(TX)

União União
? { t | t ∈ C1 or t ∈ C2 }
CliId Nome CliId Nome
1532 Asdrúbal 1532 Asdrúbal
1755 Doriana CliId Nome 1755 Doriana CliId Nome
1780 Quincas 1532 Asdrúbal 1780 Quincas 1532 Asdrúbal
1644 Jepeto 1644 Jepeto
1755 Doriana 1755 Doriana
CliId Nome 1780 Quincas CliId Nome 1780 Quincas
1532 Asdrúbal 1982 Zandor 1532 Asdrúbal 1982 Zandor
1644 Jepeto 1644 Jepeto
1780 Quincas 1780 Quincas
1982 Zandor C1  C2 1982 Zandor C1  C2
Interseção Interseção
? { t | t ∈ C1 and t ∈ C2 }
CliId Nome CliId Nome
1532 Asdrúbal 1532 Asdrúbal
1755 Doriana 1755 Doriana
1780 Quincas CliId Nome 1780 Quincas CliId Nome
1532 Asdrúbal 1532 Asdrúbal
CliId Nome 1780 Quincas CliId Nome 1780 Quincas
1532 Asdrúbal 1532 Asdrúbal
1644 Jepeto 1644 Jepeto
1780 Quincas 1780 Quincas
1982 Zandor C1  C2 1982 Zandor C1  C2

Diferença Diferença
? { t | t ∈ C1 and not t ∈ C2 }

CliId Nome CliId Nome CliId Nome CliId Nome CliId Nome CliId Nome
1532 Asdrúbal 1532 Asdrúbal 1755 Doriana 1532 Asdrúbal 1532 Asdrúbal 1755 Doriana
1755 Doriana 1644 Jepeto 1755 Doriana 1644 Jepeto
1780 Quincas 1780 Quincas 1780 Quincas 1780 Quincas
1982 Zandor 1982 Zandor

C1 - C2 C1 - C2

Produto Cartesiano Produto Cartesiano


? { t, s | t ∈ C1 and s ∈ R1 }
CliId Nome ClId Placa DataPedido CliId Nome ClId Placa DataPedido
1532 Asdrúbal 1755 DAE6534 15/02/2003 1532 Asdrúbal 1755 DAE6534 15/02/2003
1755 Doriana 1982 JDM8776 18/02/2003 1755 Doriana 1982 JDM8776 18/02/2003
1780 Quincas 1780 Quincas
C1 × R1 C1 × R1
Junção Junção
? { t, s | t ∈ C1 and s ∈ R1 and t.cliid < s.cliid}

C1 C1.CliId<R1.CliIdR1 C1 C1.CliId<R1.CliIdR1

Junção Equi-Junção
{ t, s | t ∈ C1 and s ∈ R1 and t.cliid < s.cliid} { t, s | t ∈ C1 and s ∈ R1 and t.cliid = s.cliid}
(CliId) Nome (ClId) Placa DataPedido
1532 Asdrúbal 1755 DAE6534 15/02/2003
1532 Asdrúbal 1982 JDM8776 18/02/2003
1755 Doriana 1982 JDM8776 18/02/2003
1780 Quincas 1982 JDM8776 18/02/2003

C1 C1.CliId<R1.CliIdR1 C1 CliIdR1

Equi-Junção Variáveis Livres


{ t, s | t ∈ C1 and s ∈ R1 and t.cliid = s.cliid} ▪ Aparecem à esquerda do |
(CliId) Nome (ClId) Placa DataPedido { t | F(t) }
1755 Doriana 1755 DAE6534 15/02/2003
▪ Produzem os resultados da expressão

C1 CliIdR1
Quantificadores Quantificador Existencial
▪ Universal () { t | t ∈ C1 and s(s ∈ R1 and t.cliid = s.cliid)}
▫ qualquer que seja (CliId) Nome (ClId) Placa DataPedido
▪ Existencial () 1532 Asdrúbal 1755 DAE6534 15/02/2003
1532 Asdrúbal 1982 JDM8776 18/02/2003
▫ existe pelo menos um 1755 Doriana 1755 DAE6534 15/02/2003
Variáveis ligadas 1755 Doriana 1982 JDM8776 18/02/2003
▪ 1780 Quincas 1755 DAE6534 15/02/2003
▫ associadas a quantificadores em um escopo 1780 Quincas 1982 JDM8776 18/02/2003

Quantificador Existencial Quantificador Existencial


{ t | t ∈ C1 and s(s ∈ R1 and t.cliid = s.cliid)} { t | t ∈ C1 and s(s ∈ R1 and t.cliid = s.cliid)}
(CliId) Nome (ClId) Placa DataPedido (CliId) Nome (ClId) Placa DataPedido
1755 Doriana 1755 DAE6534 15/02/2003 1755 Doriana 1755 DAE6534 15/02/2003

Tabelas para exemplo - Táxis Tabelas para exemplo - Táxis


Cliente Particular (CP) Táxi (TX)
CliId Nome CPF Placa Marca Modelo AnoFab
1532 Asdrúbal 448.754.253-65 DAE6534 Ford Fiesta 1999
1755 Doriana 567.387.387-44 DKL4598 Wolksvagen Gol 2001
1780 Quincas 546.373.762-02 DKL7878 Ford Fiesta 2001
JDM8776 Wolksvagen Santana 2002
JJM3692 Chevrolet Corsa 1999

Corrida (R1)
Modelo original
ClId Placa DataPedido
por prof. Geovane
1755 DAE6534 15/02/2003
Cayres Magalhães
1982 JDM8776 18/02/2003
Quantificador Universal Referências
▪ Codd, Edgar Frank (1970) A relational model of data for
{ c | c ∈ CP and t(t ∈ TX and
large shared data banks. Communications ACM 13(6),
r(r ∈ R1 and 377-387.
c.cliid = r.cliid and r.placa = t.placa))} ▪ Elmasri, Ramez; Navathe, Shamkant B. (2005) Sistemas
de Bancos de Dados. Addison-Wesley, 4 a edição em
português.
▪ Elmasri, Ramez; Navathe, Shamkant B. (2010) Sistemas
de Banco de Dados. Pearson, 6a edição em português.
▪ Guimarães, Célio (2003) Fundamentos de Bancos de
Dados: Modelagem, Projeto e Linguagem SQL. Editora
UNICAMP, 1a edição.

Referências
▪ Heuser, Carlos Alberto (2004) Projeto de Banco de
Dados. Editora Sagra Luzzato, 5 a edição.
▪ Ramakrishnan, Raghu; Gehrke, Johannes (2003) Database
Management Systems. McGraw-Hill, 3rd edition.
André Santanchè
http://www.ic.unicamp.br/~santanche

S-ar putea să vă placă și