BASES DE DADOS I - di.ubi.pthugomcp/bd1/03_bd1_10_11.pdf · Requisitos Fundamentais de um SGBD:...

61
BASES DE DADOS I LTSI/2 Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

Transcript of BASES DE DADOS I - di.ubi.pthugomcp/bd1/03_bd1_10_11.pdf · Requisitos Fundamentais de um SGBD:...

BASES DE DADOS I LTSI/2 Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

Sistema Gestor de Bases de Dados

  Requisitos Fundamentais de um SGBD:

  Segurança.

 É um dos requisitos básicos exigidos a um SGBD. Consiste basicamente em proteger os dados armazenados dos acessos não autorizados e garantir que todas as operações executadas sobre a base de dados o são por utilizadores (aplicações) devidamente credenciados.

Sistema Gestor de Bases de Dados

  Requisitos Fundamentais de um SGBD:

  Integridade.

  Por definição, uma base de dados está num estado de integridade se todos os dados que contém são válidos, isto é, não contradizem a realidade que estão a representar nem se contradizem entre si.

  Todas as operações que envolvam alteração da informação contida numa base de dados implicam evoluções no seu estado de integridade. O SGBD possui regras que garantem a integridade após cada processo de alteração de informação (restrições de integridade).

Sistema Gestor de Bases de Dados

  Requisitos Fundamentais de um SGBD:

 Controlo da Concorrência

 Já atrás foi referido que uma das vantagens importantes de um modelo de base de dados é a possibilidade de execução paralela. Cabe ao SGBD a definição de políticas de escalonamento por forma a garantir que cada utilizador (aplicação-cliente) interage com a base de dados como se fosse o único. O mecanismo de transacção é a unidade base que garante a concorrência.

Sistema Gestor de Bases de Dados

  Requisitos Fundamentais de um SGBD:

  Tolerância a Falhas   Devido à potencial importância dos dados armazenados numa base de

dados, é essencial a implementação de mecanismos de tolerância a falhas (hardware / software), que garantam a reposição da informação para um estado anterior válido. Para tal são utilizados basicamente dois mecanismos:

  Backups: Implementação de cópias de segurança com estados válidos da base de dados

  Registos de actividade (Logging). Registo de todas as operações efectuadas sobre a base de dados. Pode facilitar a identificação de origens de problemas e evitar que se voltem a repetir

Transacções

  O exemplo típico ilustrativo da necessidade de implementar transacções é o da transferência de dinheiro entre duas entidades “A” e “B”.   Imagine-se que o cliente “A” efectuou uma compra de 1000

euros à empresa “B”, sendo necessário respectivamente debitar e creditar este valor nas correspondentes contas.   Em primeiro lugar, é debitado o valor na conta de “A”, passando este a

apresentar saldo (X-1000).   Imagine-se agora a ocorrência de uma qualquer situação excepcional

que interrompe a aplicação que está a manipular a informação, e a quantia não é creditada na conta de “B”.

  Nesta situação, a informação da base de dados fica corrompida, sem que haja uma forma imediata de percepção da falha.

Transacções

  Este exemplo demonstra que existem situações em que é necessário garantir que, de entre um conjunto de operações, ou são executadas todas ou nenhuma delas o será, permanecendo em qualquer dos casos a base de dados num estado consistente.

  Uma Transacção é, então, um conjunto de operações efectuadas sobre a base de dados, perfeitamente delimitado em que garantidamente são executadas todas as instruções ou então nenhuma o será.

Begin Transaction Operação 1 Operação 2 ... Operação n

End Transaction

Transacções

  Por definição, uma transacção deve exibir algumas características fundamentais (Propriedades ACID):

  Atomicidade (Atomicity)

  O conjunto de instruções que compõem a transacção é indivisível, no sentido em que todas elas são executadas, ou então nenhuma o será. Sempre que todas sejam executadas sem nenhuma situação excepcional diz-se que foi executado o COMMIT da transacção.

  Na ocorrência de alguma situação excepcional que impossibilite a sua completa execução, deve ser anulado o efeito de todas as instruções que compõem a transacção e que ainda foram executadas (ROLLBACK).

