·
Ciência da Computação ·
Linguagens de Programação
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
1
Definição Correta de Tipo Heterogêneo para Jogador de Futebol em C
Linguagens de Programação
UNIANCHIETA
1
Análise das Sublinguagens SQL: DCL e TCL
Linguagens de Programação
UNIANCHIETA
31
Relação entre SQL e Álgebra Relacional
Linguagens de Programação
UNIANCHIETA
75
Tópicos Abordados em TSQL para Banco de Dados I
Linguagens de Programação
UNIANCHIETA
1
Introdução à Linguagem DQL e suas Aplicações
Linguagens de Programação
UNIANCHIETA
1
Comandos e Consultas em SQL: A Importância do DQL
Linguagens de Programação
UNIANCHIETA
36
Funções SQL: Abordagem e Tipos
Linguagens de Programação
UNIANCHIETA
1
Teste de Programacao C - Vetores Heterogeneos e Estruturas Lineares
Linguagens de Programação
UNIANCHIETA
63
Introdução ao PLSQL e Instruções SQL Básicas
Linguagens de Programação
UNIANCHIETA
33
Funções SQL: Tipos e Operações
Linguagens de Programação
UNIANCHIETA
Texto de pré-visualização
Rodrigo Kiyoshi Saito rodrigokanchietabr BANCO DE DADOS Tópicos abordados Introdução à Álgebra Relacional União Intersecção Diferença Projeção e Seleção Produto Cartesiano Junção e Junção Natural Exercícios Referências Bibliográficas INTRODUÇÃO À ÁLGEBRA RELACIONAL RESUMO Como o nome indica a álgebra relacional AR é uma álgebra de expressões envolvendo relações A partir de uma ou mais relações da BD tomadas como operandos outras relações podem ser progressivamente construídas através de operadores especiais sendo resultado da consulta sobre a BD Uma consulta é portanto uma expressão da consulta sobre a BD INTRODUÇÃO À ÁLGEBRA RELACIONAL RESUMO Alguns operadores básicos foram propostos por CODD Se lembrarmos de que relações são conjuntos matemáticos de tuplas esses operadores essencialmente manipulam conjuntos e estão em quatro categorias OPERADORES BÁSICOS Operadores convencionais sobre conjuntos união subtração interseção e produto cartesiano Operadores que removem parte de uma relação um operador que elimina linhas seleção e um operador que elimina colunas ou seja atributos projeção OPERADORES BÁSICOS Operadores que combinam linhas de duas relações de acordo com condições booleanas diversas essas operações selecionam subconjuntos do produto cartesiano das duas relações Um operador especial p Rô permite renomear o esquema de uma relação essencialmente para permitir expressar de forma não ambígua operações envolvendo autorelacionamentos NOTAÇÃO Letras do final do alfabeto para denotar relações R S T etc Letras do inicio do alfabeto para denotar atributos A B C etc Letra grega téta é usada para denotar um dos seis operadores de comparação UNIÃO é uma relação que contém as tuplas que estão em R em S ou em ambas se uma tupla está presente em R e em S ela só aparece uma vez na união Esta operação primitiva também requer como operandos tabelas uniãocompatíveis Produz como resultado uma tabela que contém todas as linhas da primeira tabela seguidas de todas as linhas da segunda tabela A tabela resultante possui a mesma quantidade de colunas que as tabelas originais e tem um número de linhas que é no máximo igual à soma das linhas das tabelas fornecidas como operandos já que as linhas que são comuns a ambas as tabelas aparecem uma única vez no resultado R S UNIÃO INTERSECÇÃO é a relação que contém as tuplas que estão em ambas R e S Esta é uma operação adicional que produz como resultado uma tabela que contém sem repetições todos os elementos que são comuns às duas tabelas fornecidas como operandos As tabelas devem ser união compatíveis R S INTERSECÇÃO INTERSECÇÃO O mesmo efeito pode ser obtido fazendose uma combinação de diferenças entre conjuntos 𝐴 𝐵 A A B ou com uniões e diferenças 𝐴 𝐵 𝐴 𝐵 A B B A ou ainda 𝐴 𝐵 𝐴 𝐵 A B B A DIFERENÇA R S contém as tuplas que estão em R porém não estão em S Observe que R S é diferente de S R É uma operação primitiva que requer como operandos duas tabelas uniãocompatíveis ou seja estruturalmente idênticas O resultado é uma tabela que possui todas as linhas que existem na primeira tabela e não existem na segunda DIFERENÇA EXEMPLO PARA ESSAS OPERAÇÕES PROJEÇÃO Projeção constrói uma nova relação a partir de R contendo apenas os atributos Observe que tuplas duplicadas devem ser eliminadas ao se fazer a projeção Exemplo Ak R Ai Aj 5 3 AS PROJEÇÃO Geralmente indicada na literatura por a letra grega pi produz um conjunto onde há um elemento para cada elemento do conjunto de entrada sendo que a estrutura dos membros do conjunto resultante é definida nos argumentos da operação Pode ser entendida como uma operação que filtra as colunas de uma tabela Por operar sobre apenas um conjunto de entrada a projeção é classificada como uma operação unária PROJEÇÃO Ex NmFunc funcionário Essa expressão produz um conjunto contendo um elemento para cada funcionário e cada elemento contém apenas a informação referente a NmFunc da relação funcionário original PROJEÇÃO PROJEÇÃO Agora estamos interessados em identificar todos os funcionários de sexo masculino existentes no banco de dados É uma situação que não podemos resolver com projeções apenas uma vez que deveremos descartar elementos do conjunto inicial Para casos desse tipo existe uma operação relacional chamada Seleção SELEÇÃO OU RESTRIÇÃO Seleção seja uma expressão booleana C do tipo RA c onde c é uma constante do tipo de A que queremos comparar com o atributo A de uma linha de R Então cR é uma relação que inclui unicamente as linhas de R para as quais C é verdadeiro Exemplo EXEMPLO DE SELEÇÃO letra grega sigma 8 5 6 6 S 5 B SELEÇÃO OU RESTRIÇÃO cR é uma relação que inclui unicamente as linhas de R para as quais C é verdadeiro letra grega sigma 8 5 6 6 S 5 B SELEÇÃO OU RESTRIÇÃO Expressões booleanas mais complexas envolvendo ands ou ors de operandos do tipo RA c podem ser avaliadas através de operações de união e interseção mas para simplificar a notação vamos admitir em C expressões booleanas arbitrariamente complexas SELEÇÃO OU RESTRIÇÃO Se quisermos podemos compor quaisquer operações por exemplo 8 6 B σ B 6S SELEÇÃO OU RESTRIÇÃO Indicada por a letra grega sigma é uma operação que para um conjunto inicial fornecido como argumento produz um subconjunto estruturalmente idêntico mas apenas com os elementos do conjunto original que atendem a uma determinada condição também chamada de predicado A seleção pode ser entendida como uma operação que filtra as linhas de uma tabela e é também uma operação unária já que opera sobre um único conjunto de dados EXEMPLO DE SELEÇÃO OU RESTRIÇÃO Ex Sexo M funcionário Produz o conjunto dos elementos de funcionário que atendem ao predicado Sexo M ou seja representa um subconjunto dos funcionários para o qual essa condição é avaliada como verdadeira EXEMPLO DE SELEÇÃO OU RESTRIÇÃO SELEÇÃO OU RESTRIÇÃO No caso de querermos descobrir o nome completo e a data de admissão de todos os funcionários do sexo feminino existentes na empresa será necessário combinar uma projeção com uma seleção Isso porque se decidirmos projetar as colunas desejadas diretamente a partir da relação funcionário estaremos considerando também os elementos do sexo masculino o que não queremos SELEÇÃO OU RESTRIÇÃO Como a projeção não permite descartar linhas apenas colunas deveremos fornecer a essa operação o subconjunto resultante de uma filtragem seleção da relação de funcionários original como mostram as duas figuras a seguir que representam as relações e as operações de duas maneiras diferentes SELEÇÃO OU RESTRIÇÃO SELEÇÃO OU RESTRIÇÃO EXEMPLO DE SELEÇÃO OU RESTRIÇÃO Assim a expressão que atende nossos objetivos nesse caso é NmFunc DtAdm Sexo F funcionário cabendo observar que devido ao aninhamento das operações está implícito que primeiro será executada a seleção e depois a projeção sendo que nesse exemplo não poderíamos inverter essa ordem SELEÇÃO OU RESTRIÇÃO Você poderia explicar porquê Por esse motivo dizemos que a álgebra relacional é uma linguagem procedural já que requer alguma definição quanto à ordem em que as operações serão realizadas Linguagens em que apenas mencionamos o resultado desejado sem fazer menção alguma à forma como isso deve ser feito são chamadas de linguagens não procedurais SELEÇÃO OU RESTRIÇÃO Suponha agora que precisamos obter o nome completo a data de admissão e o salário de cada funcionário cadastrado Para essa consulta temos um fato novo que é a referência a colunas de mais de uma tabela uma vez que o nome e a data de admissão fazem parte da relação funcionário enquanto que o salário existe apenas em cargos SELEÇÃO OU RESTRIÇÃO Isso é problemático pois as duas operações que conhecemos até o momento são unárias e temos necessidade de combinar os dados de mais de uma relação Para situações como essa existe uma operação chamada Produto Cartesiano Produto Cartesiano Produto Cartesiano R x S é uma relação obtida concatenandose cada linha de R com cada linha de S isto é os atributos do produto cartesiano são os atributos de R seguidos pelos atributos de S se houver coincidência nos nomes de alguns atributos de R e S a forma conveniente de distinguilos deve ser usada como por exemplo RC e SC Se R possui n atributos e K linhas e S possui m atributos e 1 linha então R x S possui n m atributos e k x l linhas Exemplo de Produto Cartesiano 8 5 4 3 6 5 4 3 4 3 4 3 8 5 2 1 6 5 2 1 4 3 2 1 SB SA RB RA R x S Produto Cartesiano A notação geralmente adotada na forma conjunto1 x conjunto2 para representar essa operação binária indica bem a sua natureza o resultado do produto cartesiano de duas tabelas é uma terceira tabela contendo todas as combinações possíveis entre os elementos das tabelas originais Essa tabela resultante possuirá um número de colunas que é igual à soma das quantidades de colunas das duas tabelas iniciais e um número de linhas igual ao produto do número de suas linhas Produto Cartesiano Portanto se fizermos o produto cartesiano de uma tabela A que possua 4 colunas e 10 linhas com uma tabela B onde existem 3 colunas e 7 linhas a tabela resultante terá 43 7 colunas e 107 70 linhas Assim cada linha dessa tabela corresponderá à concatenação de uma linha da primeira tabela com uma linha da segunda Produto Cartesiano O produto cartesiano não é muito usado como um fim em si mesmo ou seja dificilmente estaremos interessados em saber quais são todas as combinações possíveis entre as linhas de duas tabelas pois a utilidade prática desse tipo de conhecimento é muito discutível Produto Cartesiano Entretanto é a única forma primitiva de que dispomos para fundir informações de duas tabelas heterogêneas para posterior processamento Nesse caso tipicamente será necessário executar uma Seleção sobre o resultado do Produto Cartesiano de maneira a descartar as combinações inválidas entre as linhas das tabelas originais Produto Cartesiano Ex NmFunc DtAdm VrSalário funcionárioCdCargo cargoCdCargo funcionário x cargo Observe que primeiro é produzido o produto cartesiano correspondente a todas as combinações possíveis entre funcionários e cargos Produto Cartesiano Essa relação vai conter linhas onde um funcionário estará associado a cargos que não são o seu e devemos então aplicar um filtro uma seleção para gerar um subconjunto apenas com as combinações logicamente válidas aquelas em que a chave estrangeira CdCargo de funcionário tem valor igual á chave primária CdCargo de cargo Produto Cartesiano Como temos nesse subconjunto duas colunas com o mesmo nome CdCargo que veio de funcionário e CdCargo proveniente de cargo sempre que precisarmos mencionar uma delas será necessário especificar exatamente a qual das duas colunas estamos nos referindo senão teremos uma situação ambígua formalmente inaceitável Produto Cartesiano Dizemos nesse caso que é necessário qualificar a coluna e isso é feito escrevendo o nome da relação original antes do nome da coluna separandoos por um ponto ou seja nomeda relaçãonomedacoluna É por esse motivo que escrevemos o predicado da seleção como sendo funcionárioCdCargo cargoCdCargo Finalmente a projeção é realizada a partir desse subconjunto fornecendo os dados inicialmente desejados Produto Cartesiano Produto Cartesiano Produto Cartesiano Produto Cartesiano Produto Cartesiano Caso desejemos obter uma variação ligeiramente diferente dessa consulta acrescentando a restrição de que precisamos dos dados apenas dos funcionários do sexo masculino teríamos a seguinte expressão algébrica Produto Cartesiano onde o símbolo presente no predicado representa o conectivo lógico E Portanto com apenas 3 operações relacionais básicas foi possível extrair do banco de dados de exemplo várias informações importantes representativas de uma grande parcela das consultas que um sistema gerenciador de bancos de dados deve processar Produto Cartesiano As consultas realizadas foram 1 obter o nome completo de todos os funcionários 2 identificar todos os funcionários do sexo masculino 3 obter o nome completo e a data de admissão de todos os funcionários do sexo feminino 4 obter o nome completo a data de admissão e o salário de todos os funcionários 5 descobrir o nome completo a data de admissão e o salário de todos os funcionários do sexo masculino JUNÇÃO Junção nesta operação comparamos duas colunas do mesmo tipo de R e S por exemplo RA SB Se a comparação der verdadeira selecionamos a linha correspondente do produto cartesiano RxS A junção é denotada por R X S RA SB JUNÇÃO A junção de duas relações é portanto um subconjunto do seu produto cartesiano e pode ser expressa pela identidade R X S RA SB R X S RA SB JUNÇÃO Exemplo vamos utilizar outra relação para exemplificar a junção Seja a relação T com esquema TBCD e uma instancia de T abaixo EXEMPLO DE JUNÇÃO Então R X T RB TD Terá o valor 1 2 3 4 3 1 2 3 2 1 D C T B R B A 1 2 3 4 3 8 7 4 4 3 6 2 2 4 3 1 2 3 2 1 8 7 4 2 1 6 2 2 2 1 TD TC TB RB A EXEMPLO DE JUNÇÃO Para isso temos a seguinte explicação Produto cartesiano entre R X T R x T 1 2 3 4 3 8 7 4 4 3 6 2 2 4 3 1 2 3 2 1 8 7 4 2 1 6 2 2 2 1 TD TC TB RB A EXEMPLO DE JUNÇÃO Posteriormente comparamos as linhas de RB que sejam a TD tendo o resultado apresentado É uma operação que produz uma combinação entre as linhas de uma tabela com as linhas correspondentes de outra tabela sendo em princípio correspondente a uma seleção pelos atributos de relacionamento sobre um produto cartesiano dessas tabelas EXEMPLO DE JUNÇÃO A operação de junção foi criada justamente porque esse tipo de combinação de tabelas é de uso muito comum facilitando com isso a escrita de expressões A tabela resultante de uma junção tem todas as colunas da primeira tabela e todas da segunda tabela Isso faz com que os valores dos campos utilizados como critério para a correspondência entre as linhas apareça duplicado já que um vem da primeira tabela e outro da segunda EXEMPLO DE JUNÇÃO Existe uma variação da junção chamada junção natural que fornece o mesmo resultado mas sem essa repetição de valores uma das colunas correspondentes aos atributos de relacionamento é descartada JUNÇÃO NATURAL Junção natural quando é o operador de igualdade o resultado do produto cartesiano terá duas colunas idênticas RA e SB Nesse caso é conveniente projetar fora uma dessas colunas e o resultado final é chamado de junção natural de R com S Se as colunas sobre as quais fizermos a junção tiverem o mesmo nome em R e S então se pode simplificar a notação escrevendo apenas R X S JUNÇÃO NATURAL Para indicar esta operação ficando implícitas as colunas sobre as quais é feita a comparação Exemplo a junção das tabelas R e T acima sobre as colunas RB e TB seria expressa por Obs A comparação é feita sobre o produto cartesiano 8 7 4 3 6 2 2 1 D C B A X T R 1 2 3 4 3 8 7 4 4 3 6 2 2 4 3 1 2 3 2 1 8 7 4 2 1 6 2 2 2 1 TD TC TB RB A RESUMO Exercícios Parte 1 Com base nas tabelas Funcionário Cargo e Depto apresentadas neste material elaborar as expressões da álgebra relacional que obtenham Exercícios Parte 1 Exercícios Parte 1 1 Todos os funcionários do departamento D1 2 O nome e a matrícula de todos os funcionários do departamento D1 3 A matrícula e o nome do respectivo departamento de todos os funcionários Exercícios Parte 1 1 Todos os funcionários do departamento D1 CdDepto D1 Funcionario 2 O nome e a matrícula de todos os funcionários do departamento D1 MnFunc NrMatric CdDepto D1 FUNCIONARIO Exercícios Parte 1 3 A matrícula e o nome do respectivo departamento de todos os funcionários NrMatric NmDepto funcionárioCdDepto deptoCdDepto funcionário x depto NrMatric NmDepto funcionário x depto Exercícios Parte 1 4 O nome dos funcionários que ganham mais de 500 5 O ramal do funcionário ANA SILVEIRA 6 Os nomes de todos os funcionários com cargo de MECANICO 7 Os nomes de todos os funcionários que trabalham no mesmo departamento que JOSE NOGUEIRA 8 Os nomes dos departamentos que possuem tanto funcionários como funcionárias Exercícios Parte 2 Considere as Relações F e D que representam os CEs Funcionários e Dependentes respectivamente com o seguinte esquema simplificado Ffumf nomef e Dnumf nomef par onde numf número do funcionário nomef nome do funcionário nomed nome do dependnete e par parentesco que pode ser um dentre filho filha esposao etc Observe que em D numf é a chave estrangeira que referencia a chave primária numf de F Abaixo é mostrada uma possível instância dessas relações Exercícios Parte 2 Vamos obter agora a junção natural F x D ela vai usar a coluna numf para junção Exercícios Parte 2 Observe que a junção natural apresenta para cada funcionário que possui dependentes os dados do funcionário e dos seus dependentes Como o funcionário 04 não possui dependentes ele não aparece no resultado da junção Vamos agora obter expressões da álgebra relacional que respondem as seguintes consultas Exercícios Parte 2 1 Quais os nomes e parentescos de todos os dependentes 2 Quais os funcionáriosnumero de possuem dependentes filhas 3 Quais funcionários não possuem dependentes 4 De os nomes dos funcionários que possuem algum dependente 5 Dê o nome de cada funcionário que possui uma dependente chamada Alice 6 Quais funcionários possuem mais de um dependente Referência Bibliográfica GUIMARÃES Célio Cardoso FUNDAMENTOS DE BANCOS DE DADOS modelagem projeto e linguagem SQL 1 ed Campinas Universidade de Campinas 2003 MUNARI Antonio Cesar de Barros Operações relacionais e Álgebra Relacional httpwwwpucrscampus2brjianibdOpRe lacionalpdf acessada em 20042009
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
1
Definição Correta de Tipo Heterogêneo para Jogador de Futebol em C
Linguagens de Programação
UNIANCHIETA
1
Análise das Sublinguagens SQL: DCL e TCL
Linguagens de Programação
UNIANCHIETA
31
Relação entre SQL e Álgebra Relacional
Linguagens de Programação
UNIANCHIETA
75
Tópicos Abordados em TSQL para Banco de Dados I
Linguagens de Programação
UNIANCHIETA
1
Introdução à Linguagem DQL e suas Aplicações
Linguagens de Programação
UNIANCHIETA
1
Comandos e Consultas em SQL: A Importância do DQL
Linguagens de Programação
UNIANCHIETA
36
Funções SQL: Abordagem e Tipos
Linguagens de Programação
UNIANCHIETA
1
Teste de Programacao C - Vetores Heterogeneos e Estruturas Lineares
Linguagens de Programação
UNIANCHIETA
63
Introdução ao PLSQL e Instruções SQL Básicas
Linguagens de Programação
UNIANCHIETA
33
Funções SQL: Tipos e Operações
Linguagens de Programação
UNIANCHIETA
Texto de pré-visualização
Rodrigo Kiyoshi Saito rodrigokanchietabr BANCO DE DADOS Tópicos abordados Introdução à Álgebra Relacional União Intersecção Diferença Projeção e Seleção Produto Cartesiano Junção e Junção Natural Exercícios Referências Bibliográficas INTRODUÇÃO À ÁLGEBRA RELACIONAL RESUMO Como o nome indica a álgebra relacional AR é uma álgebra de expressões envolvendo relações A partir de uma ou mais relações da BD tomadas como operandos outras relações podem ser progressivamente construídas através de operadores especiais sendo resultado da consulta sobre a BD Uma consulta é portanto uma expressão da consulta sobre a BD INTRODUÇÃO À ÁLGEBRA RELACIONAL RESUMO Alguns operadores básicos foram propostos por CODD Se lembrarmos de que relações são conjuntos matemáticos de tuplas esses operadores essencialmente manipulam conjuntos e estão em quatro categorias OPERADORES BÁSICOS Operadores convencionais sobre conjuntos união subtração interseção e produto cartesiano Operadores que removem parte de uma relação um operador que elimina linhas seleção e um operador que elimina colunas ou seja atributos projeção OPERADORES BÁSICOS Operadores que combinam linhas de duas relações de acordo com condições booleanas diversas essas operações selecionam subconjuntos do produto cartesiano das duas relações Um operador especial p Rô permite renomear o esquema de uma relação essencialmente para permitir expressar de forma não ambígua operações envolvendo autorelacionamentos NOTAÇÃO Letras do final do alfabeto para denotar relações R S T etc Letras do inicio do alfabeto para denotar atributos A B C etc Letra grega téta é usada para denotar um dos seis operadores de comparação UNIÃO é uma relação que contém as tuplas que estão em R em S ou em ambas se uma tupla está presente em R e em S ela só aparece uma vez na união Esta operação primitiva também requer como operandos tabelas uniãocompatíveis Produz como resultado uma tabela que contém todas as linhas da primeira tabela seguidas de todas as linhas da segunda tabela A tabela resultante possui a mesma quantidade de colunas que as tabelas originais e tem um número de linhas que é no máximo igual à soma das linhas das tabelas fornecidas como operandos já que as linhas que são comuns a ambas as tabelas aparecem uma única vez no resultado R S UNIÃO INTERSECÇÃO é a relação que contém as tuplas que estão em ambas R e S Esta é uma operação adicional que produz como resultado uma tabela que contém sem repetições todos os elementos que são comuns às duas tabelas fornecidas como operandos As tabelas devem ser união compatíveis R S INTERSECÇÃO INTERSECÇÃO O mesmo efeito pode ser obtido fazendose uma combinação de diferenças entre conjuntos 𝐴 𝐵 A A B ou com uniões e diferenças 𝐴 𝐵 𝐴 𝐵 A B B A ou ainda 𝐴 𝐵 𝐴 𝐵 A B B A DIFERENÇA R S contém as tuplas que estão em R porém não estão em S Observe que R S é diferente de S R É uma operação primitiva que requer como operandos duas tabelas uniãocompatíveis ou seja estruturalmente idênticas O resultado é uma tabela que possui todas as linhas que existem na primeira tabela e não existem na segunda DIFERENÇA EXEMPLO PARA ESSAS OPERAÇÕES PROJEÇÃO Projeção constrói uma nova relação a partir de R contendo apenas os atributos Observe que tuplas duplicadas devem ser eliminadas ao se fazer a projeção Exemplo Ak R Ai Aj 5 3 AS PROJEÇÃO Geralmente indicada na literatura por a letra grega pi produz um conjunto onde há um elemento para cada elemento do conjunto de entrada sendo que a estrutura dos membros do conjunto resultante é definida nos argumentos da operação Pode ser entendida como uma operação que filtra as colunas de uma tabela Por operar sobre apenas um conjunto de entrada a projeção é classificada como uma operação unária PROJEÇÃO Ex NmFunc funcionário Essa expressão produz um conjunto contendo um elemento para cada funcionário e cada elemento contém apenas a informação referente a NmFunc da relação funcionário original PROJEÇÃO PROJEÇÃO Agora estamos interessados em identificar todos os funcionários de sexo masculino existentes no banco de dados É uma situação que não podemos resolver com projeções apenas uma vez que deveremos descartar elementos do conjunto inicial Para casos desse tipo existe uma operação relacional chamada Seleção SELEÇÃO OU RESTRIÇÃO Seleção seja uma expressão booleana C do tipo RA c onde c é uma constante do tipo de A que queremos comparar com o atributo A de uma linha de R Então cR é uma relação que inclui unicamente as linhas de R para as quais C é verdadeiro Exemplo EXEMPLO DE SELEÇÃO letra grega sigma 8 5 6 6 S 5 B SELEÇÃO OU RESTRIÇÃO cR é uma relação que inclui unicamente as linhas de R para as quais C é verdadeiro letra grega sigma 8 5 6 6 S 5 B SELEÇÃO OU RESTRIÇÃO Expressões booleanas mais complexas envolvendo ands ou ors de operandos do tipo RA c podem ser avaliadas através de operações de união e interseção mas para simplificar a notação vamos admitir em C expressões booleanas arbitrariamente complexas SELEÇÃO OU RESTRIÇÃO Se quisermos podemos compor quaisquer operações por exemplo 8 6 B σ B 6S SELEÇÃO OU RESTRIÇÃO Indicada por a letra grega sigma é uma operação que para um conjunto inicial fornecido como argumento produz um subconjunto estruturalmente idêntico mas apenas com os elementos do conjunto original que atendem a uma determinada condição também chamada de predicado A seleção pode ser entendida como uma operação que filtra as linhas de uma tabela e é também uma operação unária já que opera sobre um único conjunto de dados EXEMPLO DE SELEÇÃO OU RESTRIÇÃO Ex Sexo M funcionário Produz o conjunto dos elementos de funcionário que atendem ao predicado Sexo M ou seja representa um subconjunto dos funcionários para o qual essa condição é avaliada como verdadeira EXEMPLO DE SELEÇÃO OU RESTRIÇÃO SELEÇÃO OU RESTRIÇÃO No caso de querermos descobrir o nome completo e a data de admissão de todos os funcionários do sexo feminino existentes na empresa será necessário combinar uma projeção com uma seleção Isso porque se decidirmos projetar as colunas desejadas diretamente a partir da relação funcionário estaremos considerando também os elementos do sexo masculino o que não queremos SELEÇÃO OU RESTRIÇÃO Como a projeção não permite descartar linhas apenas colunas deveremos fornecer a essa operação o subconjunto resultante de uma filtragem seleção da relação de funcionários original como mostram as duas figuras a seguir que representam as relações e as operações de duas maneiras diferentes SELEÇÃO OU RESTRIÇÃO SELEÇÃO OU RESTRIÇÃO EXEMPLO DE SELEÇÃO OU RESTRIÇÃO Assim a expressão que atende nossos objetivos nesse caso é NmFunc DtAdm Sexo F funcionário cabendo observar que devido ao aninhamento das operações está implícito que primeiro será executada a seleção e depois a projeção sendo que nesse exemplo não poderíamos inverter essa ordem SELEÇÃO OU RESTRIÇÃO Você poderia explicar porquê Por esse motivo dizemos que a álgebra relacional é uma linguagem procedural já que requer alguma definição quanto à ordem em que as operações serão realizadas Linguagens em que apenas mencionamos o resultado desejado sem fazer menção alguma à forma como isso deve ser feito são chamadas de linguagens não procedurais SELEÇÃO OU RESTRIÇÃO Suponha agora que precisamos obter o nome completo a data de admissão e o salário de cada funcionário cadastrado Para essa consulta temos um fato novo que é a referência a colunas de mais de uma tabela uma vez que o nome e a data de admissão fazem parte da relação funcionário enquanto que o salário existe apenas em cargos SELEÇÃO OU RESTRIÇÃO Isso é problemático pois as duas operações que conhecemos até o momento são unárias e temos necessidade de combinar os dados de mais de uma relação Para situações como essa existe uma operação chamada Produto Cartesiano Produto Cartesiano Produto Cartesiano R x S é uma relação obtida concatenandose cada linha de R com cada linha de S isto é os atributos do produto cartesiano são os atributos de R seguidos pelos atributos de S se houver coincidência nos nomes de alguns atributos de R e S a forma conveniente de distinguilos deve ser usada como por exemplo RC e SC Se R possui n atributos e K linhas e S possui m atributos e 1 linha então R x S possui n m atributos e k x l linhas Exemplo de Produto Cartesiano 8 5 4 3 6 5 4 3 4 3 4 3 8 5 2 1 6 5 2 1 4 3 2 1 SB SA RB RA R x S Produto Cartesiano A notação geralmente adotada na forma conjunto1 x conjunto2 para representar essa operação binária indica bem a sua natureza o resultado do produto cartesiano de duas tabelas é uma terceira tabela contendo todas as combinações possíveis entre os elementos das tabelas originais Essa tabela resultante possuirá um número de colunas que é igual à soma das quantidades de colunas das duas tabelas iniciais e um número de linhas igual ao produto do número de suas linhas Produto Cartesiano Portanto se fizermos o produto cartesiano de uma tabela A que possua 4 colunas e 10 linhas com uma tabela B onde existem 3 colunas e 7 linhas a tabela resultante terá 43 7 colunas e 107 70 linhas Assim cada linha dessa tabela corresponderá à concatenação de uma linha da primeira tabela com uma linha da segunda Produto Cartesiano O produto cartesiano não é muito usado como um fim em si mesmo ou seja dificilmente estaremos interessados em saber quais são todas as combinações possíveis entre as linhas de duas tabelas pois a utilidade prática desse tipo de conhecimento é muito discutível Produto Cartesiano Entretanto é a única forma primitiva de que dispomos para fundir informações de duas tabelas heterogêneas para posterior processamento Nesse caso tipicamente será necessário executar uma Seleção sobre o resultado do Produto Cartesiano de maneira a descartar as combinações inválidas entre as linhas das tabelas originais Produto Cartesiano Ex NmFunc DtAdm VrSalário funcionárioCdCargo cargoCdCargo funcionário x cargo Observe que primeiro é produzido o produto cartesiano correspondente a todas as combinações possíveis entre funcionários e cargos Produto Cartesiano Essa relação vai conter linhas onde um funcionário estará associado a cargos que não são o seu e devemos então aplicar um filtro uma seleção para gerar um subconjunto apenas com as combinações logicamente válidas aquelas em que a chave estrangeira CdCargo de funcionário tem valor igual á chave primária CdCargo de cargo Produto Cartesiano Como temos nesse subconjunto duas colunas com o mesmo nome CdCargo que veio de funcionário e CdCargo proveniente de cargo sempre que precisarmos mencionar uma delas será necessário especificar exatamente a qual das duas colunas estamos nos referindo senão teremos uma situação ambígua formalmente inaceitável Produto Cartesiano Dizemos nesse caso que é necessário qualificar a coluna e isso é feito escrevendo o nome da relação original antes do nome da coluna separandoos por um ponto ou seja nomeda relaçãonomedacoluna É por esse motivo que escrevemos o predicado da seleção como sendo funcionárioCdCargo cargoCdCargo Finalmente a projeção é realizada a partir desse subconjunto fornecendo os dados inicialmente desejados Produto Cartesiano Produto Cartesiano Produto Cartesiano Produto Cartesiano Produto Cartesiano Caso desejemos obter uma variação ligeiramente diferente dessa consulta acrescentando a restrição de que precisamos dos dados apenas dos funcionários do sexo masculino teríamos a seguinte expressão algébrica Produto Cartesiano onde o símbolo presente no predicado representa o conectivo lógico E Portanto com apenas 3 operações relacionais básicas foi possível extrair do banco de dados de exemplo várias informações importantes representativas de uma grande parcela das consultas que um sistema gerenciador de bancos de dados deve processar Produto Cartesiano As consultas realizadas foram 1 obter o nome completo de todos os funcionários 2 identificar todos os funcionários do sexo masculino 3 obter o nome completo e a data de admissão de todos os funcionários do sexo feminino 4 obter o nome completo a data de admissão e o salário de todos os funcionários 5 descobrir o nome completo a data de admissão e o salário de todos os funcionários do sexo masculino JUNÇÃO Junção nesta operação comparamos duas colunas do mesmo tipo de R e S por exemplo RA SB Se a comparação der verdadeira selecionamos a linha correspondente do produto cartesiano RxS A junção é denotada por R X S RA SB JUNÇÃO A junção de duas relações é portanto um subconjunto do seu produto cartesiano e pode ser expressa pela identidade R X S RA SB R X S RA SB JUNÇÃO Exemplo vamos utilizar outra relação para exemplificar a junção Seja a relação T com esquema TBCD e uma instancia de T abaixo EXEMPLO DE JUNÇÃO Então R X T RB TD Terá o valor 1 2 3 4 3 1 2 3 2 1 D C T B R B A 1 2 3 4 3 8 7 4 4 3 6 2 2 4 3 1 2 3 2 1 8 7 4 2 1 6 2 2 2 1 TD TC TB RB A EXEMPLO DE JUNÇÃO Para isso temos a seguinte explicação Produto cartesiano entre R X T R x T 1 2 3 4 3 8 7 4 4 3 6 2 2 4 3 1 2 3 2 1 8 7 4 2 1 6 2 2 2 1 TD TC TB RB A EXEMPLO DE JUNÇÃO Posteriormente comparamos as linhas de RB que sejam a TD tendo o resultado apresentado É uma operação que produz uma combinação entre as linhas de uma tabela com as linhas correspondentes de outra tabela sendo em princípio correspondente a uma seleção pelos atributos de relacionamento sobre um produto cartesiano dessas tabelas EXEMPLO DE JUNÇÃO A operação de junção foi criada justamente porque esse tipo de combinação de tabelas é de uso muito comum facilitando com isso a escrita de expressões A tabela resultante de uma junção tem todas as colunas da primeira tabela e todas da segunda tabela Isso faz com que os valores dos campos utilizados como critério para a correspondência entre as linhas apareça duplicado já que um vem da primeira tabela e outro da segunda EXEMPLO DE JUNÇÃO Existe uma variação da junção chamada junção natural que fornece o mesmo resultado mas sem essa repetição de valores uma das colunas correspondentes aos atributos de relacionamento é descartada JUNÇÃO NATURAL Junção natural quando é o operador de igualdade o resultado do produto cartesiano terá duas colunas idênticas RA e SB Nesse caso é conveniente projetar fora uma dessas colunas e o resultado final é chamado de junção natural de R com S Se as colunas sobre as quais fizermos a junção tiverem o mesmo nome em R e S então se pode simplificar a notação escrevendo apenas R X S JUNÇÃO NATURAL Para indicar esta operação ficando implícitas as colunas sobre as quais é feita a comparação Exemplo a junção das tabelas R e T acima sobre as colunas RB e TB seria expressa por Obs A comparação é feita sobre o produto cartesiano 8 7 4 3 6 2 2 1 D C B A X T R 1 2 3 4 3 8 7 4 4 3 6 2 2 4 3 1 2 3 2 1 8 7 4 2 1 6 2 2 2 1 TD TC TB RB A RESUMO Exercícios Parte 1 Com base nas tabelas Funcionário Cargo e Depto apresentadas neste material elaborar as expressões da álgebra relacional que obtenham Exercícios Parte 1 Exercícios Parte 1 1 Todos os funcionários do departamento D1 2 O nome e a matrícula de todos os funcionários do departamento D1 3 A matrícula e o nome do respectivo departamento de todos os funcionários Exercícios Parte 1 1 Todos os funcionários do departamento D1 CdDepto D1 Funcionario 2 O nome e a matrícula de todos os funcionários do departamento D1 MnFunc NrMatric CdDepto D1 FUNCIONARIO Exercícios Parte 1 3 A matrícula e o nome do respectivo departamento de todos os funcionários NrMatric NmDepto funcionárioCdDepto deptoCdDepto funcionário x depto NrMatric NmDepto funcionário x depto Exercícios Parte 1 4 O nome dos funcionários que ganham mais de 500 5 O ramal do funcionário ANA SILVEIRA 6 Os nomes de todos os funcionários com cargo de MECANICO 7 Os nomes de todos os funcionários que trabalham no mesmo departamento que JOSE NOGUEIRA 8 Os nomes dos departamentos que possuem tanto funcionários como funcionárias Exercícios Parte 2 Considere as Relações F e D que representam os CEs Funcionários e Dependentes respectivamente com o seguinte esquema simplificado Ffumf nomef e Dnumf nomef par onde numf número do funcionário nomef nome do funcionário nomed nome do dependnete e par parentesco que pode ser um dentre filho filha esposao etc Observe que em D numf é a chave estrangeira que referencia a chave primária numf de F Abaixo é mostrada uma possível instância dessas relações Exercícios Parte 2 Vamos obter agora a junção natural F x D ela vai usar a coluna numf para junção Exercícios Parte 2 Observe que a junção natural apresenta para cada funcionário que possui dependentes os dados do funcionário e dos seus dependentes Como o funcionário 04 não possui dependentes ele não aparece no resultado da junção Vamos agora obter expressões da álgebra relacional que respondem as seguintes consultas Exercícios Parte 2 1 Quais os nomes e parentescos de todos os dependentes 2 Quais os funcionáriosnumero de possuem dependentes filhas 3 Quais funcionários não possuem dependentes 4 De os nomes dos funcionários que possuem algum dependente 5 Dê o nome de cada funcionário que possui uma dependente chamada Alice 6 Quais funcionários possuem mais de um dependente Referência Bibliográfica GUIMARÃES Célio Cardoso FUNDAMENTOS DE BANCOS DE DADOS modelagem projeto e linguagem SQL 1 ed Campinas Universidade de Campinas 2003 MUNARI Antonio Cesar de Barros Operações relacionais e Álgebra Relacional httpwwwpucrscampus2brjianibdOpRe lacionalpdf acessada em 20042009