Modelo relacional: noções básicas (relação, base de dados relacional, esquema relacional) restrições de integridade álgebra relacional Gabriel David (gtd@fe.up.pt)

Apresentações semelhantes


Apresentação em tema: "Modelo relacional: noções básicas (relação, base de dados relacional, esquema relacional) restrições de integridade álgebra relacional Gabriel David (gtd@fe.up.pt)"— Transcrição da apresentação:

1 Modelo relacional: noções básicas (relação, base de dados relacional, esquema relacional) restrições de integridade álgebra relacional Gabriel David / João Pascoal Faria FEUP ( ) , 2001

2 Objectivos do modelo relacional
Ted Codd, 1970 Fornecer um elevado grau de independência dos dados. Proporcionar uma definição comum dosdados de simplicidade espartana, de forma que uma vasta gama de utilizadores numa empresa possa com ela lidar. Simplificar o potencialmente gigantesco trabalho do administrador da BD. Introduzir uma fundamentação teórica na gestão de BD. Fundir os campos de pesquisa de factos e gestão de ficheiros, preparando a posterior adição de serviços de inferência no mundo comercial. Elevar a programação de aplicações de BD para um novo nível, em que conjuntos sejam tratados como operandos, em vez de serem tratados elemento a elemento.

3 Sistemas Norma ANSI/SPARC Alguns sistemas relacionais
Rendez-vous Oracle QBE Ingres Informix Há sistemas que têm estrutura tabular, mas não possuem todos os operadores relacionais básicos ou apresentam limitações práticas importantes (semi-relacionais) Sybase Paradox Access SQL Server

4 Conceito de relação Produto cartesiano
domínios D1 = { rosa, cravo, tulipa } D2 = { branco, amarelo, vermelho, negro } produto cartesiano D1 x D2 = { (r,b), (r,a), (r,v), (r,n), (c,b), (c,a), (c,v), (c,n), (t,b), (t,a), (t,v), (t,n), (r,b) } = { (x, y) | x  D1, y  D2 } D2 branco amarelo vermelho negro rosa (r,b) (r,a) (r,v) (r,n) cravo (c,b) (c,a) (c,v) (c,n) tulipa (t,b) (t,a) (t,v) (t,n) D1

5 Conceito de relação Tuplo
Generalização do produto cartesiano D1  D2  D1 = { (x, y, z) | x  D1, y  D2, z  D1} tuplo (n-uplo) sequência ordenada, eventuais repetições;  conjunto, sem ordem nem repetições tantos elementos quantos os domínios do produto cartesiano (2 - par; 3 - terno; ...)

6 Conceito de relação Relação
relação é subconjunto de produto cartesiano R  D1  D2 extensão R = { (r,b), (c,v), (t,n) } compreensão R= { (f, c) | existe no meu jardim a flor f com a côr c } relação é conjunto os tuplos são todos diferentes (existe chave) a ordem dos tuplos na relação é irrelevante a ordem dos componentes nos tuplos é importante (referência por posição) se se atribuir um nome a cada elemento do tuplo (atributo), onde aquele for indicado, a ordem não interessa - vê-se o tuplo como um mapeamento dos atributos para os respectivos valores se t=(r, b) então flor(t) = r, côr(t) = b, e também t = (r, b) = (côr: b, flor: r)

7 Conceito de relação Relação normalizada
relação não normalizada: contém tuplos cujos valores são conjuntos, i.e., não atómicos não normalizada R = { (r, {b,a}), (c, {b,v}), (t,n)} normalizada correspondente R= {(r,b), (r,a), (c,b), (c,v), (t,n)}

8 Conceito de relação Tabela
Flor Côr b v n R = { (r,b), (c,v), (t,n) } relação tabela tuplo linha componente coluna

9 Valores nulos Valor nulo: valor desconhecido Diferente de string vazia
Representado pelo símbolo  Dois valores nulos são considerados diferentes devem ser tratados como variáveis diferentes 1 2