Transacções

  Integridade (Consistency)

 Uma transacção deve, após a sua completa execução, deixar a base de dados num estado consistente.

  Pode acontecer que, entre a execução de alguma das operações que a compõem, a consistência não se verifique, no entanto após a execução de todas as operações, ela tem que ser verificada.

Transacções

  Isolamento (Isolation)

 Apesar de ser possível a execução paralela e simultânea de diferentes transacções, o sistema deve dar a ilusão de que cada uma delas é a única a executar, estando por isso aparentemente isolada.

  Sempre que existam várias transacções a aceder aos mesmos dados, o sistema deve evitar que existam interferências mútuas, e que o estado final da base de dados seria o mesmo após a eventual execução em série.

Transacções

  Persistência (Durability)

  Deve ser assegurado que após a execução bem sucedida de uma transacção (COMMIT), os efeitos dela resultantes se tornam persistentes (não voláteis) na base de dados.

  Qualquer transacção futura deve operar sobre o novo conjunto de dados, bem como qualquer eventual falha não deve anular as alterações entretanto produzidas.

  Desta forma os efeitos de cada transacção podem apenas ser desfeitos ou alterados por outras transacções.

Linguagens da Bases de Dados

  Nas linguagens de programação mais comuns, as instruções de declaração e execução fazem parte de um só conjunto, isto é, estão englobadas pela mesma linguagem.

  Em modelos de bases de dados a interacção com o nível aplicacional faz-se através de linguagens específicas:

  Data Definition Language   Utilizada para definir a estrutura da base de dados e da

informação que deve armazenar. Uma vez que não possui instruções de execução (não pode ser utilizada para obter ou alterar os dados em si), pode ser entendida como uma notação utilizada para descrever a estrutura da informação.

Linguagens da Bases de Dados

  Data Manipulation Language (DML)

  É a linguagem disponibilizada ao nível aplicacional para obter, armazenar, alterar ou eliminar informação da base de dados. As instruções pertencentes a esta linguagem podem ser executadas interactivamente por um utilizador a partir do terminal, ou estar embebidas em linguagens hospedeiras (C, Pascal, Visual Basic, Fortran, ...).

  Como se verá à frente, a linguagem focada neste curso (Structured Query Language - SQL) possui sub-conjuntos de instruções de definição (SQL-DDL) e de manipulação (SQL-DML) de informação.

Modelos de Dados

  Pode-se definir um Modelo de Dados como sendo um conjunto de instrumentos conceptuais para descrever os dados, as suas relações, semântica e restrições.

  Um modelo de dados é, pelo menos, a colecção de 3 componentes:

  Um conjunto de tipos de estruturas de dados.   Define o tipo de dados a armazenar, e os relacionamentos existentes.

  Uma colecção de operadores.   Operam (manipulam) as estruturas de dados atrás mencionadas.

  Um conjunto de regras de integridade.   Definem um conjunto de regras sobre a forma como os operadores devem

manipular as estruturas de dados, servindo como garantia da consistência da base de dados.

Modelos de Dados

  Os modelos focados neste curso (Modelos baseados em registos), podem-se dividir em:   Modelos Hierárquicos

  Modelos em Rede

  Modelos Relacionais

  Devido à relevância do modelo relacional (2ª geração), pode-se também classificar os modelos “Hierárquico” e de “Rede” como modelos Pré-Relacionais, ou modelos de 1ª geração)

  Existem actualmente em desenvolvimento paralelo diferentes modelos (de 3ª geração) com o objectivo de aumentar o nível de abstracção da informação e permitir aos novos paradigmas da programação (objectos, agentes,...)

Modelo Hierárquico

Tal como o próprio nome indica, os dados estão organizados hierarquicamente, numa estrutura de árvore. Os dados são representados por registos e as relações entre eles por ligações (links) entre registos.

O acesso aos dados não é directo, tendo que ser efectuada a travessia da estrutura (árvore) até encontrar o registo pretendido.

Cliente 1 Cliente 2

Encomenda 1 Encomenda 2 Encomenda 3 Encomenda 4 Encomenda 5

BD

Modelo Hierárquico

  Não é possível registar informação acerca de elementos de níveis inferiores enquanto não estiverem criados os respectivos níveis superiores.   No exemplo anterior, não se poderia registar informação acerca de uma encomenda, enquanto

