Você está na página 1de 26

UNIVERSIDADE EDUARDO MONDLANE

DEPARTAMENTO DE MATEMÁTICA E INFORMÁTICA

Ficha de apoio de : BASE DE DADOS 1


Curso: Informática

CAPÍTULO: MODELO RELACIONAL, ÁLGEBRA E CÁLCULO RELACIONAL


*Inclue exercícios resolvidos e propostos sobre álgebra relacional

O DOCENTE: Hélder MC Muianga

Maputo, Março de 2017


UEM: Departamento de Matemática e Informática Base de Dados 1

1. MODELO RELACIONAL

Proposto originalmente por E. F. Codd durante seu trabalho no Laboratório de Pesquisas da IBM
em San Jose na segunda metade da década de 60, o Modelo Relacional se baseia em conceitos
matemáticos para proporcionar uma representação confiável para Bancos de Dados. Desde sua
implantação no primeiro SGBDR (Sistema de Gerenciamento de Bancos de Dados Relacionais)
da IBM denominado System R, várias melhorias têm sido incluídas ao modelo, o que o torna
ainda atual e o mais utilizado no mercado.

O Modelo de Dados Relacional representa os dados em um BD através de um conjunto de


Relações (tabelas ou entidades). Estas relações contêm informações sobre entidades ou
relacionamentos existentes no domínio da aplicação utilizada como alvo para a modelagem.
Informalmente uma relação pode ser considerada como uma tabela de valores, onde cada linha
desta tabela representa uma coleção de valores de dados interrelacionados. Estes conjuntos de
valores podem estar representando uma instância de uma entidade ou relacionamento da
aplicação. Os nomes fornecidos às tabelas e às suas colunas podem auxiliar na compreensão do
significado dos valores armazenados em cada uma das suas linhas. Em terminologia do Modelo
Relacional, cada linha da relação é denominada de Tupla, o nome da coluna é denominado
Atributo da relação.

O Domínio consiste de um grupo de valores atômicos a partir dos quais um ou mais atributos (ou
colunas) retiram seus valores reais. Como por exemplo o domínio do atributo FCIDADE consiste
no conjunto de todos os nomes legais de cidades.

1.1. TIPOS DE BASES DE DADOS RELACIONAIS

1. Oracle Database

 Oracle 7, 8, Oracle 9i, Oracle 10g e Oracle 11g

2. SQL Server

 SQL Server 6.5, SQL Server 2000, SQL Server 2005, SQL Server 2008
3. MySQL

 MySQL 4, MySQL 5
4. MS Access

 Access 2000, Access 2003, Acess 2007


5. Outros

 DB2, PostgresSQL e mais

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


2
UEM: Departamento de Matemática e Informática Base de Dados 1
1.2. OUTROS CONCEITOS DA ÁLGEBRA RELACIONAL:

1.2.1. Entidade – qualquer “coisa”, isto é, objecto concreto ou abstracto: pessoa, conceito, factos
ou acontecimentos sobre a qual o sistema tem interesse em guardar informação e que pode ser
identificado de uma forma inequívoca perante outras entidades através de suas propriedades. É
também designado por Relação ou Tabela.

Algumas características das entidades:

 Estrutura bidimensional

 Pode ter zero ou mais instâncias (uma instância é cada linha ou tupla que compõe uma
tabela)

 Seu esquema pode ter um ou mais atributos

 Cada atributo tem um domínio (valores possíveis)

 Não há tuplas duplicadas em uma relação

 Ordem das tuplas na relação não é relevante para diferenciar as relações

 Os valores dos atributos devem ser atômicos, não sendo divisíveis em componentes.

Exemplos de Entidades: Curso, Especialidade, Prescrição, Renovação, Produto, Veiculo, etc.


Representação: Uso do rectângulo:

1.2.2. Conjuntos de Entidades

Características:
 São entidades do mesmo tipo
 Compartilham os mesmos atributos
 Cada entidade individual é uma extensão do conjunto
 Os conjuntos de entidades não são necessariamente separados
Exemplo:

 Cada entidade tem um valor ou um conjunto de valores distintos nos atributos

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


3
UEM: Departamento de Matemática e Informática Base de Dados 1

1.2.3. Atributo – é qualquer propriedade de uma entidade que assume valores atómicos
(indivisíveis) num domínio e que seja de interesse para a organização. O número de atributos de
um esquema de relação, define o grau da relação.

1.2.4. Domínio – é um conjunto de valores permitidos a um atributo, ou seja, o conjunto de todos


os valores que podem ser assumidos por um atributo concreto.

TIPOS DE ATRIBUTOS

Um atributo como é usado para caracterizar uma entidade, pode ser caracterizado pelos seguintes
tipos:

1.2.4.1. Atributos Simples – são aqueles que não se dividem. Exemplo: número de BI, idade,
sexo, etc.

1.2.4.2. Atributos Compostos – são aqueles que podem ser divididos em parte, isto é, em outros
sub-atributos.

Exemplo: Nome (subdividindo em Apelido e Outros Nomes).


Endereço (subdividindo em avenida, bairro, quarteirão, etc.)

1.2.4.3. Atributos monovalorados – são aqueles que assumem um e único valor para cada
elemento da entidade. Exemplo: número de estudante (é único valor para cada um individuo),
NUIT, etc.

1.2.4.4. Atributos multivalorados – são atributos que podem assumir vários valores para cada
um dos elementos da entidade.