10 Conceito de base de dados relacional
Uma base de dados relacional é um conjunto de relações normalizadas (ou tabelas) Exemplo (base de dados de contas bancárias): Pessoa bi nome data_nasc 1111 João 2222 Maria 3333 Miguel  4444 Pedro  Titular bi número Conta número saldo

11 Esquema relacional Esquemas e instâncias
Esquema de relação: lista de atributos (+ restrições de integridade) (Instância de) relação: conteúdo Esquema da BD: esquemas das relações (+ restrições de integridade) (Instância da) BD: conjunto das instâncias das relações R Flor Côr b v n esquema de R [plano] instância de R [conteúdo]

12 Esquema relacional Notação
R1(A1, A2, ..., An) – esquema de relação R1 coim atributos A1, A2, ..., An Exemplo (esquema da base de dados de contas bancárias): Pessoa(bi, nome, data_nasc) Titular(bi, número) Conta(número, saldo) Falta indicar as restrições de integridade!

13 Restrições de integridade Definição
Esquema da BD = esquemas das tabelas (relações) + restrições de integridade Restrição de integridade (RI): condição que tem de ser verdadeira para qualquer instãncia da base de dados RI's são especificadas junto com o esquema da BD e são impostas pelo SGBD RI's não se podem inferir a partir das instâncias, mas apenas a partir do conhecimento da realidade reflectida na BD RI's restringem as instâncias possíveis (ou legais) da BD Uma alteração que conduza a um estado que viole uma restrição é rejeitada

14 Restrições de integridade Tipos de restrições
chave primária - identifica uma entidade; não pode haver duas entidades com a mesma chave; não pode ser nula valor único (ou chave candidata) - impede a repetição da mesma combinação de valores nos atributos envolvidos valor não nulo - preenchimento obrigatório integridade referencial - exige que um valor referido por uma entidade de facto exista na BD (chave externa) domínio - exige que o valor pertença a um determinado conjunto ou gama genérica - asserção que tem que ser verdadeira pode ser expressa por uma condição baseada em álgebra relacional

15 Restrições de integridade Chaves candidatas
Um conjunto S de atributos de uma relação R é uma chave candidata (ou simplesmente chave) se nenhuma instância de R, representando um estado possível do mundo, pode ter dois tuplos que coincidam em todos os atributos de S e não sejam o mesmo tuplo; nenhum subconjunto próprio de S satisfaz (1). Ex: chave(Pessoa) = {bi} (b1,n1,d1), (b1,n2,d2)  n1 = n2 e d1 = d2 significa que só pode haver uma linha para um dado "bi" {bi, nome} não é chave porque contém uma chave. Ex: chave(Titular) = {bi, número} só bi ou só número não garantem a condição (1) conceito de chave depende do esquema, não da instância

16 Restrições de integridade Chave primária
Várias chaves numa relação (chaves candidatas) => escolhe-se uma delas como chave primária Valores nulos não podem aparecer na chave primária É a chave usada preferencialmente para identificar ou referenciar tuplos da relação Notação: sublinhado Exemplo (esquema da base de dados de contas bancárias): Pessoa(bi, nome, data_nasc) Titular(bi, número) Conta(número, saldo)

17 Restrições de integridade Chaves externas
Chave externa (ou chave estrangeira) de uma relação: Conjunto de atributos de uma relação (dita relação referenciante) que só pode tomar valores da chave primária de outra relação (dita relação referenciada). Uma chave externa é usada para referenciar tuplos de outra relação, como se fosse um “apontador lógico” Especificar uma chave externa é especificar uma restrição de integridade referencial.

18 Restrições de integridade Chaves externas
Exemplo (na base de dados de contas bancárias): Os titulares de contas têm de existir na relação de pessoas {bi} é uma chave externa de Titular referenciando Pessoa Notação abreviada: Titular.bi  Pessoa Titular.número  Conta Titular bi número Conta número saldo Pessoa bi nome data_nasc 1111 João 2222 Maria 3333 Miguel  4444 Pedro 