não estivesse criado o registo correspondente ao cliente que a efectuou.

  Sempre que um item se relacionar com múltiplos registos-pai, é necessário duplicar a informação sobre ele, originando redundância de informação na base de dados.

  A manipulação da informação neste modelo é efectuada através das operações:   Get First (Permite aceder ao primeiro registo de um dado segmento – conjunto de registos de

um determinado nível e com o mesmo registo-pai)   Get Next (permite aceder ao elemento seguinte de um determinado segmento)

  Get Next Within ... (Permite aceder ao próximo segmento que verifica uma determinada condição)

  Get Parent (Permite obter o registo-pai de um determinado registo)

Modelo de Rede

O modelo de rede pode ser entendido como uma extensão ao modelo hierárquico. Ao eliminar o conceito de hierarquia, permite-se que um registo esteja relacionado com vários outros e evita-se a duplicação da informação. A base de dados passa a ser entendida como um grafo.

Cliente 1

Cliente 2 Encomenda 1

Encomenda 2

Encomenda 3

Produto 1

Produto 2

Produto 3

Produto 4

BD

Modelo Relacional

  Contrariamente aos modelos hierárquicos e de rede, o modelo relacional não evoluiu a partir de técnicas de processamento de ficheiros. Foi desenvolvido a partir de estudos teóricos, tendo por base a teoria dos conjuntos.

  Existem actualmente múltiplos fornecedores de SGBD´s relacionais, entre os quais:

  IBM Corporation (DB/2)   Microsoft (SQL Server, Access)   Informix (Informix Dynamic Server)

  Oracle (Oracle Server)   Sybase (Sybase SQL Server)

  ...

Modelo Conceptual

  Existe uma classe de modelos utilizados ao nível conceptual, para modelar os itens presentes numa base de dados e a forma como o seu relacionamento se vai efectuar, sendo o mais representativo o modelo Entidade / Relacionamento.

  Baseia-se na percepção de que o mundo real se pode classificar com base em:

  Entidades: Objectos com características particulares diferentes de quaisquer outros.

  Relações: Relacionamento entre diferentes tipos de objectos.

  Notação:

Entidades Relações

Modelo Entidade/Relacionamento

Exemplo:

Notações: Entidades escritas no singular Letra inicial das entidades maiúscula. Verbo das relações ilustrativo.

Aluno

Nota

Disciplina

Obtém

Refere

1

n

n

1

Modelo Relacional

  A estrutura fundamental do modelo relacional é a “relação”.

  Dada uma colecção de conjuntos D1, D2, ..., Dn, R é uma relação naqueles conjuntos se for constituída por um conjunto de n-uplos ordenados <d1, d2, ..., dn> tais que d1 Є D1, d2 Є D2, ..., dn Є Dn.

  D1, D2, ..., Dn constituem o domínio da relação.   O número de tuplos <d1, d2, ..., dn> existente define a

cardinalidade da relação.   O número de elementos de cada tuplo determina o

grau da relação.

Modelo Relacional

  Na prática uma relação é uma estrutura de dados bidimensional (tabela), constituída por um conjunto de instâncias (linhas, zero ou mais) e um conjunto de atributos (colunas, um ou mais).

  Cada instância (linha) de uma relação designa-se por tuplo.

  O domínio da relação traduz-se pelo conjunto de valores que cada um dos seus atributos pode tomar.

  O número de tuplos (linhas) determina a sua cardinalidade e o número de atributos (colunas) define o grau da relação.

Modelo Relacional

  O termo “Relação” deriva do relacionamento existente entre linhas e colunas, significando que diferentes propriedades da mesma entidade são registadas na mesma linha.

  A relação acima ilustrada indica que existe alguma entidade que tem para a propriedade “A” o valor “a”, para a propriedade “B” o valor “b” e para a propriedade “C” o valor “c”.

  Outra entidade similar irá possuir valores “e”, “f” e “g” para as mesmas propriedades.

A B C

a b c

d e f

Relacionamento Horizontal

Modelo Relacional

  Tendo uma relação R com atributos:

  Podemos supor que (Inteiros (N), Cadeias de Caracteres, Datas) constituem o domínio da relação “R”, por constituírem respectivamente o domínio de cada um dos seus atributos.