Exemplo: Número de telefone (uma pessoa pode ter vários números de telefone…)
Local de Trabalho (uma pessoa pode ter vários locais de trabalho…)

1.2.4.5. Atributo Null – quando para uma dada instância de uma entidade não existe um valor
aplicável para aquele atributo ou ele não é conhecido. Exemplo quando o estudante não faz um
teste, não se atribui zero mas sim deixa-se em branco. Importa realçar que zero é diferente null.

1.2.4.6. Atributos Derivados – o valor desse atributo pode ser derivado de outros atributos da
mesma entidade ou entidades a ele relacionado.

Exemplo: Idade pode ser obtida a partir da Data de Nascimento. Neste exemplo, o atributo Data
de Nascimento é igualmente designado de atributo base.

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


4
UEM: Departamento de Matemática e Informática Base de Dados 1

1.3. REPRESENTAÇÃO GRÁFICA:

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


5
UEM: Departamento de Matemática e Informática Base de Dados 1

1.4. ASSOCIAÇÕES OU RELACIONAMENTOS ENTRE ENTIDADES


(RELACIONAMENTOS ENTRE RELAÇÕES)

Uma associação do tipo R entre n entidades: E1, E2,..., En define uma afinidade concreta entre as
instâncias dessas entidades, isto é, relacionamento entre entidades. Um relacionamento define
uma associação entre uma ou várias entidades ou relações.
Um aspecto que importa frisar é que não existe um critério claro e padrão de como distinguir
uma entidadade de um atributo, pois essa escolha depende na sua essência de como a base de
dados é modelada e sobretudo do contexto organizacional. Portanto, essa distinção dependerá de
dois aspectos: da estrutura real da organização e da semântica.
Exemplo:
EMPREGADO Trabalha_para DEPARTAMENTO

1.4.1. Grau de uma Associação – é o número de entidades que participam na associação.

a) Associação Unária – quando a associação é definida só por uma única entidade.

EMPREGADO Trabalha_para

b) Associação Binária – quando a associação é definida por duas (2) entidades.

EMPREGADO Presta CLIENTE


serviço ao

c) Associação Ternária – quando na associação participam três (3) entidades.

Um par de ocorrências (cidade, produto) – associado a no máximo 1 distribuidor;

Um par (cidade, distribuidor) – associado a muitos produtos, ou seja, um distribuidor pode


distribuir em uma cidade muitos produtos; Um par (produto, distribuidor) – associado a muitas
cidades, ou seja, um distribuidor pode distribuir um produto em muitas cidades.

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


6
UEM: Departamento de Matemática e Informática Base de Dados 1
1.5. MAPEAMENTO DE CARDINALIDADE

1.5.1. Cardinalidade

Expressa o número de entidades às quais outra entidade pode estar associada via um conjunto de
relacionamentos.
 Um para Um (1:1)
Uma entidade A está associada no máximo a uma entidade B e uma entidade B está associada no
máximo a entidade de A.
Exemplo:

EMPREGADO 1 Dirige
1 DEPARTAMENTO

Um empregado dirige um único departamento e um


departamentento é dirigido por um único empregado.

 Um para Muitos (1:N) ou (1:∞)


Uma entidade A está associada a qualquer número de entidades de B. Uma entidade de B,
entretanto, pode estar associada no máximo a uma entidade de A. Exemplo:

1
8

CURSO Matriculam-se ESTUDANTE

 Muitos para Um (N:1) ou (∞:1)


Uma entidade A está associada no máximo a uma
entidades de B. Uma entidade de B, entretanto, pode estar associada a qualquer número de
entidades de A; Exemplo:
8

EMPREGADO Trabalha para 1 DEPARTAMENTO

 Muitos para Muitos (M:N) ou

(∞:∞)

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


7
UEM: Departamento de Matemática e Informática Base de Dados 1
Uma entidade A está associada a qualquer número de entidades de B e uma entidade de B está
associada a qualquer número de entidades de A.
Exemplo:

8
FORNECEDOR
8 Fornece PRODUTO
1.5.2.

Entidade Associativa ou Gerúndio

Uma associação N:N com atributos próprios que o


projectista escolhe modelar como uma entidade
associada as outras entidades. Muitas vezes, a discussão entre associação e entidade é uma
questão de ponto de vista.

1.5.3. Restrição de Participação

Mostra se a existência de uma entidade depende de outra entidade por meio de uma associação.
Há dois tipos de restrição de participação:

1.5.3.1. Participação Total ou Obrigatória: a participação de uma entidade A na associação é


obrigatória quando não pode existir nenhuma ocorrência dessa entidade que não esteja associada
a alguma ocorrência da outra entidade que participa na associação.

 Todo Departamento precisa necessariamente ter um empregado que o gerencie


(participação total);
 Nem todo Empregado é gerente de um departamento (participação parcial).

1.5.3.2. Participação Parcial ou Não Obrigatória: somente parte do conjunto de entidades é


relacionada à entidade correspondente na associação.

1.5.4. Entidade Fraca

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


8
UEM: Departamento de Matemática e Informática Base de Dados 1
São entidades que não possuem chave primária e cujas instâncias não podem existir sem a
existência de outra entidade.
Exemplo: Numa associação entre as entidades Empregado e Dependente, o Dependente só
existe se houver um Empregado a ele associado.

1.5.5. Estrutura ISA

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


9
UEM: Departamento de Matemática e Informática Base de Dados 1

1.6. NOTAÇÃO MATEMÁTICA DO MODELO RELACIONAL

