Baixe o app para aproveitar ainda mais
Prévia do material em texto
EstruturadeDadoseEstruturadeDadose SistemasdeIntegraSistemasdeIntegraççãoão ModeloRelacionalModeloRelacional Prof.AlexandreWagnerC.FariaProf.AlexandreWagnerC.Faria MaterialadaptadodoLivro:SistemadeBancodeDados(Silberschatz,Korth,Sudarshan), SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Capítulo2:Modelorelacional SistemadeBancodeDados,5/E Modelorelacional • Omodelorelacionalé hojeoprincipalmodelode dados para aplicações comerciais e de processamentodedados; • Eleconquistousuaposiçãodedestaquedevidoa sua simplicidade, o que facilitou o trabalho do programador, comparado com os modelos anteriores, • Nestecapituloiremosestudarosfundamentosdo modelorelacional,emseguida,iremosdescrever a álgebra relacional, usada para especificar requisiçõesdeinformações... © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Capítulo2:Modelorelacional �Estruturadosbancosdedadosrelacionais �Operaçõesfundamentaisdaálgebrarelacional �Outrasoperaçõesdeálgebrarelacional �Operaçõesdeálgebrarelacionalestendidas �Valoresnulos �Modificaçãodobancodedados SistemadeBancodeDados,5/E Modelorelacional • Umbanco de dados relacional consiste em uma coleção detabelas,cadaumacomumnomeúnicoatribuído. • Uma linha em uma tabela representa uma relação entre umconjuntodevalores; • Informalmente,umatabelaé umconjuntodeentidades,e umalinhaé umaentidade • Comouma tabelaé umacoleçãodessas relações,existe umaintimacorrespondênciaentreoconceitodetabelaeo conceito matemática de relação, do qual o modelo de dadosrelacionalextraiseunome. © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Exemplodeumarelação SistemadeBancodeDados,5/E Modelorelacional • Considereatabelaanterior; • Ela possui três cabeçalhos de coluna: numero_conta,nome_agencia,esaldo. • Segundo a terminologia do modelo relacional, chamamosessescabeçalhosdeatributos. • Paracadaatributo, existeumconjuntode valores permitidos,queé odomíniodesteatributo • Para o atribuito nome_agencia, por exemplo, o domínio é o conjunto de todos os nomes da agencia © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E Modelorelacional • SejaD1oconjuntodetodososnúmerosdaconta,D2o conjuntodetodososnomesdeagenciaeD3oconjunto detodosossaldos • Qualquer linhade conta precisa consistir emuma tupla de3(v1,v2,v3). • onde: – v1é umnumerodeconta(ouseja,v1está nodominio deD1) – v2 é um nome de agencia (ou seja, v2, está no dominio deD2) – v3é umsaldo,(ouseja,v3está nodominio deD3) © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Estruturabásica • Formalmente,dadososconjuntosD1,D2,….Dn umarelaçãor é um subconjuntode D1 xD2 x… xDn Portanto,umarelaçãoé umconjuntoden tuplas (a1, a2,…,an)ondecada ai ∈ Di • Exemplo:Se nome_cliente ={Jones,Smith,Curry,Lindsay} rua_cliente ={Main,North,Park} cidade_cliente ={Harrison,Rye,Pittsfield} Entãor ={(Jones,Main,Harrison), (Smith,North,Rye), (Curry,North,Rye), (Lindsay,Park,Pittsfield)} é umarelaçãosobre nome_cliente xrua_cliente xcidade_cliente SistemadeBancodeDados,5/E Modelorelacional • Como as tabelas são basicamente relações, usaremos os termos matemáticos relação e tupla nolugardostermostabelaelinha. • • Uma variável de tupla é uma variável que significa uma tupla, em outras palavras, uma variáveldetupla é umavariávelcujodomínioé oconjuntodetodasastuplas. © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E Modelorelacional • Na relação conta da tabela anterior, existemsetetuplas. • Faça a variável, de tupla t se referir á primeiratupla darelação. • Usaremos a notação t[numero_conta] para denotar o valor de t no atributo numero_conta; © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Tiposdeatributo �Cadaatributodeumarelaçãopossuium nome �Oconjuntodevalorespermitidospara cadaatributoé chamadoodomíniodo atributo �Ovalorespecialnulo é ummembrode tododomínio SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Esquemaderelação � A1,A2,…,An sãoatributos � R =(A1,A2,…,An )é umesquemaderelação – Exemplo: – Esquema_cliente =(nome_cliente,rua_cliente, cidade_cliente) � r(R)é umarelaçãonoesquemaderelaçãoR – Exemplo: – cliente(Esquema_cliente) SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Instânciaderelação � Osvaloresatuais(instânciaderelação)deumarelaçãosãoespecificados porumatabela � Umelementot der é umatupla,representadaporumalinha emumatabela atributos (ou colunas) tuplas (ou linhas) SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Relaçõessãodesordenadas � A ordem das A ordem das A ordem das A ordem das tuplastuplastuplastuplas éééé irrelevante (as irrelevante (as irrelevante (as irrelevante (as tuplastuplastuplastuplas podem estar em uma ordem podem estar em uma ordem podem estar em uma ordem podem estar em uma ordem arbitrarbitrarbitrarbitráááária)ria)ria)ria) � Exemplo: relaExemplo: relaExemplo: relaExemplo: relaçççção ão ão ão contacontacontaconta com com com com tuplastuplastuplastuplas não ordenadasnão ordenadasnão ordenadasnão ordenadas SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Bancodedados � Umbancodedadosconsisteemmúltiplasrelações � As informações sobre uma empresa são divididas empartes, com cada relação armazenandoumapartedasinformações conta : armazena informações sobre contas depositante : armazena informações sobre que cliente possui que conta cliente:armazenainformaçõessobreclientes � Armazenar todas as informações como uma única relação como banco (número_conta, saldo, nome_cliente, ..) resultaem � Repetiçãodeinformações(porexemplo,doisclientespossuemumaúnicaconta) � A necessidade de valores nulos (por exemplo, representar um cliente sem uma conta) � Teoriadanormalizaçãotratadecomoprojetaresquemasrelacionais SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Arelaçãocliente SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Arelaçãodepositante SistemadeBancodeDados,5/E Chaves • È precisoterumamaneiradeespecificarcomoastuplas dentro deumadeterminadarelaçãosãodistinguidas; • Issoé expressoemtermosdeseusatributos, • Ouseja,osvaloresdeatributodeumtupla precisamsertaisque possamidentificarunicamenteatupla; • Emoutraspalavras,nenhumpardetuplas emumarelaçãopode terexatamenteomesmovalorparatodososatributos • Uma superchave é um conjunto de um ou mais atributo que, tomadoscoletivamente, nospermite identificarunicamenteuma tupla narelação. • Porexemplo:oçatributo id_cliente darelaçãoclienteé suficiente paradistinguirumatupla clientedeoutra. © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Chaves • SejaK⊆ R • Ké umasuperchave deR seosvaloresparaK sãosuficientesparaidentificar umatupla únicadecadarelaçãor(R) possível • Com“r possível”,queremosdizerumarelaçãor quepoderiaexistirna empresaqueestamosmodelando. • Exemplo:{nome_cliente,rua_cliente}e {nome_cliente} são,ambas,superchaves deCliente,senenhumclientepuderteromesmo nomedeoutrocliente. • K é umachavecandidataseK formínimo Exemplo:{nome_cliente}é umachavecandidataparaCliente,já queelaé umasuperchave (considerandoquenenhumclientepodeteromesmonome deoutrocliente),enenhumdeseussubconjuntosé umasuperchave. • Chaveprimária • Achaveprimáriadeveserescolhidademodoqueseusvaloresdeatributo, nunca,ouraramente,sejammodificados:eg endereço; • Umesquemaderelação,digamosr1,podeincluirentreseusatributosachave primáriadeoutroesquemaderelação,digamosr2.Esseatributoéchamado dechaveestrangeirader1,referenciandor2 SistemadeBancodeDados,5/E Diagramadeesquemaparaa instituiçãobancária © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E Diagramadeesquemaparaa instituiçãobancária • Oesquemadebancodedados,juntamentecomachaveprimáriae as dependências da chave estrangeira, pode ser representado graficamentepelosdiagramasdeesquemas; • A figura anterior, mostra o diagrama de esquema para uma instituiçãofinanceira; • Cada relação aparece como uma caixa, com os atributos ligados dentroeonomedarelaçãoemcima. • Se houver atributos de chave primária, uma linha horizontal atravessaacaixa,comosatributosdechaveprimárialistadosacima dalinhaemcinza; • As dependências de chave estrangeira aparecem como setas indo dos atributos de chave estrangeira da relação referenciadora até a chaveprimáriadarelaçãoreferenciada © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Linguagensdeconsulta � Linguagememqueumusuáriorequisitainformaçõesdobancode dados. � Categoriasdelinguagens � Procedural � Nãoprocedural,oudeclarativa � Linguagens“puras”: � Álgebrarelacional � Cálculorelacionaldetupla � Cálculorelacionaldedomínio � Linguagenspurasformambasedaslinguagensdeconsultaqueas pessoasusam. SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Álgebrarelacional � Linguagemprocedural � Seisoperadoresbásicos � seleção:σ � projeção:∏ � união:∪ � diferençadeconjuntos:– � produtocartesiano:x � renomeação:ρ � Osoperadoresusamumaouduasrelaçõescomoentradaeproduzem umanovarelaçãocomoresultado. SistemadeBancodeDados,5/E seleção:σσσσ • A operação seleção seleciona tupla que satisfazemumdeterminadopredicado; • Usa-se a letra grega sigma para denotar a seleção; • Opredicadoaparece comoumsubscrito de sigma; • A relação de argumento está entre parêntesesapósosigma; © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãoselect � Notação:σσσσ p(r) � p é chamadoopredicadodeseleção – Onde p é umafórmulaemcálculoproposicionalconsistindoem termos conectadospor:∧∧∧∧ (and),∨∨∨∨ (or),¬¬¬¬ (not) Cadatermo podeser: – <atributo> op <atributo>ou<constante> – ondeop podeser:=,≠≠≠≠,>,≥≥≥≥.<.≤≤≤≤ � Exemplodeseleção: σσσσ nome_agência=“Perryridge”(conta) SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.6:Arelaçãoempréstimo SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.9:Resultadodeσσσσ nome_agência =“Perryridge” (empréstimo) SistemadeBancodeDados,5/E Projeção:∏∏∏∏ • Suponhaquesedesejalistartodososnúmerosde empréstimoeaquantiadosempréstimos,masonome daagencianãoimporta; • Aoperaçãoprojeçãoé umaoperaçãoqueretornasua relaçãodeargumento,comcertosatributosomitidos; • Comoarelaçãoé umconjunto,quaisquerlinhas duplicadassãoeliminadas; • Aprojeçãoé indicadapelaletragregapi; • Listamososatributosquedesejamosqueapareçamno resultadocomosubscritodePI; • Arelaçãodeargumentosegueentre parênteses; © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãoprojeção:∏∏∏∏ � Notação: Π A1,A2,...,Ak(r) – ondeA1,A2 sãonomesdeatributoer é umnomerelacional. � Oresultadoé definidocomoarelaçãodek colunasobtidas excluindo-seascolunasquenãoestãolistadas � Linhasduplicadassãoremovidasdoresultado,demodoqueas relaçõessejamconjuntos � Exemplo:Paraeliminaroatributonome_agência deconta ∏número_conta,saldo (conta) SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãoprojeção– Exemplo � Relaçãor: • ∏∏∏∏A,C (r) A B C α α β β 10 20 30 40 1 1 1 2 A C α α β β 1 1 1 2 = A C α β β 1 1 2 SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.10:Númeroequantia doempréstimo: ∏∏∏∏número_emprestimo, quantia(Emprestimo) SistemadeBancodeDados,5/E Operaçãounião • Considereumaconsultaparaencontraros nomesdetodososclientesdobancoque possuemumacontaouumempréstimo,ou ambos; • Observequearelaçãoclientenãocontéma informação,já queumclientenãoprecisater nemumacontanemempréstimonobanco; • Pararesponderaessaconsulta,precisamos dasinformaçõesnarelaçãodepositante(fig 2.5)enarelaçãotomador(fig 2.7); © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãounião � Notação:r ∪ s � Paraquer ∪ s sejaválido: – 1.r es precisamserdamesmaaridade (omesmonúmerode atributos) – 2.Osdomíniosdeatributoprecisamsercompatíveis(exemplo:2a colunader lidacomomesmotipodevaloresquea2a colunades) � Exemplo:encontrartodososclientescomumacontaouum empréstimo ∏nome_cliente (depositante)∪ ∏nome_cliente (tomador) SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãounião– Exemplo • Relaçõesr,s: • r∪∪∪∪ s A B α α β 1 2 1 A B α β 2 3 r s A B α α β β 1 2 1 3 SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.11:Nomesdetodososclientesque têmumempréstimoouumaconta : ∏∏∏∏nome_cliente (depositante)∪∪∪∪ ∏∏∏∏nome_cliente (tomador) SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Fig 2.5:Arelaçãodepositante SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.7:Arelaçãotomadorde emprestimo SistemadeBancodeDados,5/E Operaçãodiferença- • AoperaçãoDiferençadeconjuntos,indicada por-,permiteencontrartuplas queestejam emumarelação,masnãoemoutra; • Aexpressãor-sproduzumarelação contendoastuplas queestãoemrmasnão ems. • Podemosencontrartodososclientesdo bancoquepossuemumacontamasnãoum empréstimosescrevendo • ∏nome_cliente (depositante)- ∏nome_cliente (tomador) © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.12:Clientescomumaconta,mas semempréstimos ∏∏∏∏nome_cliente (depositante)- ∏∏∏∏nome_cliente (tomador) SistemadeBancodeDados,5/E Operaçãodiferença • Assim como a operação união, é preciso garantirqueasdiferençasdeconjuntosejam tomadasentrerelaçõescompatíveis; • Portanto, para uma operação diferença de conjuntosr-sserválida; © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãodiferençadeconjuntos– Exemplo � Relaçõesr,s: � r– s A B α α β 1 2 1 A B α β 2 3 r s A B α β 1 1 SistemadeBancodeDados,5/E OperaçãoProdutoCartesianox • Aoperaçãoprodutocartesiano, indicadaporumsinalde vezes (x), permite combinar informações de quaisquer duasrelações; • Escrevemos o produto cartesianos das relações r1 e r2 comor1xr2; • Lembrando, que uma relação, é por definição, um subconjuntodeumprodutocartesianodeumconjuntode domínio; • Apartirdessadefinição,já devemosterumaideia sobrea definiçãodaoperaçãoprodutocartesiano; • Entretanto,comoonomedeatributopodeaparecertanto rm r1quantor2,deve-secriarumesquemadenomeação paradistinguiressesatributos © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãoprodutocartesiano– Exemplo • RelaRelaRelaRelaçççções ões ões ões rrrr, , , , ssss • rrrr ×××× ssss A B α α α α β β β β 1 1 1 1 2 2 2 2 C D α β β γ α β β γ 10 10 20 10 10 10 20 10 E a a b b a a b b A B α β 1 2 C D α β β γ 10 10 20 10 E a a b br s SistemadeBancodeDados,5/E OperaçãoProdutoCartesianox • Então,fazemosissoanexandoaumatributoonomedarelaçãoda qualoatributooriginalmenteveio;• Porexemplo,oesquemaderelaçãoparar=tomadorxempréstimo é apresentadonatabelaaseguir: © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.13:Resultadodetomador ×××× empréstimo SistemadeBancodeDados,5/E OperaçãoProdutoCartesianox • Entãooesquemadarelaçãor=tomadorxemprestimo é: (tomador.nome_cliente, tomador.numero_emprestimo, emprestimo.numero_emprestimo, emprestimo.nome_agencia,emprestimo.quantia) • Com esse esquema, é possível distinguir tomador.numero_emprestimo de emprestimo.numero_emprestimo; • Para atributos que aparecem apenas em um dos dois esquemas, normalmente omites-e o prefixo nome_relação © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E OperaçãoProdutoCartesianox • Outro exemplo: suponha que desejamos encontrar os nomesdetodososclientesquepossuemumempréstimo naagenciaPerryridge; • Para isso, são necessárias as informações na relação empréstimoenarelaçãotomador,então: • σ nome_agência=“Perryridge”(tomadorxemprestimo) • Oresultadoé arelaçãoapresentadanopróximoslide; • Temos uma relação que pertence apenas a agencia Perryridge © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.14 SistemadeBancodeDados,5/E Operaçãointerseçãodeconjuntos • Ainterseçãodeconjuntospodemosdefinircomooseguinteexemplo: Suponhaquedesejamosencontrartodososclientesquepossuemum empréstimoeumaconta; • Usandoumainterseçãodeconjuntos,podemosescrever: • ∏nome_cliente (tomador)∩∩∩∩ ∏nome_cliente (depositante) • Observe que podemos reescrever qualquer expressão de álgebra relacional que usa interseção de conjuntos substituindo a operação interseçãoporumpardeoperaçõesdediferençadeconjuntoscomo: � � ∩��������� • Portanto, a interseção de conjuntos não é umaoperação fundamental, apenas uma combinação de comandos estudados anteriores e é mais conveniente; © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãointerseçãodeconjuntos � Notação:r ∩∩∩∩ s � Nota:r ∩∩∩∩ s =r – (r – s) SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Figura2.19:Clientescomumaconta eumempréstimonobanco ∏∏∏∏nome_cliente (tomador)∩∩∩∩ ∏∏∏∏nome_cliente (depositante) SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Operaçãointerseçãodeconjuntos– Exemplo � Relaçãor,s: � r ∩∩∩∩ s AB α α β 1 2 1 AB α β 2 3 r s AB α 2 SistemadeBancodeDados,5/E Exercícios © Korth • Silberschatz • Sundarshan SistemadeBancodeDados,5/E © Korth • Silberschatz • Sundarshan Exemplodebanking – agência(nome_agência,cidade_agência,ativo) – cliente(nome_cliente,rua_cliente,cidade_cliente) – conta(número_conta,nome_agência,saldo) – empréstimo(número_empréstimo,nome_agência,quantia) – depositante(nome_cliente,número_conta) – tomador (nome_cliente,número_empréstimo) SistemadeBancodeDados,5/E Exercicios 1. Encontre todos os empréstimos de mais de US$ 1200 2. Encontre os nomes de todos os clientes que têm um empréstimo, uma conta, ou ambos, do banco 3. Encontre os nomes de todos os clientes que têm um empréstimo e uma conta no banco 4. Encontre os nomes de todos os clientes que têm um empréstimo na agência Perryridge. 5. Encontre os nomes de todos os clientes que têm um empréstimo na agência Perryridge mas não têm uma conta em qualquer agência do banco. 6. Encontre os nomes de todos os clientes que têm um empréstimo na agência Perryridge. 7. Encontreomaiorsaldodeconta © Korth • Silberschatz • Sundarshan
Compartilhar