19 Restrições de integridade Chaves externas e tuplos pendentes
Tuplo pendente – tuplo numa relação que não tem correspondente noutra relação É normal os atributos de uma chave externa admitirem valores nulos Exemplo Pessoa bi nome codigoPostal 1111 João 4100 1112 José 4100 2222 Maria 1000 3333 Miguel  ZonaPostal código localidade 4100 Porto 1000 Lisboa tuplo pendente (sem correspondente em ZonaPostal)

20 Álgebra relacional Linguagens relacionais
Notações para expressar perguntas: algébrica – aplicação de operadores a relações lógica (cálculo relacional) – fórmula que os tuplos da resposta devem satisfazer equivalentes em poder expressivo. Limitações: independência física dos dados linguagem só com construções relativas ao modelo de dados (operações sobre relações) que não dependam da implementação não se pode aceitar programas genéricos optimização das perguntas restrição no poder expressivo: sem recursão (incapaz de computar o fecho transitivo) relações finitas complementação proibida

21 Álgebra relacional Operações básicas
1 - Reunião R  S é o conjunto dos tuplos que estão em R, em S, ou em ambas R e S da mesma aridade nomes dos atributos a especificar 2 - Diferença R – S tuplos de R que não estão em S

22 Álgebra relacional Operações básicas
3 - Produto cartesiano RS aridades de R e S são k1 e k2  aridade de RS é k1 + k2 contém todos os tuplos tais que os primeiros k1 componentes formam um tuplo de R e os restantes k2 componentes formam um tuplo em S

23 Álgebra relacional Operações básicas
4 - Projecção i1, i2, ..., im(R) para cada tuplo em R existe um tuplo na projecção com os componentes (e pela ordem) indicados pelos ij se aridade de R for k então os ij  1, ..., k e são distintos; aridade da projecção é m números de componentes podem ser substituídos por atributos, se existirem: 1,3 (R) = A,C (R) Projecção escolhe colunas da tabela

24 Álgebra relacional Operações básicas
5 - Selecção F (R) contém os tuplos de R que satisfazem F a fórmula F pode envolver  operandos constantes ou número de componente ( $i )  operadores aritméticos de comparação ( , , , , ,  )  operadores lógicos ( , ,  ) ( e, ou, não ) Números de componentes podem ser substituídos por atributos, se existirem: $2=b(R) = B=b(R) Selecção escolhe linhas da tabela

25 Álgebra relacional Operações compostas
6 - Intersecção R  S contém os tuplos que pertencem a R e a S simultaneamente R e S da mesma aridade R  S = R - (R-S)

26 Álgebra relacional Quociente
7 - Quociente R / S aridade de R é r e de S é s, rs, S contém os (r-s)-tuplos (a1, ..., ar-s) tais que, para todos os s-tuplos (ar-s+1, ..., ar) em S, o tuplo (a1, ..., ar) está em R / = = 7 3 2  = 7 1 2

27 Álgebra relacional Explicação alternativa do quociente
Forma de proceder à divisão reordenar as colunas de forma a que as últimas correspondam ao quociente ordenar a tabela pelas primeiras colunas cada subtuplo das primeiras colunas pertence ao resultado se o conjunto de subtuplos das últimas colunas que lhe corresponde contiver o quociente / =

28 Álgebra relacional Expressão do quociente
T = 1, ..., r-s (R) = universo dos tuplos possíveis no resultado W = (TS) - R = todas as linhas T combinadas com S mas que não estão em R, i.e., em que a condição falha V = 1, ..., r-s (W) = tuplos que não interessam R / S = T - V = tuplos que interessam reunindo numa só expressão algébrica R / S= 1, ..., r-s (R) - 1, ..., r-s  1, ..., r-s (R)  S - R

29 Álgebra relacional Quais as frases verdadeiras?
a – ( R-S )  S = R b – ( R-S )  S  R c – ( R-S )  ( RS ) = R d – ( R-S )  ( S-R ) = ( RS ) - ( RS ) e – ( R/S )  S = R f – ( R/S )  S  R Respostas Erradas - a e e Correctas - b, c, d e f