As seguintes notações serão utilizadas para apresentar alguns conceitos do modelo relacional:

 Uma relação esquema R de grau n é representada como R(A1, A2, ..., An)

 Uma tupla t em uma relação r(R) é representada como t=<v1, v2, ..., vn>, onde vi é o
valor correspondente para atributos Ai. Será utilizado as seguintes notações para se referir
aos valores dos componentes de tuplas:

o t[Ai] indica o valor de vi em t para o atributo Ai.

o t[Au, Aw, ..., Az] onde Au, Aw, ..., Az é uma lista de atributos de R, indica o
conjunto de valores <vu, vw, ..., vz> de t correspondentes aos atributos
especificados na lista.

 As letras maiúsculas como Q, R e S denotam nomes de relação.

 As letras minúsculas como q, r e s denotam instâncias de relação.

 As letras minúsculas como t, u e v denotam tuplas.

Uma relação r (ou instância de relação) da relação esquema R(A1, A2, ..., An), também denotado
por r(R), é um conjunto de tuplas r={t1,t2,...,tm}. Cada tupla t é uma lista ordenada de n valores
t=<v1,v2,...,vn>, onde cada valor vi, 1 <= i <= n, é um elemento do dom(Ai) ou um valor
especial null. É utilizado, com frequência, o termo intenção da relação para o esquema R e
extensão da relação para a instância r(R).

Um esquema da base de dados relacional S é um conjunto de relações esquemas S={R1,R2, ...,


Rm} e um conjunto de restrições de integridade RI. Uma instância da base de dados relacional

DB de S é um conjunto de instâncias de relações DB={r1, r2, ..., rm} tal que ri é uma instância
de Ri e que satisfaz as restrições de integridade especificadas em RI.

Uma relação esquema R, denotada por R(A1, A2, ..., An), é um conjunto de atributos
R={A1,A2,..., An}. Cada atributo Ai indica o nome do papel de algum domínio D na relação
esquema R.

D é chamado domínio de Ai e denotado por dom(Ai). Uma relação esquema é utilizada para
descrever uma relação e R é o nome dessa relação. O grau de uma relação é o número de
atributos da relação.

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


10
UEM: Departamento de Matemática e Informática Base de Dados 1

1.6.1. Chaves:

Chave é um conjunto de atributos de uma relação e que pode ser utilizado para a realização de
qualquer operação que envolva atributos e valores de atributos.

Super Chave é o maior conjunto de atributos para manipulação e/ou identificação univocamente
de uma tupla em uma relação. Uma relação pode ter várias chaves para identificação unívoca de
suas tuplas, onde cada uma é denominada de Chave Candidata. Entre as chaves candidatas é
escolhida uma durante a fase de projecto lógico, para ser suportada pelo SGBD e assim, é
mantida automaticamente a restrição de unicidade.

Esta chave escolhida é denominada de Chave Primária. Desta forma, uma relação nunca
apresentará tuplas repetidas em sua instância, o que significa a possibilidade de identificação de
cada tupla separadamente uma da outra.

Da relação apresentada para fornecedores, o conjunto {FCODIGO} é a chave primária da


relação, uma vez que dois fornecedores não apresentarão o mesmo código. Qualquer outro
conjunto de atributos da relação FORNECEDOR que contenha FCODIGO, como por exemplo
{FCODIGO, FNOME, FCIDADE} é uma chave candidata, no entanto a escolha da chave
primária é sempre objetivando minimizar sua quantidade de atributos. Quando uma chave
primária for constituída por mais de um atributo da relação esta é denominada de Chave
Primária Composta, caso contrário e denominada Chave Primária Simples. Entre as Chaves
Candidatas, aquelas não escolhidas para ser a Chave Primária são denominadas de Chaves
Alternativas e podem ser utilizadas como chaves de consultas, chaves de ordenação lógica (em
consultas por formulários e/ou relatórios) ou chaves de ordenação física das relações em termos
de arquivos de dados. As Chaves que não pertencem aos conjunto de Chaves Candidatas, ou
seja, são chaves que não permitem a identificação individual das tuplas de relação, são
denominadas de Chaves Secundárias.

Um conjunto de atributos Fk em um esquema da relação R1 é uma Chave Estrangeira de R1 se


os atributos em Fk possuem o mesmo domínio que os atributos da chave primária de uma relação
R2 e os valores de Fk em uma tupla de R1 devem ser os mesmos que ocorrem em tuplas de R2
ou serem nulos, e neste caso é dito que os atributos da Fk se referenciam à relação R2.
Importante observar que uma chave estrangeira pode referenciar à sua própria relação, e que
também não é necessário aparecer também como chave na relação R1. Para exemplificar o
conceito de chave estrangeira, considere as relações abaixo sobre Peças e Fornecedores, e das
peças fornecidas por cada fornecedor (as chaves de cada relação se encontram sublinhadas):

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


11
UEM: Departamento de Matemática e Informática Base de Dados 1
FORNECEDOR(FCODIGO, FNOME, FCATEGORIA, FCIDADE);

PEÇA (PCODIGO, PNOME, PCOR, PESO, PCIDADE);

FP (FPCODIGO, FCODIGO, PCODIGO, QTDE);

Entre as relações anteriores, pode-se observar que FCODIGO e PCODIGO quando aparecem na
relação FP são chaves estrangeiras desta relação pois são chaves primárias das relações
FORNECEDOR e PEÇA, respectivamente.