Codigo Nome Data_nascimento

1 Vitor Almeida 1-10-1956

2 Rita Duarte 2-11-1926

3 Catarina Pais 19-7-1927

4 Nuno Santos 11-11-1977

Modelo Relacional

Codigo Nome Idade 1 Vitor Almeida 34 2 Rita Duarte 23 3 Catarina Pais 41 4 Nuno Santos 25

Atributos (Grau=3)

Cardinalidade = 4

Tuplo

Modelo Relacional

  O valor de cada atributo num tuplo é obrigatoriamente atómico. Isto significa que em cada par (linha, coluna) só pode existir um único valor.

  Os atributos de uma relação devem ter identificadores distintos. Na prática significa que não podem existir duas colunas com nomes identificadores iguais.

  Os tuplos de uma relação devem ser distintos. Numa relação não podem existir dois tuplos cujos respectivos atributos sejam completamente iguais.

  A ordem dos tuplos numa relação, bem como a ordem dos atributos num tuplo não tem qualquer significado.

  Todos os valores passíveis de preencher um atributo de um dado tuplo têm obrigatoriamente que provir de um domínio. Nos casos em que o valor não é conhecido pode exclusivamente ser atribuído o valor null.

Modelo Relacional - Chaves

  Um conceito fundamental no contexto do modelo relacional é o de “chave”. Existem diferentes tipos de chaves:

  Chave Candidata: Subconjunto dos atributos de uma relação que podem ser utilizados como identificadores de uma instância. O subconjunto não pode ser reduzido sem perder esta qualidade.

  Exemplos: {BI}, {Contribuinte}, {Nº Eleitor, Freguesia}

Nome B.I. Contribuinte Nº Eleitor Freguesia

José 1234567 45662536 1234 Covilhã

Rita 6272632 72761376 6666 Fundão

Joana 6182930 12765676 1234 Fundão

Modelo Relacional - Chaves

Super-Chave: O conceito de super-chave é mais abrangente que o de “chave candidata” definido anteriormente. Qualquer subconjunto de atributos de uma relação que possa identificar univocamente qualquer instância da relação é considerado uma super-chave.

Exemplos: {BI}, {BI, nome}, {Nº Eleitor, Freguesia}, {NºEleitor, BI}, {Nº Eleitor, BI, Nome}, {Nome, BI, Nº Contribuinte, Nº Eleitor, Freguesia}

No limite, o conjunto de todos os atributos de uma relação será sempre uma super-chave.

Nome B.I. Contribuinte Nº Eleitor Freguesia

José 1234567 45662536 1234 Covilhã

Rita 6272632 72761376 6666 Fundão

Joana 6182930 12765676 1234 Fundão

Modelo Relacional - Chaves

Chave Primária: Escolhida entre as possíveis chaves candidatas, identifica de forma unívoca os tuplos de uma relação. Deve respeitar as seguintes propriedades: Unívoca: Os atributos da chave primária têm um valor único para qualquer

tuplo de uma relação. Não redundante: Se algum dos atributos for retirado da chave, os

restantes atributos deixam de satisfazer a propriedade anterior. Não nula. Nenhum dos atributos que a constituem pode assumir o valor

nulo.

Exemplos: {Nº Eleitor, Freguesia}

Nome B.I. Contribuinte Nº Eleitor Freguesia

José 1234567 45662536 1234 Covilhã

Rita 6272632 72761376 6666 Fundão

Joana 6182930 12765676 1234 Fundão

Modelo Relacional - Chaves

Chave estrangeira (externa): Subconjunto dos atributos de uma relação que constituem a chave primária de uma outra relação. A sua existência denota um relacionamento entre relações e constitui a base do modelo relacional.

Pessoa CodigoPostal

Exemplo: {CodPostal} da relação “Pessoa” é uma chave externa, uma vez que na relação “CodigoPostal” o mesmo atributo é uma chave primária.

Nome B.I. CodPostal

José 1234567 6200

Rita 6272632 6300

Joana 6182930 6200

CodPostal Cidade

6200 Covilhã

6300 Fundão

7000 Leiria