30 Álgebra relacional Junção
8 - -Junção R ⋈ S se a aridade de R for r e a de S, s a aridade da -junção é r+s contém os tuplos do produto cartesiano de R por S tais que o componente i está na relação  com o componente r+j (i.e., o correspondente ao j em S). Expressão da -junção R ⋈ S= $i  $(r+j) (R  S) se  for =, a operação designa-se equijunção ( 7, 8, 9 ) é um tuplo pendente de R pois não aparece na -junção ij ij R ⋈ S = R ⋈ S 2<1 B<D

31 Álgebra relacional Junção natural
9 - Junção natural R ⋈ S só é aplicável se os componentes dos tuplos em R e S forem designados por atributos. a operação implícita na junção natural é a igualdade dos atributos com o mesmo nome. cada par de atributos iguais dá origem a um único atributo, com o mesmo nome, no resultado expressão: R⋈S = i1, ..., im ( R.A1= S.A1.....R.Ak= S.Ak ( R  S )) k é o número de atributos comuns a R (aridade r) e S (aridade s) e m= r+s-k R ⋈ S tuplo pendente 

32 Álgebra relacional Junção natural
Uma junção natural entre duas relações sem atributos comuns redunda num produto cartesiano porque, após este, não há nenhuma selecção a fazer (equivalente a fazer uma selecção com a condição True) R( A,B,C ) ⋈ S( G,H,I ) = R  S

33 Álgebra relacional Junção externa
tuplos pendentes, isto é desemparelhados, quer em R quer em S, desaparecem na -junção e na junção natural a junção externa (- ou natural) inclui os tuplos pendentes de R ou S completados a nulos ( 7, 8, 9 ) é um tuplo pendente de R pois não aparece na -junção ( b, b, f ) idem, na junção natural R ⋈ S + R ⋈ S + B<D

34 Álgebra relacional Semi-junção
10 - Semi-junção R⋉S projecção nos atributos de R da junção natural de R e S R⋉S = R( R⋈S ) R em R representa os atributos de R (o seu esquema); em R⋈S R representa a relação (a instância) outra expressão: R⋉S = R⋈RS(S) dá os tuplos de R que têm par em S R⋉S

35 Álgebra relacional Renomeação de atributos
na junção natural e na semi-junção os atributos são importantes; para os tornar explícitos escreve-se R(A1, ..., An) é possível renomear colunas e fazer junções naturais como: S = S(B,C,D) S( E,F,G ) ⋈ S( G,H,I )

36 Álgebra relacional Leis algébricas
Reunião associativa: R  ( S  T ) = ( R  S )  T comutativa: R  S = S  R Produto cartesiano associativo: R  ( S  T ) = ( R  S )  T não comutativo: R  S  S  R Junção natural associativa e comutativa (independência da ordem das colunas devida aos atributos): R ⋈ S = S ⋈ R Por isso ⋈ generaliza facilmente: R = R1 ⋈ ... ⋈ Rn R contém os tuplos  tais que, para 1 i  n,  restringido aos atributos de Ri é um tuplo de Ri  - junção não é comutativa mas é associativa (no caso de os índices serem válidos) R ⋈ ( S ⋈ T ) = ( R ⋈ S ) ⋈ T i 1 j k 2 l i 1 j (r+k) 2 l

37 Álgebra relacional Álgebra relacional como linguagem de interrogação
Álgebra Relacional pode ser usada como linguagem de interrogação à BD P1 - Relativamente à BD “Cursos” (ver p.17), quais os nomes dos professores do 12º grupo? Πnome  grupo = ‘12’ ( Professor )  P2 - Quais os nomes e datas de nascimento dos alunos do curso ‘CG1’ nascidos antes de 1983? Πnome, data_nasc  codcurso = ‘CG1’  data_nasc < ( Aluno ) 

38 Álgebra relacional Perguntas com junções
P3 - Nomes dos alunos inscritos à disciplina 327? nenhuma relação contém nomes de alunos e códigos de disciplina mas a junção Aluno ⋈ Inscrito = R contém: R (bia, nome, morada, telefone, data_nasc, codcurso, ano, letra, coddis, resultado) ( i ) - Πnome  coddis = 327 ( Aluno ⋈ Inscrito )  ( ii ) - Πnome  Aluno ⋈ coddis = 327 ( Inscrito )  esta maneira de ligar informações no modelo de dados dá muita liberdade para exprimir perguntas arbitrárias mas exige uma fase de optimização para executar ( ii ) mesmo que a pergunta seja ( i ) Núcleo da álgebra relacional : Π, , ⋈