1.6.2. Restrições de Integridade

São normas estabelecidas para a manter a integridade dos dados armazenados na Base de Dados.
As principais restrições de integridade são:

1.6.2.1. Restrição de Domínio: os valores de atributos devem ser coerentes com os domínios
correspondentes. Cada Atributos de uma relação é definido com base em um domínio de valores
(exemplos: Idade, seu domínio são os números inteiros positivos; Salários, seu domínio são os

números reais positivos).

1.6.2.2. Restrição de Chave Primária (unicidade): cada valor de chave primária deve ser único
dentro de seu escopo (a relação a que pertence).

1.6.2.3. Restrição de Entidade: o valor de uma chave primária nunca deve ser nulo. O valor nulo
não permite a identificação de uma tupla.

1.6.2.4. Restrição de Referência: toda referência a uma tupla através de chave estrangeira deve
ser verificada, ou seja, toda tupla referenciada deve previamente existir no Banco de Dados a
menos que esta restrição seja explicitamente desprezada pelo usuário da Base de Dados.

Outras restrições são denominadas de Restrições Semântica, que podem ou não serem
especificadas ou garantidas por um BD Relacional. Estas restrições ditas semânticas se referem
mais especificamente sobre valores ou características que determinados atributos podem assumir
no contexto de uma determinada aplicação.

As Restrições Semânticas consistem em definir intervalos de valores para os atributos, limites,


condições de existência, e outras. Exemplos:- Salário: valores no intervalo de 150,00 a 2400,00
reais; Categoria: Senior se tempo de trabalho >20, Pleno se tempo de trabalho é >10, Júnior caso
contrário.

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


12
UEM: Departamento de Matemática e Informática Base de Dados 1

1.7. DEFINIÇÃO FORMAL DE ALGEBRA RELACIONAL:

É uma linguagem formal que consiste de uma série de operadores que:

 Actuam sobre relações (uma ou várias)

 Produzem novas relações como resultado, sem alterar as relações originais

 Podem ser combinadas para construir expressões mais complexas

1.8. OPERAÇÕES DA ÁLGEBRA RELACIONAL

Tal como o sistema matemático, a álgebra relacional é constituída por operadores e operandos,
onde os operandos são as instâncias e os operadores são todas as operações mais comuns que são
necessárias para manipular relações numa Base de Dados. É por esta razão que a álgebra
relacional pode ser usada como uma linguagem de consulta. As operações no Modelo Relacional
abordam 4 categorias: Estrutura, Dados, Conjuntos e Relações. Todas as operações devem
obedecer as restrições de integridade, no entanto quando estas restrições forem violadas em
algumas das operações, o SGBD pode tomar uma acção adaptativa (que permitirá a execução da
operação, mas com algumas restrições) ou uma acção de esclarecimento da impossibilidade de
execução.

ESTRUTURA: as operações sobre a estrutura apoiam os administradores de bases de dados


(DBA´s) na tarefa de definição e manutenção do Esquema de Dados Relacional.

 INSERÇÃO : adição de novas tabelas ao Esquema de Dados.

Exemplo: adição de uma relação de funcionários e seus correspondentes atributos (nome,


endereço, idade, salário, cargo).

 REMOÇÃO : retirada de tabelas e atributos.

Exemplo: a retirada de uma relação empresas_estrangeiras que não tem mais utilizada no
Banco de Dados (neste caso todas as suas tuplas são retiradas desde que não violem as
restrições de referências) ou mesmo de certos atributos de uma relação.

 ACTUALIZAÇÃO: adição de atributos às tabelas existentes no Esquema de Dados.


Exemplo: Colocação de novos atributos (tempo de serviço e estado civil) na relação
funcionários.

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


13
UEM: Departamento de Matemática e Informática Base de Dados 1
É importante salientar que as operações sobre estrutura (atingindo o Esquema de Dados)
permitem ao DBA adaptar a Base de Dados às novas necessidades de informação de uma
organização. Apesar de oferecerem esta facilidade, estas operações não devem ser utilizadas para
corrigir erros decorrentes das fases de projecto, pois sua utilização acarreta prejuízos (altos
custos de manutenção correctiva) à empresa e desvaloriza os profissionais envolvidos.

DADOS: operações sobre as tuplas de uma relação já existente na Base de Dados

 INSERÇÃO: adição de uma ou mais tuplas em uma relação. A acção do SGBD diante de
um erro da operação pode ser: rejeitar a operação, ou pedir para corrigir o campo que
provocou a violação.

Exemplo: Dada uma relação funcionários definida no Esquema de Dados, pode-se inserir
os dados de uma pessoa recém contratada (Nome: João da Silva, Idade: 34, Endereço:
Rua 4 Nro. 8 Cidade Rio Claro, Salário: , Cargo: Operador de torno CNC).

 REMOÇÃO: retirada de tuplas de uma relação. A acção do SGBD diante de um erro da


operação pode ser: rejeitar a operação; realizar uma série de remoções em cascata;
modificar os valores dos atributos referenciados que provocaram a violação (trocando por
nulo, ou para um valor que faz referência a outra tupla válida de uma relação).

Exemplo: Dada uma relação funcionários definida no Esquema de Dados, pode-se retirar
os dados de uma pessoa dispensada (Nome: Maria da Silva, Idade: 26, Endereço: Rua 4
Nro. 8 Cidade Rio Claro, Salário: 1000, Cargo: Manobrista de D8).

 ACTUALIZAÇÃO: alteração de algum valor de atributo de uma tupla. A alteração do