Álgebra Relacional

  A Álgebra Relacional define um conjunto de operações...   ...baseadas na teoria de conjuntos

  (união, intercessão, diferença e produto cartesiano)   (selecção, projecção, junção e divisão)

  Qualquer operador atrás enunciado actua sobre conjuntos e devolve como resultado conjuntos de tuplos.

Operador

Álgebra Relacional

Pode suceder que:

Mesmo nestas situações, o operador transformou o conjunto inicial num outro conjunto com zero instâncias e zero atributos (conjunto vazio)

Operador

Álgebra Relacional

Exemplo:

Neste caso, a aplicação de um operador de selecção de instâncias (que satisfaçam uma determinada propriedade) transformou o conjunto inicial num conjunto com zero instâncias e zero atributos.

Operação: Seleccionar instâncias

com atributo “A” igual a “j”

A B C

a b c

d e f

g h i

Teoria de Conjuntos

  É o estudo da associação entre objectos com uma mesma propriedade, utilizando uma notação precisa e definindo uma série de operações e propriedades desses objectos.

  Conjunto é uma colecção ou classe de objectos, também chamados de elementos ou membros.

  A notação de pertença serve para indicar que um elemento x pertence a um conjunto A e é denotado por: x ∈A

  No estudo da teoria das bases de dados, pode-se estabelecer uma analogia “Relação” “Conjunto” e “Instância””Elemento”

Teoria de Conjuntos

  Dois conjuntos são iguais se e só se possuem exactamente os mesmos elementos.

  Conjunto vazio é o conjunto que não possui nenhum elemento e é denotado por Ø.

  Os conjuntos podem ser finitos ou infinitos.  Um conjunto finito pode ser definido listando todos os seus

elementos separados por vírgulas.  Um conjunto infinito pode ser definido por uma propriedade

que deve ser satisfeita por todos os seus membros.

Teoria de Conjuntos

  A cardinalidade ou ordem de um conjunto indica o número de elementos do conjunto e é denotada por #

  Um conjunto não possui ordenação, portanto, os seguintes conjuntos são iguais: {2,5,8}, {5,2,8}, {5,2,5,8}

  Um conjunto unitário possui um único elemento.

  Um conjunto A é dito estar contido em B (escreve-se ⊆ ) se, e somente se, todo elemento de A é elemento de B, desta forma, A é subconjunto de B.

Teoria de Conjuntos

  Um conjunto A é igual a um conjunto B (escreve-se A=B) se, e somente se, A ⊆ B e B ⊆ A

  Um conjunto A está contido propriamente no conjunto B (escreve-se ⊂ ) se, e somente se, A ⊆ B e A ≠ B.

 Desta forma A é subconjunto próprio de B e, caso contrário, é subconjunto impróprio.

Teoria de Conjuntos

Operações básicas da teoria de conjuntos:

União Intersecção Diferença Produto Cartesiano Divisão Junção Natural

Selecção Projecção

Operações Binárias

Operações Unárias

Teoria de Conjuntos

  Operações Fundamentais

 União de Conjuntos

 Sejam “R” e “S” conjuntos e “t” um tuplo de um conjunto. A união entre “R” e “S”, denota-se por R ∪ S e pode ser expressa por:

 R ∪ S = {t | t ∈ R ∨ t ∈ S}

Teoria de Conjuntos

  Operações Fundamentais

 Intercessão de Conjuntos

 Sejam “R” e “S” conjuntos e “t” um tuplo de um conjunto. A intercessão entre “R” e “S”, denota-se por R ∩ S e pode ser expressa por:

 R ∩ S = {t | t ∈ R ∧ t ∈ S}

Teoria de Conjuntos

  Operações Fundamentais

 Diferença de Conjuntos

 Sejam “R” e “S” conjuntos e “t” um tuplo de um conjunto. A diferença entre “R” e “S”, denota-se por R - S e pode ser expressa por:

 R - S = {t | t ∈ R ∧ t ∉ S}

Teoria de Conjuntos

  Operações Fundamentais  Produto Cartesiano de Conjuntos

 Sejam “R” e “S” conjuntos, “t” um tuplo de um conjunto e Ai um atributo de um conjunto. O produto cartesiano entre “R” e “S”, denota-se por R x S e pode ser expresso por:

 R x S = {t | t[A1, ...,An] ∈ R ∧ t [An+1, ...,An+m] ∈ S}

