Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 1 Álgebra Relacional Melissa Lemos melissa@inf.puc-rio.br 2 Conceitos de Modelo Relacional � Um modelo relacional representa o banco de dados como um conjunto de relações. � Uma relação pode ser pensada como uma tabela de valores. � Cada linha na tabela representa uma coleção de valores de dados relacionados. 3 Conceitos de Modelo Relacional � Formalmente, na terminologia formal de modelo relacional � uma linha é chamada de tupla e � o cabeçalho da coluna é chamado de atributo � e a tabela é chamada de relação � o tipo de dados que descreve os tipos de valores que podem aparecer em cada coluna é chamado de domínio � O esquema de uma relação R é denotado por R(A1,A2,…,An), sendo Ai o nome de um atributo 4 Conceitos de Modelo Relacional � Exemplo Tijuca489-22-4110Charles Barra533-69-1238Barbara Gavea422-11-230Dick AddressSSNNameSTUDENT Atributos Tuplas Nome da Relação 5 Conceitos de Modelo Relacional � Super-chave de uma relação R = {A1, A2, ..., An} é um conjunto de atributos S � R com a seguinte propriedade � Não há duas tuplas t1 e t2 em um estado da relação r de R tal que t1[S] = t2[S] 6 Conceitos de Modelo Relacional � Chave K é uma super-chave com a propriedade adicional de que a remoção de qualquer atributo de K fará com que K não seja mais uma super-chave. � A diferença é que a chave precisa ser mínima. 2 7 Exemplo � EMPLOYEE(ENAME, SSN, BDATE, ADDRESS, DNUMBER*) � Chave � {SSN} � Super-chaves: � {SSN}, � {SSN, ENAME}, � {SSN, ENAME, BDATE}, � etc 8 Conceitos de Modelo Relacional � Quando uma relação possui mais de uma chave primária, cada uma é chamada de chave candidata. � Neste caso uma delas é arbitrariamente escolhida para ser a chave primária, e as outras são chamadas de chaves secundárias. 9 Conceitos de Modelo Relacional � É necessário manter a consistência entre tuplas de duas relações: uma tupla em uma relação que se refere a uma outra relação deve referenciar uma tupla existente naquela relação. � O atributo (ou conjunto de atributos) de uma relação R1 que referencia uma outra relação R2 é chamado de chave estrangeira. � Cuidado pois o atributo não é chave de R1, seria melhor que o nome fosse atributo de ligação � O valor da chave estrangeira em uma tupla de R1 deve existir como o valor da chave primária de alguma tupla de R2, ou se não for obrigatório, pode ser nulo. 10 Exemplo de Modelo Relacional EMPLOYEE (ENAME, SSN, BDATE, ADDRESS, SUPERSSN*, DNUMBER*) DEPARTMENT (DNAME, DNUMBER, DMGRSSN*) DEPT_LOCATIONS (DNUMBER*, DLOCATION) PROJECT (PNAME, PNUMBER, PLOCATION, DNUMBER*) WORKS_ON (ESSN*, PNUMBER*, HOURS) DEPENDENT (ESSN*, DEPENDENT_NAME, SEX, BDATE, RELATIONSHIP) 11 Tópicos �Operações Básicas �União ∪ �Diferença - � Produto Cartesiano x � Projeção Π � Seleção σ 12 União ∪ � R(A1,A2,…,An) � S(B1,B2,…,Bn) � R tem mesma aridade que S � Dom(Ai) = Dom(Bi) � R ∪ S = Res(C1,C2,…,Cn) � Res tem mesma aridade que R e S � Dom(Ai) = Dom(Bi) = Dom(Ci) � Res contém TODAS tuplas de R ou S, sem repetição 3 13 União ∪ dbc fad cba A3A2A1R fad agb B3B2B1S dbc agb fad cba A3A2A1R ∪∪∪∪ S 14 Diferença - � R(A1,A2,…,An) � S(B1,B2,…,Bn) � R tem mesma aridade que S � Dom(Ai) = Dom(Bi) � R - S = Res(C1,C2,…,Cn) � Res tem mesma aridade que R e S � Dom(Ai) = Dom(Bi) = Dom(Ci) � Res contém TODAS tuplas de R que NÃO estão em S 15 Diferença - dbc fad cba A3A2A1R fad agb B3B2B1S dbc cba A3A2A1R ∪∪∪∪ S 16 Produto Cartesiano X � Relações R e S podem ter qualquer esquema desde que atributos disjuntos � R(A1,A2,…,An) � S(B1,B2,…,Bm) � R x S = Res(A1,A2,…,An,B1,B2,…,Bm) � R x S contém todas as tuplas correspondentes a todas as possíveis combinações de tuplas de R com tuplas de S 17 Produto Cartesiano X dbc fad cba A3A2A1R fad agb B3B2B1S fadfad fadcba d d f c A3 d b b b B1 a g g g B2 abc fbc aad aba B3A2A1R x S 18 Projeção Π � Operação unária � Escolha de atributos de uma relação � Πx(R) � Projeção de R no conjunto de atributos X, onde X � Att(R) 4 19 Projeção Π dbc fad cba A3A2A1R dc fd ca A3A1ΠΠΠΠA1,A3(R) Como a relação é um conjunto, qualquer linha em duplicidade é eliminada. a b A2ΠΠΠΠA2(R) 20 Seleção σ � Operação unária � Escolher tuplas de uma relação segundo um dado critério ou condição � Formato condição � σcond(R) � Seleção das tuplas de R satisfazendo uma condição cond. <Atributo> <Operador> <Atributo>/<Valor> = > < ≠ ≤ ≥ 21 Seleção σ dbc fad cba A3A2A1R σA2=b(R) dbc cba A3A2A1 É possível ter combinação de operadores com operadores lógicos E e OU! 22 Tópicos �Operações Adicionais � Junção ⊗ � Junção Natural � Semi Junção � Junção Externa � Interseção ∩ �Divisão ÷ �Agregados + Funções de Cálculo 23 Junção ⊗ � ou Join � Extensão do produto cartesiano com condição para composição de tuplas entre as relações operandas � R ⊗ i θ j S � contém tuplas do produto cartesiano R X S onde atributo i de R corresponde ao atributo j de S de acordo com o operador aritmético θ � Se θ é “=“ então chamamos de equijunção � R ⊗ cond S = σcond(R x S) 24 Junção ⊗ fbb dac cbd cba A3A2A1R eb da B2B1S f c c A3 a a a B1 dbb dbd dba B2A2A1R ⊗ A2>B1 S 5 25 Junção Natural ⊗ � Junção Natural � Equijunção sobre atributos de mesmo nome � Um ou mais atributos em comum! � Se não há atributos em comum, ⊗ = x! 26 Junção Natural ⊗ fbb dac cbd cba A3A2A1R d c c c c T.A3 dbcbd ebcbd d c c R.A3 a b b T.A2 bac eba dba A4R.A2A1R ⊗S ecb bda dcb A4A3A2T 27 Junção Natural ⊗ fbb dac cbd cba A3A2A1R R ⊗S com 12 tuplas! e b d A4T 28 Semijunção � Resultado da junção contém atributos de uma das duas relações operandas �Πatt(R)(R ⊗ S) � BD distribuídos! 29 Semijunção fbb dac cbd cba A3A2A1R cbd d c A3 ac ba A2A1R S ecb bda dcb A4A3A2T 30 Junção Externa � Para não perder tuplas das relações operandas após a junção � Tuplas sem correspondentes têm valor NULO associado 6 31 Junção Externa fbb dac cbd cba A3A2A1R NullNullNullfbb d c c c c T.A3 dbcbd ebcbd d c c R.A3 a b b T.A2 bac eba dba A4R.A2A1R S ecb bda dcb A4A3A2T 32 Interseção ∩ � R(A1,A2,…,An) � S(B1,B2,…,Bn) � R tem mesma aridade que S � Dom(Ai) = Dom(Bi) � R ∩ S = R – (R-S) � Res contém tuplas em ambas relações operandas R e S 33 Divisão ÷ � Procurar em uma dada relação as “subtuplas” que são completadas por TODAS as tuplas de outra relação � Q (A1,A2,…,Ap) = R(A1,A2,…, Ap , Ap +1,…,An)/ S(Ap +1,…,An) � Q contém tuplas tais que, concatenadas à todas as tuplas de S, formam tuplas de R. 34 Divisão ÷ eb fb bb dc ea da A2A1R e d B1S b a A1R÷S 35 Funções de Agregação � Funções de agregação são aquelas que, quando aplicadas, tomam uma coleção de valores e retornam um valor simples como resultado. � SUM, AVERAGE, MAXIMUM, MINIMUM, COUNT 36 Agregados � Um tipo de requisição comum envolve o agrupamento de tuplas em uma relação pelo valor de alguns atributos e depois pela aplicação de uma função de agregação neste grupo. � Ex. Agrupar os empregados pelo número de seu departamento, e aplicar a função média no atributosalário em cada grupo. Desta forma saberemos a média dos salários dos empregados de cada departamento. 7 37 Agregados � <atributos_agrupados> Agreg <lista_funções> (R) � <atributos_agrupados> � Lista de atributos de R � <lista_funções> � Lista de pares <função><atributo> � <função> � SUM, AVERAGE, MAXIMUM, MINIMUM, COUNT � <atributo> � Atributo de R 38 Agregados � Obter número do departamento, número de empregados do departamento e a média dos salários. � EMPLOYEE (ENAME, SSN, BDATE, ADDRESS, SUPERSSN*, DNUMBER*) � R1 = DNUMBER Agreg COUNT SSN, AVERAGE SALARY (EMPLOYEE) 1.30034 1.50045 AVERAGE SALARYCOUNT SSNDNUMBER 39 Agregados � Obter número do departamento, número de empregados do departamento e a média dos salários. � EMPLOYEE (ENAME, SSN, BDATE, ADDRESS, SUPERSSN*, DNUMBER*) � Se nenhum grupo for especificado: � R1 = Agreg COUNT SSN, AVERAGE SALARY (EMPLOYEE) 2.5007 AVERAGE SALARYCOUNT SSN
Compartilhar