valor de uma chave primária segue como se fosse uma remoção seguida de uma posterior
inserção.

Exemplo: Dada uma relação funcionários definida no Esquema de Dados, pode-se


corrigir, actualizar ou mesmo estabelecer alguma informação antes desconhecida, como o
salário de João da Silva (Salário: 1200).

Resumindo, todas as operações sobre um conjunto de tuplas concreto, resultam em uma outra
relação. Os operadores da álgebra relacional podem ser divididos em dois grupos distintos:

 Operadores de Conjuntos: são operadores típicos definidos pela álgebra para conjunto,
tais como união, interseção, diferença e produto cartesiano.

 Operadores de Tabelas: são operadores especiais definidos especialmente para a


manipulação de tuplas, tais como: Select, Project e Join.

Estes mesmos operadores podem ainda ser agrupados como sendo:

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


14
UEM: Departamento de Matemática e Informática Base de Dados 1
 Operadores Básicos: São operacionalmente completos e permitem expressar/efectuar
qualquer consulta na Base de Dados. São eles:

União, Diferença, Produto Cartesiano, Selecção e Projecção

 Operadores Derivados: São operadores que não trazem nada de novo e são formados
recorrendo à uma combinação de operadores básicos. Porém mostram-se como sendo
bastante útil em determinadas consultas. São eles:

Interseção, Join (Join), Divisão e Associação.

CONJUNTOS: operações que se aplicam a duas relações que obedecem à "compatibilidade de


união", ou seja, ambas as relações devem apresentar atributos que pertençam respectivamente aos
mesmos domínios. Em termos das relações (A e B) usadas nas operações:

 Ambas podem estar fisicamente armazenadas no mesmo Banco de Dados; ou

 Estarem fisicamente armazenadas em diferentes Bancos de Dados; ou

 Uma estar armazenada e a outra ser originária (relação resultante) de uma operação de
conjunto anteriormente executada; ou

 Ambas serem resultantes de operações de conjunto realizadas anteriormente.

1.8.1. ALGEBRA RELACIONAL VS CÁLCULO RELACIONAL

Quer a algebra, quer o cálculo relacional, são ambas linguagens de acesso à BD relacional.
Enquanto a álgebra relacional, trata-se de uma linguagem procedural (indica-se o que fazer,
comando a comando, e como fazer para obter o resultado esperado), o cálculo relacional é uma
linguagem não procedural (indica-se o que fazer mas não como proceder) orientada para as
tuplas e para o domínio. Ambos são equivalentes no seu poder expressivo. Algumas bibliografias
tratam estas duas duas linguagens como sendo procedimental e não procedimental, porém o
princípio é o mesmo. Em termos de linguagem do usuários destacam-se: SQL (Structered Query
Language) baseado na algebra relacional e o QBE (Query By Example) baseado no cálculo
relacional.

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


15
UEM: Departamento de Matemática e Informática Base de Dados 1

1.8.2. UNIÃO: Simbolicamente usa-se “U”

R U S : lê-se R união com S

A união de dua relações R e S, resulta numa terceira relação contendo todas que pertençam à R e
a S, ou a ambas, eliminado as tuplas duplicadas. OU seja, uma tupla que esteja em R e em S, ao
se efectuar a união essa mesma tupla não aparecerá repetida na relação resultante.

ENGENHEIROS CHEFES ENGENHEIROS U CHEFES


E# Nome Idade E# Nome Idade E# Nome Idade
123 Abdul 34 124 John 43 123 Abdul 34
124 John 43 321 Marcus 32 124 John 43
126 Martin 31 126 Martin 31
321 Marcus 32

1.8.3. DIFERENÇA: Simbolicamente usa-se “-“

R – S : lê-se R menos S

A diferenças das relações R e S, é o conjunto de todas as tuplas que estão em R mas não estão em
S. R e S devem ser compatíveis para união.

ENGENHEIROS CHEFES ENGENHEIROS - CHEFES


E# Nome Idade E# Nome Idade E# Nome Idade
123 Abdul 34 124 John 43 123 Abdul 34
124 John 43 321 Marcus 32 126 Martin 31
126 Martin 31

ENGENHEIROS CHEFES CHEFES - ENGENHEIROS


E# Nome Idade E# Nome Idade E# Nome Idade
123 Abdul 34 124 John 43 321 Marcus 43
124 John 43 321 Marcus 32
126 Martin 31

1.8.4. Produto Cartesiano: Simbolicamente usa-se “x”

R x S : lê-se R produto cartesiano S

ENGENHEIROS DEPARTAMENTOS PROJECTOS


E# Nome D# D# Descrição E# Duração
123 Abdul 001 001 RH PR01X 20
124 John 002 002 MRKT PR02Y 12

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


16
UEM: Departamento de Matemática e Informática Base de Dados 1
ENGENHEIROS X DEPARTAMENTOS
E# Nome D# DD Descrição
123 Abdul 001 001 RH
123 Abdul 001 002 MRKT
124 John 002 001 RH
124 John 002 002 MRKT

ENGENHEIROS X PROJECTOS
E# Nome D# E# Duração
123 Abdul 001 PR01X 20
123 Abdul 001 PR02Y 12
124 John 002 PR01X 20
124 John 002 PR02Y 12

1.8.5. SELECÇÃO: Simbolicamente usa-se “ ”

 É um operador unário

 Define uma relação com os mesmos atributos que R e que contém apenas aquelas tuplas