39 Álgebra relacional Extensões à álgebra
renomeação de atributos R ( A, B, C ) R’( X,Y, Z ) = ΠX = A, Y = B, Z = C  R( A, B, C )  onde não houver ambiguidades, a simples menção dos atributos, em conjunto com o nome da relação, faz a renomeação OU R’ ( X, Y, Z ) = R ( A, B, C ) R’ = ΠX = A, Y = B, Z = C ( R ) expressões aritméticas ( +, -, *, / ) este mecanismo serve para dar nomes a expressões S = ΠW = A * B – C, U = C/B,A ( R ) S ( W, U, A )= ΠA * B – C, C/B, A ( R )

40 Álgebra relacional Expressões aritméticas
P4 - Obtenha uma relação de inscrições com as classificações inflaccionadas de 20%. Πcoddis, bia, resultado, novo = resultado*1.2 ( Inscrito ) Πcoddis, bia, resultado, novo = resultado + (20-resultado)/10 ( Inscrito ) nos parâmetros da projecção: no membro direito só podem ser usados nomes de atributos do argumento de Π; no esquerdo só pode estar um atributo (novo...)

41 Álgebra relacional Agregações
Operadores de agregação CNT (contagem), SUM (adição), AVG (média), MAX (máximo), MIN (mínimo) S = ΠV = CNT (B) ( R ) S( V ) tem um único valor, o número de tuplos de R com valor não nulo no atributo B ( CNT (*) conta todas as linhas )  toda a relação agregada T = ΠA, M = MAX (B) ( R ) T ( A, M ) tem tantos pares quantos os valores diferentes de A, sendo indicado para cada A o respectivo valor máximo de B (não nulo ... ); é feita uma partição segundo os atributos de projecção sem operadores de agregação e cada classe é agregada num só tuplo; é possível misturar agregações e aritmética

42 Álgebra relacional Perguntas com agregação
P5 - Qual o número de inscrições, nota média das inscrições, soma de todas as notas e número de resultados não nulos ? R( NI, M, T, NR ) = ΠCNT(*), AVG( resultado), SUM( resultado ), CNT( resultado) ( Inscrito ) pode ser M  T/NI se houver inscrições ainda sem resultado (valor nulo); tem que ser M = T/ NR Inscrito R

43 Álgebra relacional Agregação com partição
P6 - Quais as notas mínima, média e máxima de cada disciplina (independentemente do aluno)? R = Πcoddis, MI = MIN( resultado ), ME = AVG(resultado ), MA = MAX(resultado) (Inscrito) Inscrito R

44 Álgebra relacional Quantificação existencial
P7 - Obtenha os códigos dos alunos com inscrição a pelo menos uma das disciplinas do curso LEEC. ΠBIA (INSCRITO ⋈ CODCURSO= ‘LEEC’ ( PLANO ))

45 Álgebra relacional Quantificação universal
FEUP/MEAM Sistemas de Informação Álgebra relacional Quantificação universal P8 - Obtenha o código dos alunos com inscrição a todas as disciplinas do curso LEEC. A = ΠBIA ( ALUNO ) conjunto dos alunos D = ΠCODDIS  CODCURSO= ‘LEEC’ (PLANO) conjunto das disciplinas do curso LEEC AD conjunto de todos os pares (aluno, disciplina da LEEC) NI = AD – ΠBIA, CODDIS ( INSCRITO ) pares (aluno, disciplina da LEEC) tais que o aluno não tem inscrição à disciplina R = A – ΠBIA ( NI ) resultado (notar a dupla subtracção) R = ΠBIA, CODDIS( INSCRITO ) / D Gabriel David


Carregar ppt "Modelo relacional: noções básicas (relação, base de dados relacional, esquema relacional) restrições de integridade álgebra relacional Gabriel David (gtd@fe.up.pt)"
Anúncios Google