Teoria de Conjuntos

 Operações Fundamentais

 Selecção de um Conjunto

 Seja “R” um conjunto e “t” um tuplo de um conjunto. A selecção de tuplos de “R” pode ser dada por:

  σθ (R) = { t | t ∈ R ∧ θ(t) }

Teoria de Conjuntos

  Operações Fundamentais

 Projecção de um Conjunto

 Seja “R” um conjunto e “t” um tuplo de um conjunto. A projecção do conjunto “R” pode ser dada por:

  ΠΑ1,..., Ακ (R) = { t [A1, ...., Ak] | t ∈ R }

Teoria de Conjuntos

  Operações Fundamentais

 Junção de Conjuntos

 Sejam “R” e “S” conjuntos e “t” um tuplo de um conjunto. A junção de “R” e “S” pode ser dada por:

 R θ S = { t [R ∪ S] ∧ θ(t) } = σθ (R x S)

Teoria de Conjuntos

 Operações Fundamentais  Divisão de Conjuntos

 Sejam “R” e “S” conjuntos e “t”, “u” e “v” tuplos de conjuntos. A divisão entre “R” e “S” pode ser dada por:

R ÷ S = { t [R - S] | ∀ u ∈ S, ∃ v ∈ R | v[S] = u ∧ v [R - S] = t }

Álgebra Relacional

  Esquema de uma Relação

 Dada uma relação R, define-se o “Esquema” de R através do número total de atributos e do domínio de cada um em particular.

  O esquema da relação ilustrada será:   3 atributos

  Domínio do 1º Atributo Seq.ª de Caracteres

  Domínio do 2º Atributo Inteiros

  Domínio do 3º Atributo Inteiros

Nome B.I. CodPostal

José 1234567 6200

Rita 6272632 6300

Joana 6182930 6200

Álgebra Relacional

  Compatibilidade de Esquemas

 Duas relações “R” e “S” têm esquemas compatíveis se e só se:   O número de atributos de “R” é igual ao número de atributos de “S”

  Cada atributo de “R” tem domínio compatível com o respectivo atributo de “S”.

Nome B.I. CodPostal

José 1234567 6200

Rita 6272632 6300

Joana 6182930 6200

Morada Codigo CodFuncao

Rua da ... 11 12

Avenida... 717 18

Praça... 888 1218

OK

Álgebra Relacional

Compatibilidade de Esquemas

Nome B.I. CodPostal

José 1234567 6200

Rita 6272632 6300

Joana 6182930 6200

Morada CodFuncao Codigo

Rua da ... 12 11

Avenida... 18 717

Praça... 1218 888

OK Morada Codigo CodFuncao

Rua da ... 11 12

Avenida... 717 18

Praça... 888 1218

Nome B.I.

José 1234567

Rita 6272632

Joana 6182930

X

Álgebra Relacional

• União:

R = A ∪ B Esta operação exige que as duas relações iniciais tenham esquemas compatíveis (isto é, além do mesmo grau, é necessário que tenham domínios compatíveis). O resultado consiste numa relação contendo os tuplos pertencentes à primeira ou à segunda relação ou a ambas.

A B C

a1 b1 c1

a2 b2 c2

a3 b3 c3 ∪

A B C

a1 b1 c1

a4 b4 c4 =

A B C

a1 b1 c1

a2 b2 c2

a3 b3 C3

a4 b4 c4

Álgebra Relacional

  Intersecção:

R = A ∩ B   Da mesma forma que a anterior, exige que as duas relações

iniciais tenham esquemas compatíveis (isto é, além do mesmo grau, é necessário que tenham domínios compatíveis). A relação final contém os tuplos comuns às duas relações iniciais.

A B C

a1 b1 c1

a2 b2 c2

a3 b3 c3 ∩

A B C

a1 b1 c1

a4 b4 c4 =

A B C

a1 b1 c1

Álgebra Relacional

  Diferença:

R = A - B

  À semelhança das anteriores, também exige que as duas relações iniciais tenham esquemas compatíveis (isto é, além do mesmo grau, é necessário que tenham domínios compatíveis). A relação final contém os tuplos pertencentes à primeira relação e não pertencentes à segunda.

A B C

a1 b1 c1

a2 b2 c2

a3 b3 c3 -

A B C

a1 b1 c1

a4 b4 c4 =

A B C

a3 b3 c3

a2 b2 c2

Álgebra Relacional

  Produto Cartesiano:

R = A x B   Dadas quaisquer relações sem atributos comuns, o resultado do produto

cartesiano corresponde a todas as combinações possíveis dos tuplos da primeira relação com os da segunda.

A B

a1 b1

a2 b2

a3 b3 X

C D

c1 d1

c4 d4 =

A B C D

a1 b1 c1 d1

a2 b2 c1 d1

a3 b3 c1 d1

a1 b1 c4 d4

a2 b2 c4 d4

a3 b3 c4 d4

Álgebra Relacional

 Selecção:

σ <condição> (Relação)   Operador unário, que toma uma relação inicial e origina uma

outra contendo os tuplos da relação inicial que satisfazem a condição descrita.

=

A B C

a1 b1 c1

a2 b2 c2

a3 b3 C3

a2 b4 c4

R

σ <A=a2> (R) A B C

a2 b2 c2

a2 b4 c4

Álgebra Relacional

  Projecção:

Π <lista_atributos> (Relação)   Tal como o anterior, é um operador unário, que toma uma relação inicial e

transforma-a em outra contendo apenas os atributos descritos em “lista_atributos”

=

A B C

a1 b1 c1

a2 b2 c2

a3 b3 C3

a2 b4 c4

R

Π <A,B> (R) A B

a1 b1

a2 b2

a3 b3

a2 b4

Álgebra Relacional

 Junção Natural:

R = A ∞ B   Esta operação combina tuplos provenientes de duas relações distintas com

base em atributos comuns. A relação final contém um tuplo por cada combinação de tuplos das duas relações que contenham valores iguais nos atributos comuns. É necessário existir pelo menos um atributo comum (domínio) nas duas relações.

∞ =

A B C

a1 b1 c1

a2 b2 c2

a3 b3 c3

a2 b4 c4

C D

c1 d1

c3 d3

A B C D

a1 b1 c1 d1

a3 b3 c3 d3

Álgebra Relacional

 Divisão:

R = A ÷ B   Dadas duas relações em que o conjunto dos atributos da relação-divisor está contido no

conjunto de atributos da relação dividendo, o resultado da divisão das relações consiste nos atributos que não figuram na relação divisor. Os tuplos resultado serão os que na relação “dividendo” satisfazem os valores da relação “divisor”.

A B

a1 b1

a4 b4 ÷

C D

c1 d1

c4 d4 =

A B C D

a1 b1 c1 d1

a2 b2 c2 d2

a1 b1 c4 d4

a4 b4 c4 d4

a5 b5 c4 d4

a4 b4 c1 d1

Álgebra Relacional

  A partir da combinação dos operadores da álgebra relacional descritos anteriormente pode-se formalizar toda a linguagem de pesquisa de informação numa base de dados.

  Exemplo:

  Quais os atributos “A e B” dos tuplos da relação “R” em que o atributo “C” é igual a “c1”?

  Pode ser traduzido por: Π<A,B>(σ<C=c1>(R))

A B C

a1 b1 c1

a2 b2 c2

a3 b3 C3

a2 b4 c4

Álgebra Relacional

 Π<A,B>(σ<C=c1>( ))

Poder-se-ia aplicar comutatividade ? σ<C=c1>(Π<A,B> (R))

A B C

a1 b1 c1

a2 b2 c2

a3 b3 c3

a2 b4 c4

A B C

a1 b1 c1

A B

a1 b1

Selecção

Projecção

Álgebra Relacional

  A partir de um conjunto de relações, é sempre possível a aplicação sequencial de diferentes operadores por forma a seleccionar a informação pretendida...

A B C

a1 b1 c1

a2 b2 c2

a3 b3 c3

a2 b4 c4

A

a1

a2

A B C

a1 b1 c1

a2 b2 c2

C

c1

? ? ?