que satisfazem a condição especificada (predicado)

Esta operação é aplicada sobre uma relação de modo a selecionar um sub-conjunto de tuplas
(com todos os seus atributos) que satisfaçam a um determinada condição (simples ou composta).
O subconjunto selecionado forma uma relação resultante temporária. Esta condição aplica-se
apenas em uma única relação sendo verificada individualmente para cada tupla da relação.
Exemplo: Dado uma relação dos funcionários da empresa, selecionar aqueles que recebem
salário > 2000 MT.

A operação SELECT é denotada por:

 <condição de seleção> (<nome da relação>)

onde o símbolo é usado para denotar o operador SELECT, e a condição de seleção é uma
expressão Booleana especificada sobre atributos da relação especificada. A relação resultante da
operação SELECT tem os mesmos atributos da relação especificada em <nome da relação>. A
expressão Booleana especificada em <condição de seleção> é construída a partir de cláusulas da
forma:

<nome de atributo> <operador de comparção> <valor constante>, ou


<nome de atributo> <operador de comparação> <nome de atributo>

Operadores: {=, <, , , }. As cláusulas podem ser utilizadas em conjunto com os operadores
lógicos {AND, OR, NOT}

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


17
UEM: Departamento de Matemática e Informática Base de Dados 1
Exemplo:

Suponha que se deseja selecionar as tuplas de todos os empregados que ou trabalham no


departamento 4 e auferem mais de 2500 ou que trabalham no departamento 5 e auferem mais do
que 3000.

Neste caso, pode-se especificar a consulta da seguinte forma:

 (NDEP = 4 AND SALÁRIO > 2500) OR (NDEP = 5 AND SALÁRIO > 3000) (EMPREGADO)

Exemplo2:

ENGENHEIROS idade>35 (ENGENHEIROS) idade>=44 (ENGENHEIROS)


E# Nome Idade E# Nome Idade E# Nome Idade
123 Abdul 34 124 John 43
124 John 43
126 Martin 31

O operador SELECT é comutativo; isto é,

<cond1> (<cond2> (R))<cond2> (<cond1> (R))

Assim, uma seqüência de SELECTs pode ser aplicado em qualquer ordem. Além disso, podese
sempre trocar operadores SELECT em cascata com a conjuntiva AND; isto é:
<cond1> (<cond2> (...<condn> (R) ...))=<cond1> AND <cond2> AND ... AND <condn>(R)

1.8.6. PROJECÇÃO: Simbolicamente usa-se “ ”

 É um operador unário

 Define uma relação que contém um subconjunto vertical de R com os valores dos
atributos especificados, eliminando filas duplicadas no resultado.

Esta operação é aplicada sobre uma relação de modo a selecionar os atributos de uma relação de
acordo com uma lista de atributos oferecida. Os atributos são exibidos na mesma ordem que
aparecem na lista. Como resultado tem-se uma relação onde não existem repetições de tuplas.
Exemplo: Projetar apenas o nome, idade e salário de uma relação de funcionários. A relação
resultante é uma tabela sem repetições. Caso na lista de atributos estiver incluída a chave
primária da relação então tem-se certeza que não há repetições. A forma geral do operador
PROJECT é:

<lista de atributos> (<nome da relação>)

Note-se que: <lista1> (<lista2> (R)) = <lista1> (R), caso <lista2> contenha os atributos de <lista1>;

Exemplo:

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


18
UEM: Departamento de Matemática e Informática Base de Dados 1
ENGENHEIROS nome, idade (ENGENHEIROS) nome (ENGENHEIROS)
E# Nome Idade Nome Idade Nome
123 Abdul 34 Abdul 34 Abdul
124 John 43 John 43 John
126 Martin 31 Martin 31 Martin
127 Tsakani 27 Tsakani 27 Tsakani

1.8.7. INTERSEÇÃO: Simbolicamente usa-se “∩”

R ∩ S : lê-se R interseção com S

Define uma relação que contêm todo o conjunto de tuplas que pertencem simultaneamente à
relação R e S e ambos conjuntos devem ser “compatíveis para a união”. Existe a seguinte
equivalência com os operadores básicos.

R ∩ S = R – (R – S)
ENGENHEIROS CHEFES CHEFES ∩ ENGENHEIROS
E# Nome Idade E# Nome Idade E# Nome Idade
123 Abdul 34 124 John 43 124 John 43
124 John 43 321 Marcus 32
126 Martin 31

1.8.8. DIVISÃO E QUOCIENTE: Simbolicamente usa-se “-:-”

R-:-S: Lê-se R divisão por S

Define uma relação sobre o conjunto de atributos C, incluindo a relação R, e que contém o
conjunto de valores de C, que nas tuplas de R estão combinadas com cada tupla de S

Condições:

 Grau de R deve ser maior que S [Grau (R) > Grau (S)]

 Conjunto de atributos de S está contido no conjunto de atributos de R

Existe a seguinte equivalência com operadores básicos:

X1c (R) X2c ((S x X1) – R); X = X1 - X1

1.8.9. JOIN

1.8.9.1. NATURAL JOIN: Simbolicamente usa-se “*” ou “ ”

R * S ou R S: Lê-se R Natural Join com S

Define uma nova relação com os atributos de ambas relações e se obtém combinando as tuplas de
ambas relações que tenham os mesmos valores nos atributos comuns. Normalmente a operação

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


19
UEM: Departamento de Matemática e Informática Base de Dados 1
de JOIN realiza-se entre os atributos comuns de duas tabelas que correspondem a chave primária
de uma tabela e a chave estrangeira da outra tabela.

Método:

 Efectua-se o produto cartesiano de RxS

 Seleccionam-se aquelas filas do produto cartesiano para as quais os atributos comuns têm
o mesmo valor

 Eliminam-se do resultado, uma das ocorrências (colunas) de cada um dos atributos


comuns que tenha o mesmo valor

Existe a seguinte equivalência com os operadores básicos:

R F S = F (RxS)

Variantes de JOIN:

1.8.9.2. OUTER JOIN

É uma variante de JOI N em que se mantém a informação de todos os operandos, incluindo as


filas que não participam no JOIN. São atribuídos valor null as tuplas que não têm
correspondência no JOIN. Existem as seguintes variantes do OUTER JOIN:

 LEFT JOIN: Tem-se em conta todas as filas do primeiro operando

 RIGHT JOIN: Tem-se em conta todas as filas do segundo operando

 FULL: Tem-se em conta as filas de ambos operandos

Exemplo:

Considere as seguintes relações:

ENGENHEIROS DEPARTAMENTO
E# Nome D# D# Nome
123 Abdul D01 D01 Vendas
124 John D03 D03 Marketing
126 Martin D03 D04 Finanças
321 Marcus D03
128 Kelvin D05

Denotemos a relação Engenheiros como sendo R1 e a relação Departamento como sendo R2.

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


20
UEM: Departamento de Matemática e Informática Base de Dados 1
R1*R2 R1*LEFTR2
E# Nome D# Nome E# Nome D# Nome
123 Abdul D01 Vendas 123 Abdul D01 Vendas
124 John D03 Marketing 124 John D03 Marketing
126 Martin D03 Marketing 126 Martin D03 Marketing
321 Marcus D03 Marketing 321 Marcus D03 Marketing
128 Kelvin D05 NULL

R1*RIGHTR2 R1*FULLR2
E# Nome D# Nome E# Nome D# Nome
123 Abdul D01 Vendas 123 Abdul D01 Vendas
124 John D03 Marketing 124 John D03 Marketing
126 Martin D03 Marketing 126 Martin D03 Marketing
321 Marcus D03 Marketing 321 Marcus D03 Marketing
NUL NULL D04 Finanças 128 Kelvin D05 NULL
L NUL NULL D04 Finanças
L

1.8.10. ASSOCIAÇÃO ou THETA JOIN: Simbolicamente usa-se “θ-JOIN”

R F S ou R *F S

Define uma relação que contém as tuplas que satisfazem o predicado F no produto cartesiano de
R e S. O predicado F é da forma R.a i θ S.bi onde θ representa um operador de comparação (<, ≤,
>, ≥ , = e ≠ ) e não precisa ser definido sobre os atributos que forem comuns às duas relações.
Existe a seguinte equivalência com os operadores básicos:

R F S = σF(RxS)

EQUIJOIN é quando F contém apenas o operador de igualdade.

1.8.11. RENAME: Simbolicamente usa-se “ρ”

Por vezes temos necessidade de combinar dados provenientes de uma mesma tabela, quando isso
acontece este operador ajuda-nos a solucionar o problema. Por exemplo, considerando a relação
R1 do exemplo anterior, podemos querer saber quais os nomes dos Engenheiros que estão no
mesmo departamento que o Engenheiro John. Teríamos a seguinte situação:

Primerio teríamos: R1 x (σnome=’John’(R1)).

Como nos referímos a uma outra instância da relação R1? O operador rename resolve-nos o
problema. O operador ρ toma a relação e entrega-na com um outro nome, permitindo que se
referencie distintas instâncias de uma mesma relação.

Sintaxe: ρx (R)

Exemplo:

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


21
UEM: Departamento de Matemática e Informática Base de Dados 1
Quais são os nomes dos Engenheiros que estão no mesmo departamento que o Engenheiro John?

1º: Fazemos o seguinte:

ENGENHEIRO x (σNome=’John’ (ρENGENHEIRO2(ENGENHEIRO)))

Vamos designar a relação ENGENHEIRO como sendo R1 e a relação ENGENHEIRO2 como


sendo R2. Então teremos:

R1 x (σNome=’John’ (ρ R2 (R1)))

2º Agora podemos fazer o seguinte:

 R1.nome(σR1.D# = R2.D# (R1 x (σNome=’John’ (ρ R2 (R1))))

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


22
UEM: Departamento de Matemática e Informática Base de Dados 1

EXERCÍCIOS RESOLVIDOS E PROPOSTOS:

1.9. EXERCÍCIOS RESOLVIDOS E PROPOSTOS:

Considere as seguintes relações:

ALUNOS DISCIPLINA
Num_Mat Nome Apelido Domicilio Telefone Cod_Dis Nome PesoDisciplina
c
0338 Ana Gomes Rua A, 28 112233 1 Programacao2 4
0254 Rosa Lopez Av. K, 23 113344 2 Base de Dados1 5
0168 Juan Garcia Rua G, 11 114455 3 Ingles 2

NOTAS
Num_Mat Cod_Disc Data Nota
0338 1 Feb 02 8
0254 2 Feb 02 5
0168 2 Feb 02 3
0338 2 Feb 02 5
0338 3 Jun 02 7
0254 1 Jun 02 6
0168 1 Jun 02 9
0168 3 Jun 02 5

1. Obtenha o apelido e o telefone, dos alunos cujo primeiro nome é Rosa.


 Apelido, Telefone (σNome=’Rosa’(ALUNOS)

Apelido Telefone
Lopez 113344

2. Obtenha os resultados verificados na disciplina de Inglês:


 Alunos.nome, Apelido, Nota (σDisciplina.nome=’Ingles’ (ALUNOS*NOTAS*DISCIPLINAS))

Nome Apelido Nota


Ana Gomes 7
Juan Garcia 5

3. Obtenha os alunos que se encontram inscritos em todas as disciplinas:


 Num_Mat, Cod_Disc (NOTAS) -:-  Cod_Disc (DISCIPLINA)

Num_Mat
0388
Ou:
 nome, Apelido (Alunos*( Num_Mat, Cod_Disc(NOTAS))-:-  Cod_Disc (DISCIPLINA)))

Nome Apelido
Ana Gomes

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


23
UEM: Departamento de Matemática e Informática Base de Dados 1
4. Obtenha todos os alunos que se encontram inscritos nas disciplinas de Ingles e Base de
Dados 1:
 Num_Mat (σnome=’Ingles’ (DISCIPLINA)*ALUNOS) ∩  Num_Mat (σnome=’Base de Dados 1’
(DISCIPLINA)*ALUNOS)
Num_Mat
0338
0168

5. Obtenha todos os estudantes que não reprovaram a nenhuma disciplina (nota de admissão
deve ser igual ou superior a 5):
 Num_Mat(σnota>=5(NOTAS)) -  Num_Mat(σnota<5(NOTAS))

Num_Mat
0338
0254

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


24
UEM: Departamento de Matemática e Informática Base de Dados 1

1.10. EXERCÍCIOS PROPOSTOS – 1:

Considere as seguintes relações:


EMPREGADO
Nome Saldo Cod_Dept Data_Ingresso
Torres 1.200.000 A1 01/01/2004
Soto 500.000 A2 01/01/2003
Perez 300.000 A2 01/10/2003
Figueiroa 600.000 A1 01/03/2002
Salas 1.500.000 A1 01/01/2002
Rios 2.000.000 A3 01/06/2002
Campos 800.000 A2 01/11/2003
Venegas 600.000 A1 01/06/2002
Carcamo 500.000 A2 01/04/2003
Gonzalez 2.000.000 A3 01/10/2002

DEPARTAMENTO
Nome Cod_Dept Data_Criacao
Informatic A1 01/03/2002
Marketing A2 01/01/2002
Vendas A3 01/01/2001
Recursos Humanos A4 01/01/2003

1.11. Sobre as relações acima, escreva operações que pertmitam obter (não se escreva de mostrar
o resulta da consulta):

1.11.1. Todos os dados do empregado Soto

1.11.2. Os dados de todos os empregados com saldo igual ou superior a 500000 que ingressaram
depois do ano de 2003.

1.11.3. Os nomes distintos de todos os departamentos

1.11.4. Os distintos saldos dos empregados

1.11.5. Os nomes dos empregados que ganham mais do que 1.000.000

1.11.6. Dados de todos os empregados incluindo: nome, saldo e codigo de departamento.

1.11.7. O Saldo e a data de ingresso do empregado Soto

1.11.8. Nomes do empregados que auferem mais do que 1.500.000 ou que trabalham no
departamento com o código A1

1.11.9. Nomes de todos os empregados e os nomes dos departamentos aos quais pertencem

1.11.10. Nomes de todos os empregados que ingressaram depois de Soto

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


25
UEM: Departamento de Matemática e Informática Base de Dados 1
1.11.11. Nomes dos empregados e dos departamentos a que pertencem em que o saldo do
empregado é superior a 500.000.

1.12. EXERCÍCIOS PROPOSTOS – 2

Considere as seguintes relações:

ALUNOS DISCIPLINA
Num_Mat Nome Apelido Domicilio Telefone Cod_Dis Nome PesoDisciplina
c
0338 Ana Gomes Rua A, 28 112233 1 Programacao2 4
0254 Rosa Lopez Av. K, 23 113344 2 Base de Dados1 5
0168 Juan Garcia Rua G, 11 114455 3 Ingles 2

NOTAS
Num_Mat Cod_Disc Data Nota
0338 1 Feb 02 8
0254 2 Feb 02 5
0168 2 Feb 02 3
0338 2 Feb 02 5
0338 3 Jun 02 7
0254 1 Jun 02 6
0168 1 Jun 02 9
0168 3 Jun 02 5

1.12.1. Obtenha os seguintes resultados (não se esquecer de visualizar a respectiva saída):

1.12.1.1. Os nomes dos alunos, telefone e os PesoDisciplina possíveis caso frequentassem


alguma disciplina

1.12.1.2. O apelido e o telefone, dos alunos cujo primeiro nome é Rosa.

1.12.1.3. Os resultados verificados na disciplina de Base de Dados 1:

1.12.1.4. Os alunos que não se encontram inscritos em todas as disciplinas:

1.12.1.5. Todos os alunos que se encontram inscritos nas disciplinas de Ingles e Base de Dados

1.12.2. Todos os estudantes que não reprovaram a nenhuma disciplina (nota de admissão deve ser
igual ou superior a 5)

1.12.3. Todas as datas de realização dos testes

O Regente: Hélder MC Muianga Curso: Informática, Ano Lectivo: 2017


26