quinta-feira, 17 de junho de 2010

TRABALHO FINAL DE BANCO DE DADOS II




Alunos: José Rodrigo Ferraro
Paulo César Simplício Custódio
Carlos Bernardi Junior
José Sidnei Zuchi Guirro
Lucas Rodrigues Molina
João Paulo Machado Viera
Yuri de Oliveira Braz

BANCO DE DADOS MULTIMÍDIA
Os conceitos do banco de dados multimídia
O banco de dados multimídia apresenta informações em formato de multimídia, se caracterizam pela incorporação de mídia contínua como vídeo, áudio, gráficos, animação, armazena textos e outros tipos de dados dentro de uma aplicação que resultará em uma forma de comunicação.
A primeira forma armazena apenas a localização do objeto multimídia no sistema operacional dentro do campo destinado a imagem, a segunda forma armazena os objetos em forma de uma cadeia binária, a terceira forma utiliza funções externas aos SGBDs para prover o armazenamento, e a quarta forma permite a criação de tipos de objetos e utilização de herança entre os mesmos.
Com a utilização dos SGBDs em aplicações multimídia, eles passaram a ser os principais fatores para o desempenho das mesmas. Um bom desempenho na recuperação dos objetos multimídia influi diretamente no desempenho da aplicação, pois os sistemas gerenciadores de banco de dados podem retardar o retorno dos objetos multimídia para a aplicação, proporcionando assim uma demora geral no sistema.
Em relação às mídias de percepção, essas possuem diversos formatos de dados. Na seqüência, serão abordados os principais formatos:
> Texto: Caracteriza-se por ser a mídia mais utilizada para interação entre sistemas informatizados e os usuários. Essa mídia é representada por uma cadeia de caracteres. Quando utilizada com outros tipos de mídia podem tornar-se descritores das mesmas.
-> Gráfico: Caracteriza-se por representar desenhos, a partir de outros dados e/ou informações. O gráfico é formado por linhas, curvas, círculos, retângulos, entre outros. Também possui atributos que definem cor, textura, entre outras características.
-> Imagem: Corresponde a desenho ou fotografia que está codificada em forma de bitmap (mapa de bits). O mapa de bits é uma matriz de n x m, onde cada célula (pixel) possui um valor para descrever seu conteúdo. As imagens são qualificadas de acordo com sua resolução, que é a quantidade de pixel em uma polegada quadrada (dpi). Quando uma imagem possui resolução de 300 dpi, significa que essa imagem possui 300 pixel em uma polegada quadrada. Com o intuito de diminuir o tamanho físico ocupado pelas imagens gravadas em disco, foram criados métodos de compactação. Esses métodos são cálculos matemáticos que procuram reduzir o número de pixels armazenados, sem alterar suas características.
-> Áudio: É um dado registrado a partir de vibrações do ar em uma cadeia de bits de maneira digitalizada. Os microfones são os responsáveis por captar essas vibrações e transformá-las em sinais elétricos. Esses sinais podem sem enviados, por exemplo, para os computadores, onde são convertidos em uma cadeia de bits, formando assim o áudio digital. O áudio pode ser classificado em estruturado, onde é caracterizado por uma seqüência de dados de áudio juntamente com seus atributos de notas, tom, duração, entre outras características.
-> Animação: São seqüências de imagens e/ou desenhos disponibilizados em um espaço temporal, as quais podem ou não utilizar áudio.
-> Vídeo: Um conjunto de dados fotográficos disponibilizados em um espaço temporal. Os dados fotográficos são chamados de frames, que são imagens estáticas. No movimento de vídeo, frames são exibidos em um espaço de tempo. Dependendo do tipo de vídeo, em um segundo podem ser exibidos 33 frames.
A multimídia alterou a maneira como os problemas e questões são expostos e interpretados. Isso ocorreu, devido à riqueza de informação quando utilizados textos, imagens e animações nas aplicações, tornando-as mais atrativas quando comparada com as que apresentam apenas um tipo de mídia.
Nas consultas baseadas no conteúdo dos objetos, o sistema deverá ser capaz de fazer a distinção entre as características dos objetos. Ao solicitar ao sistema de banco de dados, a(s) imagem(s) de pessoa(s) perto de carro, o mesmo deve ser capaz de distinguir o conteúdo das imagens como é observado na figura 1.





Alguns tipos de dados multimídia como seqüencias de vídeo, animação e áudio possuem requerimentos temporais que têm implicações em seu armazenamento, manipulação e apresentação. Essas características tornam-se mais crítica quando vários tipos de dados, oriundos de diversas fontes, precisam ser apresentados durante um intervalo de tempo. Por outro lado, imagens, gráficos e vídeos possuem restrições espaciais em termos do seu conteúdo. Normalmente, objetos individuais em uma imagem guardam algum relacionamento espacial entre si. Tais relacionamentos irão produzir algumas restrições com relação à pesquisa por algum objeto, em um banco de dados. O grande consumo de espaço para o armazenamento caracteriza o dado multimídia. Outro fator importante a considerar é o tráfego de grandes quantidades de dados multimídia pela rede, por uma grande distância. Assim considera-se as ferramentas de compactação muito importante para o armazenamento e o transporte de dados multimídia.

Arquitetura do Banco de Dados Multimídia
O Banco de Dados Multimídia pode ser organizado de três maneiras, podendo ser conforme os princípios de autonomia, princípios de uniformidade e princípios de organização híbrida. A seguir será apresentados cada um desses princípios:
->O princípio de autonomia: as imagens, os vídeos e os documentos, são organizados dentro de uma mídia - especifica para cada tipo de mídia.
->O princípio de uniformidade: é usado uma única estrutura "A"onde é indexado todos os tipos de mídia (imagem, vídeo, documento, auditivo, etc).
->O princípio de organização híbrida: uma terceira possibilidade é usar o princípio híbrido. De acordo com este princípio, certos tipos de mídia usam os próprios índices, enquanto outros usam índices unificados.
Todas as três representações apresentam vantagens e desvantagens. A arquitetura baseada no princípio de autonomia requer a criação de algoritmos e uma estrutura de dados para cada tipo de mídia individual. Além disso, precisa-se de uma técnica que une estrutura de dados diferente.

Acesso (Consulta e pesquisa)
A particularidade nas pesquisas em ambientes multimídia é que seus resultados podem não estar baseados em total exatidão, mas em graus de similaridade.
Recuperação dos Objetos - Lógica Nebulosa
Essa recuperação é feita com base nas informações armazenadas sobre as mídias, relativas a temas que as compõem (montanha, pessoa, barco, ...) e qualificadores desses temas (alta, bonita, grande, ...). A solução apresentada avalia a semântica envolvida entre temas e qualificadores de forma automatizada sem a intervenção do usuário.
Consulta Nebulosa
O usuário, ao formular uma consulta, pode informar os temas desejados, os qualificadores para cada um dos temas, e as associações entre os temas. Adicionalmente, pode informar a similaridade mínima desejada para cada tema e qualificador. Além disso, se desejar, pode definir qual é a importância de cada tema e qualificador para a consulta, através da definição de um grau de relevância para eles. Se o usuário não estabelecer graus de similaridade, a consulta tem o comportamento de uma busca exata.
Exemplo:
• Recuperar imagens que contenham “morro alto gramado e mar azul com barco branco”.
• O usuário utiliza uma interface que permite informar os seguintes dados:
Tipo de mídia: tipos de objetos desejados, tais como: imagem, vídeo, texto ou todos os tipos;
• Temas desejados: morro (0.9, 0.8), mar (0.8, 1.0) e barco (0.8, 0.8);
• Qualificadores: alto (0.6, 0.8) e gramado (0.6, 1.0) para morro; azul (0.6, 1.0) para mar; e branco (0.8,1.0) para barco;
• Associações: mar com barco.

Modelagem

Em geral, um sistema de banco de dados necessita suportar as seguintes propriedades: persistência, consistência, desacoplamento das aplicações, interface, acesso multi-usuário e possibilidade de recuperação em caso de falha. Para modelar dados multimídia utilizando SGBD’s convencionais, as seguintes técnicas podem ser usadas:
Referências externas:
Banco de dados simplesmente possui referências para arquivos que contém os objetos multimídia. Outros atributos podem conter informações como o título do documento, autor, etc. Nesse tipo de abordagem o SGBD não pode prover consistência, nem mesmo persistência dos dados, uma vez que os arquivos externos estão fora do seu controle.
Armazenamento de dados multimídia não interpretados:
O SGBD armazena os dados multimídia em atributos dos tipos campo longo ou BLOB (binary large object) para suportar multimídia. No entanto esses tipos reduzem a visão de dados multimídia simplesmente a largos dados não interpretados, o que não é adequado para a rica semântica dos dados multimídia. Em particular, operações dependentes de tempo não podem ser modeladas, ficando o SGBD atuando apenas como um armazenador de dados. Nesse caso o SGBD provê apenas a persistência dos dados, “bufferização” do acesso aos dados, suporte a multi-usuário, recuperação e controle de autorização. Os dados armazenados ainda não são interpretados e as funções disponíveis para operá-los são genéricas. Se não forem providos mecanismos de abstração, não é possível o desacoplamento das aplicações multimídia, em relação à semântica dos dados. Cada aplicação tem que implementar a semântica, por si mesma, inclusive determinar as técnicas de apresentação aplicáveis no objeto. Para processamento eficiente de dados contínuos, conceitos particulares de armazenamento e “bufferização” são necessários. Uma implementação baseada em campos longos de propósito geral não suporta tais mecanismos, em geral, em SGBD’s relacionais, o armazenamento e recuperação de documentos multimídia apresentam dificuldades adicionais, devido às estruturas hierárquicas complexas e estruturas seqüenciais, que tipicamente são difíceis de mapear para estruturas relacionais. Isso conduziria para muitas tabelas e expressões de recuperação complexas.
Uso de funções externas:
Para contornar essas limitações, alguns SGBD’s relacionais programaram algumas extensões para permitir a representação de tipos de dados multimídia e extensões da linguagem de consulta, como por exemplo, o STARBURST e o POSTGRESS/Ilustra. Extensibilidade permite funcionalidades externas a serem incorporadas ao sistema. Alguns SGBD’s permitem o uso de funções externas para processar dados armazenados no banco de dados. Isso é devido às limitações da linguagem de manipulação de dados como a SQL. Freqüentemente, é útil reusar algoritmos externos, programas e ferramentas no contexto de apresentações multimídia.
Orientação a Objetos:
Essa abordagem oferece mecanismos para extensão de tipos existentes e a definição de novos tipos (classes) junto com suas operações e oferece o suporte mais flexível, além de permitir a modelagem de relacionamentos complexos entre as entidades. Isso resulta num melhor suporte para modelar objetos multimídia estruturados complexos, a definição de tipos de mídia abstratos e operações sobre unidades de dados de mídia.
Abstração de dados é muito importante para processar os documentos eficientemente, evitando duplicatas. Abstrações mais complexas podem ser usadas para indexar dados e prover um acesso rápido. As abstrações podem ser fornecidas pelo usuário ou pelo sistema, baseado no conteúdo dos dados multimídia. É interessante armazená-las, uma vez que sua computação pode ser bem cara. Deve ser possível prover várias camadas de abstração.
SGBD’s orientados a objeto podem ser usados em aplicações que lidam com gráficos, textos e figuras. Documentos multimídia estáticos com estruturas complexas podem ser modelados sem restrições. Para mídia dependente de tempo e documentos dinâmicos, os problemas de acesso orientado a”stream”, acesso em tempo real e técnicas de armazenamento apropriadas continuam. Capacidades de modelagem temporal também faltam.
Nenhuma das abordagens convencionais é capaz de suportar “constraints” de sincronização ou QOS. Isso conduz a uma deficiência da interface do banco de dados, na medida em que ele não pode suportar as operações providas pelo modelo apropriadamente. A situação torna-se mais séria em caso de acesso multi-usuário.
Embora em muitas situações a semântica de dados multimídia possa ser representada em tipos de dados abstratos, isso pode resultar em baixa eficiência, uma vez que as operações não são diretamente implementadas pelos recursos do SGBD (linguagem de implementação, sistema operacional, etc.), mas em DML (database manegement language), que é interpretada .

Tipos de Dados
Para armazenamento e recuperação de dados multimídia, foram desenvolvidosno banco de dados Oracle os tipos de dados LOB (Large Objects). Segundo a Oracle (2000), os quatro tipos de dados LOBs são BLOB (Binary Large Objects), CLOB (Character Large Object), NCLOB (National Character Large Object) e BFILE (Binary File Object).
No banco de dados SQL Server foram desenvolvidos os tipos de dados Image,
Text e Ntext para armazenamento de tipos de dados multimídia maiores, que aceitam arquivos de até 2 GB de tamanho. Existem ainda outros tipos de dados, como o binary e o varbinary que armazenam pequenos objetos multimídia, como ícones e bitmaps.
No Oracle, uma coluna BLOB pode armazenar objetos binários tais como gráficos, vídeos ou arquivos de áudio. Uma coluna CLOB armazena objetos caracteres simples, de largura fixa, como documentos de texto. Um tipo de coluna NCLOB é como o tipo de coluna CLOB, mas para conjunto de caracteres de múltiplos bytes. Estes três tipos são chamados de LOBs internos, porque ficam armazenados internamente a base de dados. (Oracle 2000).
Existem ainda os chamados LOBs externos, que podem ficar armazenados em um CDROM, PhotoCD, ou diretamente em arquivos de um sistema operacional. Ao definir uma coluna de dados BFILE em tabela do banco de dados Oracle, é armazenado no banco de dados apenas um ponteiro a estes dados externos. Ao planejar a forma de armazenar os objetos, deve-se verificar o tamanho deles, quantas tabelas os acessarão e qual a freqüência de atualização. Primeiro deve-se decidir se os dados serão armazenados na mesma tabela ou em uma tabela separada, e então decidir se as necessidades serão melhor satisfeitas por um LOB interno ou externo. (Oracle 2000).
Segundo Sherer, Gaynor, Valentinsen e Cursetjee (2000:410) um LOB interno tem como os mesmos benefícios proporcionados por um banco de dados a qualquer outro tipo de dado, “... tais como segurança, facilidade de gerenciamento, backup e recuperação e controle de transação”. Por exemplo, se uma linha for removida de uma tabela, o documento Word correspondente é removido com ela, se a coluna for do tipo BLOB; mas o documento não será removido se a coluna for definida como um tipo BFILE.
Aplicações
Entre as diversas aplicações que se beneficiam dos Bancos de Dados
Multimídia, destacamos a TV Digital, que “... vem abrir oportunidades para aplicações de tecnologias oriundas de diversas áreas de pesquisa, notadamente as relacionadas ao armazenamento e recuperação de dados multimídia, em função da disponibilização da interatividade”, os Laudos Periciais ,onde “.. Foi desenvolvido um sistema de informação baseado em um banco de dados multimídia para Consulta a Laudos Periciais. Estes laudos contêm informações textuais, imagens,áudio e vídeo. Foi utilizado um sistema de gerenciamento de banco de dados (SGBD) baseado em modelo objeto-relacional (Oracle8i) da Oracle. Este tipo de SGBD é uma evolução das implementações de banco de dados baseados nos modelos relacional e orientado para objetos, e mostra ser adequado para o armazenamento e gerenciamento de dados multimídia.” e o GIS(SIG) – “um sistema que processa dados gráficos e não gráficos (alfanuméricos) com ênfase a análises espaciais e modelagens de superfícies.”

Exemplos de SGBD que permitem sua implementação.

Oracle 9i
• InterMedia Audio, Video, Image Cartridge
• Oracle Context
IBM DB2
• DB2 Image Extender
• DB2 Video Extender
Informix
• Excalibur Image Datablade Module
• Informix Video Foundation Datablade
• Excalibur Text Datablade

Exemplos de Utilização:

• Aplicações em multimídia podem ser encontradas onde exista a necessidade de gerenciar dados complexos.
• Educação (treinamento local e a distância, bibliotecas digitais)
• Saúde (tele medicina, bancos de dados de imagens médicas)
• Entretenimento (jogos, vídeo sob demanda, TV interativa)
• Negócios (vídeo conferência, comércio eletrônico)




Alguns tipos de dados multimídia como seqüencias de vídeo, animação e áudio possuem requerimentos temporais que têm implicações em seu armazenamento, manipulação e apresentação. Essas características tornam-se mais crítica quando vários tipos de dados, oriundos de diversas fontes, precisam ser apresentados durante um intervalo de tempo. Por outro lado, imagens, gráficos e vídeos possuem restrições espaciais em termos do seu conteúdo. Normalmente, objetos individuais em uma imagem guardam algum relacionamento espacial entre si. Tais relacionamentos irão produzir algumas restrições com relação à pesquisa por algum objeto, em um banco de dados. O grande consumo de espaço para o armazenamento caracteriza o dado multimídia. Outro fator importante a considerar é o tráfego de grandes quantidades de dados multimídia pela rede, por uma grande distância. Assim considera-se as ferramentas de compactação muito importante para o armazenamento e o transporte de dados multimídia.

Arquitetura do Banco de Dados Multimídia
O Banco de Dados Multimídia pode ser organizado de três maneiras, podendo ser conforme os princípios de autonomia, princípios de uniformidade e princípios de organização híbrida. A seguir será apresentados cada um desses princípios:
 O princípio de autonomia: as imagens, os vídeos e os documentos, são organizados dentro de uma mídia - especifica para cada tipo de mídia.
 O princípio de uniformidade: é usado uma única estrutura "A"onde é indexado todos os tipos de mídia (imagem, vídeo, documento, auditivo, etc).
 O princípio de organização híbrida: uma terceira possibilidade é usar o princípio híbrido. De acordo com este princípio, certos tipos de mídia usam os próprios índices, enquanto outros usam índices unificados.
Todas as três representações apresentam vantagens e desvantagens. A arquitetura baseada no princípio de autonomia requer a criação de algoritmos e uma estrutura de dados para cada tipo de mídia individual. Além disso, precisa-se de uma técnica que une estrutura de dados diferente.

Acesso (Consulta e pesquisa)
A particularidade nas pesquisas em ambientes multimídia é que seus resultados podem não estar baseados em total exatidão, mas em graus de similaridade.
Recuperação dos Objetos - Lógica Nebulosa
Essa recuperação é feita com base nas informações armazenadas sobre as mídias, relativas a temas que as compõem (montanha, pessoa, barco, ...) e qualificadores desses temas (alta, bonita, grande, ...). A solução apresentada avalia a semântica envolvida entre temas e qualificadores de forma automatizada sem a intervenção do usuário.
Consulta Nebulosa
O usuário, ao formular uma consulta, pode informar os temas desejados, os qualificadores para cada um dos temas, e as associações entre os temas. Adicionalmente, pode informar a similaridade mínima desejada para cada tema e qualificador. Além disso, se desejar, pode definir qual é a importância de cada tema e qualificador para a consulta, através da definição de um grau de relevância para eles. Se o usuário não estabelecer graus de similaridade, a consulta tem o comportamento de uma busca exata.
Exemplo:
• Recuperar imagens que contenham “morro alto gramado e mar azul com barco branco”.
• O usuário utiliza uma interface que permite informar os seguintes dados:
Tipo de mídia: tipos de objetos desejados, tais como: imagem, vídeo, texto ou todos os tipos;
• Temas desejados: morro (0.9, 0.8), mar (0.8, 1.0) e barco (0.8, 0.8);
• Qualificadores: alto (0.6, 0.8) e gramado (0.6, 1.0) para morro; azul (0.6, 1.0) para mar; e branco (0.8,1.0) para barco;
• Associações: mar com barco.

Modelagem

Em geral, um sistema de banco de dados necessita suportar as seguintes propriedades: persistência, consistência, desacoplamento das aplicações, interface, acesso multi-usuário e possibilidade de recuperação em caso de falha. Para modelar dados multimídia utilizando SGBD’s convencionais, as seguintes técnicas podem ser usadas:
Referências externas:
Banco de dados simplesmente possui referências para arquivos que contém os objetos multimídia. Outros atributos podem conter informações como o título do documento, autor, etc. Nesse tipo de abordagem o SGBD não pode prover consistência, nem mesmo persistência dos dados, uma vez que os arquivos externos estão fora do seu controle.
Armazenamento de dados multimídia não interpretados:
O SGBD armazena os dados multimídia em atributos dos tipos campo longo ou BLOB (binary large object) para suportar multimídia. No entanto esses tipos reduzem a visão de dados multimídia simplesmente a largos dados não interpretados, o que não é adequado para a rica semântica dos dados multimídia. Em particular, operações dependentes de tempo não podem ser modeladas, ficando o SGBD atuando apenas como um armazenador de dados. Nesse caso o SGBD provê apenas a persistência dos dados, “bufferização” do acesso aos dados, suporte a multi-usuário, recuperação e controle de autorização. Os dados armazenados ainda não são interpretados e as funções disponíveis para operá-los são genéricas. Se não forem providos mecanismos de abstração, não é possível o desacoplamento das aplicações multimídia, em relação à semântica dos dados. Cada aplicação tem que implementar a semântica, por si mesma, inclusive determinar as técnicas de apresentação aplicáveis no objeto. Para processamento eficiente de dados contínuos, conceitos particulares de armazenamento e “bufferização” são necessários. Uma implementação baseada em campos longos de propósito geral não suporta tais mecanismos, em geral, em SGBD’s relacionais, o armazenamento e recuperação de documentos multimídia apresentam dificuldades adicionais, devido às estruturas hierárquicas complexas e estruturas seqüenciais, que tipicamente são difíceis de mapear para estruturas relacionais. Isso conduziria para muitas tabelas e expressões de recuperação complexas.
Uso de funções externas:
Para contornar essas limitações, alguns SGBD’s relacionais programaram algumas extensões para permitir a representação de tipos de dados multimídia e extensões da linguagem de consulta, como por exemplo, o STARBURST e o POSTGRESS/Ilustra. Extensibilidade permite funcionalidades externas a serem incorporadas ao sistema. Alguns SGBD’s permitem o uso de funções externas para processar dados armazenados no banco de dados. Isso é devido às limitações da linguagem de manipulação de dados como a SQL. Freqüentemente, é útil reusar algoritmos externos, programas e ferramentas no contexto de apresentações multimídia.
Orientação a Objetos:
Essa abordagem oferece mecanismos para extensão de tipos existentes e a definição de novos tipos (classes) junto com suas operações e oferece o suporte mais flexível, além de permitir a modelagem de relacionamentos complexos entre as entidades. Isso resulta num melhor suporte para modelar objetos multimídia estruturados complexos, a definição de tipos de mídia abstratos e operações sobre unidades de dados de mídia.
Abstração de dados é muito importante para processar os documentos eficientemente, evitando duplicatas. Abstrações mais complexas podem ser usadas para indexar dados e prover um acesso rápido. As abstrações podem ser fornecidas pelo usuário ou pelo sistema, baseado no conteúdo dos dados multimídia. É interessante armazená-las, uma vez que sua computação pode ser bem cara. Deve ser possível prover várias camadas de abstração.
SGBD’s orientados a objeto podem ser usados em aplicações que lidam com gráficos, textos e figuras. Documentos multimídia estáticos com estruturas complexas podem ser modelados sem restrições. Para mídia dependente de tempo e documentos dinâmicos, os problemas de acesso orientado a”stream”, acesso em tempo real e técnicas de armazenamento apropriadas continuam. Capacidades de modelagem temporal também faltam.
Nenhuma das abordagens convencionais é capaz de suportar “constraints” de sincronização ou QOS. Isso conduz a uma deficiência da interface do banco de dados, na medida em que ele não pode suportar as operações providas pelo modelo apropriadamente. A situação torna-se mais séria em caso de acesso multi-usuário.
Embora em muitas situações a semântica de dados multimídia possa ser representada em tipos de dados abstratos, isso pode resultar em baixa eficiência, uma vez que as operações não são diretamente implementadas pelos recursos do SGBD (linguagem de implementação, sistema operacional, etc.), mas em DML (database manegement language), que é interpretada [1].

Tipos de Dados
Para armazenamento e recuperação de dados multimídia, foram desenvolvidosno banco de dados Oracle os tipos de dados LOB (Large Objects). Segundo a Oracle (2000), os quatro tipos de dados LOBs são BLOB (Binary Large Objects), CLOB (Character Large Object), NCLOB (National Character Large Object) e BFILE (Binary File Object).
No banco de dados SQL Server foram desenvolvidos os tipos de dados Image,
Text e Ntext para armazenamento de tipos de dados multimídia maiores, que aceitam arquivos de até 2 GB de tamanho. Existem ainda outros tipos de dados, como o binary e o varbinary que armazenam pequenos objetos multimídia, como ícones e bitmaps.
No Oracle, uma coluna BLOB pode armazenar objetos binários tais como gráficos, vídeos ou arquivos de áudio. Uma coluna CLOB armazena objetos caracteres simples, de largura fixa, como documentos de texto. Um tipo de coluna NCLOB é como o tipo de coluna CLOB, mas para conjunto de caracteres de múltiplos bytes. Estes três tipos são chamados de LOBs internos, porque ficam armazenados internamente a base de dados. (Oracle 2000).
Existem ainda os chamados LOBs externos, que podem ficar armazenados em um CDROM, PhotoCD, ou diretamente em arquivos de um sistema operacional. Ao definir uma coluna de dados BFILE em tabela do banco de dados Oracle, é armazenado no banco de dados apenas um ponteiro a estes dados externos. Ao planejar a forma de armazenar os objetos, deve-se verificar o tamanho deles, quantas tabelas os acessarão e qual a freqüência de atualização. Primeiro deve-se decidir se os dados serão armazenados na mesma tabela ou em uma tabela separada, e então decidir se as necessidades serão melhor satisfeitas por um LOB interno ou externo. (Oracle 2000).
Segundo Sherer, Gaynor, Valentinsen e Cursetjee (2000:410) um LOB interno tem como os mesmos benefícios proporcionados por um banco de dados a qualquer outro tipo de dado, “... tais como segurança, facilidade de gerenciamento, backup e recuperação e controle de transação”. Por exemplo, se uma linha for removida de uma tabela, o documento Word correspondente é removido com ela, se a coluna for do tipo BLOB; mas o documento não será removido se a coluna for definida como um tipo BFILE.
Aplicações
Entre as diversas aplicações que se beneficiam dos Bancos de Dados
Multimídia, destacamos a TV Digital, que “... vem abrir oportunidades para aplicações de tecnologias oriundas de diversas áreas de pesquisa, notadamente as relacionadas ao armazenamento e recuperação de dados multimídia, em função da disponibilização da interatividade”[3], os Laudos Periciais ,onde “.. Foi desenvolvido um sistema de informação baseado em um banco de dados multimídia para Consulta a Laudos Periciais. Estes laudos contêm informações textuais, imagens,áudio e vídeo. Foi utilizado um sistema de gerenciamento de banco de dados (SGBD) baseado em modelo objeto-relacional (Oracle8i) da Oracle. Este tipo de SGBD é uma evolução das implementações de banco de dados baseados nos modelos relacional e orientado para objetos, e mostra ser adequado para o armazenamento e gerenciamento de dados multimídia.”[4] e o GIS(SIG) – “um sistema que processa dados gráficos e não gráficos (alfanuméricos) com ênfase a análises espaciais e modelagens de superfícies.” [6]

Exemplos de SGBD que permitem sua implementação.

Oracle 9i
• InterMedia Audio, Video, Image Cartridge
• Oracle Context
IBM DB2
• DB2 Image Extender
• DB2 Video Extender
Informix
• Excalibur Image Datablade Module
• Informix Video Foundation Datablade
• Excalibur Text Datablade

Exemplos de Utilização:

• Aplicações em multimídia podem ser encontradas onde exista a necessidade de gerenciar dados complexos.
• Educação (treinamento local e a distância, bibliotecas digitais)
• Saúde (tele medicina, bancos de dados de imagens médicas)
• Entretenimento (jogos, vídeo sob demanda, TV interativa)
• Negócios (vídeo conferência, comércio eletrônico)

segunda-feira, 30 de novembro de 2009

Normalização

1-Quais são as diretrizes informais para o projeto de esquema de relações? Explique resumidamente cada uma.

Semântica de Atributos: verifica se o atributo caracteriza (pertence) mesmo aquela entidade.

Informações Redundantes ou Anomalias de Atualização: verifica se os atributos geram redundância e, portanto desperdício de espaço.

Valor Null em Tuplas: uma relação degenerada (“Tabelão”) pode causar valores Null, o que prejudica a interpretação dos dados.

Não Permissão de Tuplas Espúrias: tabelas degeneradas, quando relacionadas podem gerar informações/dados errôneos (Tuplas espúrias).


2-Quais são as métricas de qualidade informal para projeto de esquemas de relações? Explique resumidamente cada uma delas.

São 4 diretrizes:
• Semântica de atributos.
Projete um esquema de relação de tal forma que seja fácil explicar o seu significado semântico.

• Redução de valores redundantes em tuplas.
Minimizam o espaço de armazenamento que as relações ocupam.

• Redução de valores nulos em tuplas.
Se muitos atributos não são aplicados a varias tuplas, ficam com muitos valores nulos, provocando desperdício de espaço.

• Não permissão de tuplas espúrias.
Projete esquemas de relação de tal forma que as junções entre as relações correspondentes possam ser feitas através de condições de igualdade sobre atributos que são chaves primárias ou chaves estrangeiras de forma a garantir a não geração de tuplas espúrias.

3-O que é e para que serve o conceito de dependência funcional? Quais são os tipos de dependência? Explique-os


Dependência funcional: para existir o destino (dependência → chave estrangeira) tem que existir a origem (chave primária). O atributo deve realmente caracterizar a relação.
É uma propriedade da semântica ou do significado dos atributos. Formalmente, uma dependência funcional entre dois conjuntos de atributos, x e y, que são subconjuntos de um esquema de relação R, denotada por x® y é uma restrição que estabelece que para quaisquer tuplas t1 e t2 de uma instância r de R, tal que, se temos t1[x] = t2[x], então também devemos ter que t1[y] = t2[y]. Em outras palavras, os valores do componente y em uma tupla de r dependem de (ou são determinados por) valores do componente x.
Se A determina B então B não é funcionalmente dependente de nenhum subconjunto de A.
Uma dependência funcional é representada por:
A --> B A _ denominado determinante.

4-O que é e para que serve normalização de dados relacionais? Quando será utilizada a normalização na maioria das vezes?


Normalização é o processo pelo qual formamos um bd fora do padrão do M-Rel, num bd normalizado (dentro do padrão M-Rel). Normalmente é usado em bd antigos ou criado por pessoa não técnica.

5-O que são e quantas são as formas formais de relação? Explique-as resumidamente. Para manter eficiência e a simplicidade de processamento em certos casos podemos normalizar as relações até a 3ºFN por quê?

O objetivo da normalização de um banco de dados é evitar os problemas que podem provocar falhas no projeto do banco de dados, bem como eliminar a mistura de assuntos e as correspondentes redundâncias dos dados desnecessárias. O processo de normalização aplica uma série de regras sobre as tabelas (também chamadas de relações) de um banco de dados, para verificar se estão corretamente projetadas.

Primeira Forma Normal (1FN)
A primeira forma normal é agora genericamente considerada como parte da definição formal de uma relação; historicamente foi definida para não permitir atributos multivalorados, compostos e suas combinações.

Segunda Forma Normal (2FN):
Um esquema de relação está na 2FN se: estiver na 1FN e, além disso, todo atributo que não pertença a alguma de suas chaves for totalmente dependente da sua chave primária. Em outras palavras, para que uma relação esteja na 2FN é preciso que esteja na 1FN e que, havendo uma chave primária composta, todos os dados que não são chaves dependem de toda a chave primária (a chave primária completa).

Terceira Forma Normal (3FN):
Um esquema de relação está na 3FN se: estiver na 2FN e, além disso, nenhum atributo que não pertença a alguma das suas chaves for transitivamente dependente da sua chave primária. Em outras palavras, para que uma relação esteja na 3FN é preciso que esteja na 2FN e todo atributo, que não pertença a alguma chave for não dependente de algum outro atributo, que também não pertença a alguma chave.


6-Dê exemplos de normalizações de uma relação.

FUNCIONÁRIOS = {CODFUNC + NOME + CARGO + {PROJETO + DATAINI + DATA FIM}}
Para colocar na 1FN:
FUNCIONÁRIOS = {CODFUNC + NOME + CARGO}
FUNC_PROJ = {CODFUNC + PROJETO + DATAINI + DATA FIM}

Comandos e Conceitos do SQL

1_O que significa a sigla SQL? Qual a finalidade dessa linguagem? Como ela se divide? Quais são os comandos principais de cada divisão? Explique-os resumidamente.

SQL (estructured query language) linguagem de consulta estruturada.
• Desenvolvida na década de 70 pela IBM para bd relacionais com o nome de Sequel.
• Surgiu para padronizar a manipulação dos dados de bd.
• Padronizada pela ANSI e pela ISO em 92,99 e 2003.
• Em 99 incorporou os conceitosde trigger, stored procedure, consultas recursivas e orientação a objetos.

DIVISÃO:
• DDL (data defition linguage) linguagem de definição de dados, responsável pela criação da estrutura do bd

Principais comandos:
• Creat cria
• Drop apaga
• Alter altera
* Objetos (tabelas, views ,procedures e etc)

• DML (data manipulation language) linguagem de manipulação de dados, responsável pela entrada e saída de dados

Principais comandos:
• Insert insere
• Delete deleta
• Update altera
* Dados na tabela

• DCL (data control language) linguagem de controle de dados, responsável pela segurança nos SGBD

Comandos:
• Grant atribuir autoriza
• Revoke retira desautoriza
*permissão a manipulação dos dados.


2_Quais são os tipos de dados que a linguagem SQL padrão (ANSI) suporta? Explique cada um resumidamente.

A SQL estabeleceu-se como linguagem padrão de Banco de Dados Relacional. SQL apresenta uma série de comandos que permitem a definição dos dados, chamada de DDL (Data Definition Language), composta entre outros pelos comandos Create, que é destinado a criação do Banco de Dados, das Tabelas que o compõe, além das relações existentes entre as tabelas. Como exemplo de comandos da classe DDL temos os comandos Create, Alter e Drop. Os comandos da série DML (Data Manipulation Language), destinados a consultas, inserções, exclusões e alterações em um ou mais registros de uma ou mais tabelas de maneira simultânea. Como exemplo de comandos da classe DML temos os comandos Select, Insert, Update e Delete. Uma subclasse de comandos DML, a DCL (Data Control Language), dispõe de comandos de controle como Grant e Revoke.


3_Explique o comando SELECT. Sua sintaxe, características básicas, Cláusula Where, operadores, conectores, subconsultas, funções de agregação, cláusula order by, group by, having e compute by.

SELECT: Instrui o programa principal do banco de dados para retornar a informação como um conjunto de registros.

Sintaxe

SELECT [predicado { * | tabela.* | [tabela.]campo1 [AS alias1] [, [tabela.]campo2 [AS alias2] [, ...]]}
FROM expressãotabela [, ...] [IN bancodedadosexterno]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

A cláusula "where" corresponde ao operador restrição da álgebra relacional. Contém a condição que as tuplas devem obedecer a fim de serem listadas. Ela pode comparar valores em colunas, literais, expressões aritméticas ou funções.


Operadores lógicos

Operador Significado
= --> igual a
> --> maior que
>= --> maior que ou igual a
< --> menor que
<= --> menor que ou igual a





Demais Operadores

Operador Significado
between ... and ... entre dois valores ( inclusive )
in ( .... ) lista de valores
like com um padrao de caracteres
is null é um valor nulo

Operadores Negativos

operador descrição
<> diferente
not nome_coluna = diferente da coluna
not nome_coluna > não maior que
not between não entre dois valores informados
not in não existente numa dada lista de valores
not like diferente do padrao de caracteres informado
is not null não é um valor nulo


Funções Agregadas (ou de Agrupamento)

função retorno
avg(n) média do valor n, ignorando nulos
count(expr) vezes que o número da expr avalia para algo nao nulo
max(expr) maior valor da expr
min(expr) menor valor da expr
sum(n) soma dos valores de n, ignorando nulos

As Sub-Consultas

Uma sub-consulta é um comando "select" que é aninhado dentro de outro "select" e que devolve resultados intermediários.

A cláusula "HAVING" pode ser utilizada para especificar quais grupos deverão ser exibidos, portanto restringindo-os.

GROUP BY é opcional. Valores de resumo são omitidos se não houver qualquer função aggregate SQL na instrução SELECT. Os valores Null nos campos GROUP BY são agrupados e não omitidos. No entanto, os valores Null não são avaliados em qualquer função aggregate SQL. Use a cláusula WHERE para excluir linhas que você não quer agrupadas e use a cláusula HAVING para filtrar os registros após eles terem sido agrupados.

ORDER BY é opcional. Entretanto, se você quiser exibir seus dados na ordem classificada, você deve utilizar ORDER BY. O padrão ordem de classificação é ascendente (A a Z, 0 a 9). Os dois exemplos abaixo classificam os nomes dos funcionários pelo sobrenome.

4_O que é uma visão (view) em SQL? Explique suas propriedades, utilidades e os comandos para a sua manipulação.

Uma visão (view) é uma forma alternativa de olhar os dados contidos em uma ou mais tabelas. Para definir uma visão, usa-se um comando SELECT que faz uma consulta sobre as tabelas. A visão aparece depois como se fosse uma tabela.
Visões têm as seguintes vantagens:
* Uma visão pode restringir quais as colunas da tabela que podem ser acessadas (para leitura ou para modificação)
* Uma consulta SELECT que é usada muito freqüentemente pode ser criada como visão. Com isso, a cada vez que ela é necessária, basta selecionar dados da visão.
* Visões podem conter valores calculados ou valores de resumo, o que simplifica a operação.
Uma visão pode ser usada para exportar dados para outras aplicações.

Criando uma visão com comandos SQL

Para criar uma visão através de SQL, use o comando CREATE VIEW. Esse comando tem a seguinte sintaxe:
CREATE VIEW nome_visão [(coluna [,...n])]
[WITH ENCRYPTION]
AS
declaração_SELECT
[WITH CHECK OPTION]

5_O que são procedimentos armazenados (stored procedure)? Para que servem, o que eles permite fazer e quais comandos podemos utilizar no seu corpo e para criá-los?

Procedimento armazenado ou Stored Procedure é uma coleção de comandos em SQL para dispensamento de Banco de dados. Encapsula tarefas repetitivas, aceita parâmetros de entrada e retorna um valor de status (para indicar aceitação ou falha na execução). O procedimento armazenado pode reduzir o tráfego na rede, melhorar o desempenho, criar mecanismos de segurança, etc.

Stored procedures são criadas através do comando CREATE PROCEDURE que tem a seguinte sintaxe:

CREATE PROCEDURE NomedaProcedure

RETURNS

AS

BEGIN

END
Os parâmetros de entrada permitem à aplicação cliente passar os valores que serão usados para modificar o comportamento da stored procedure. Por exemplo, se o objetivo da stored procedure é calcular o total mensal da folha de pagamento para a um determinado departamento, o número do departamento deverá ser passado para a stored procedure como um parâmetro de entrada. Parâmetros de saída ou de retorno são é o meio pelo qual a
stored procedure retorna informações para a aplicação cliente. Em nosso exemplo, o total da folha de pagamento mensal para o departamento passado deverá ser retornado em um parâmetro de saída. Um parâmetro pode ser de qualquer tipo de dados do Firebird exceto BLOB ou ARRAY.


6_O que são gatilhos (TRIGGERS)? Para que servem, quais as vantagens na sua utilização, como funcionam e como criá-los?

O gatilho define um conjunto de ações a serem executadas quando ocorre um evento de banco de dados em uma determinada tabela. O evento de banco de dados é uma operação de exclusão, inserção ou de atualização. Por exemplo, se for definido um gatilho para exclusão em uma determinada tabela, a ação do gatilho ocorre sempre que se remove uma ou mais linhas da tabela.
Junto com as restrições, os gatilhos podem ajudar a impor regras de integridade com ações como exclusões ou atualizações em cascata. Os gatilhos também podem realizar várias funções como emitir alertas, atualizar outras tabelas, enviar e-mail, e outras ações úteis.
Pode ser definido qualquer número de gatilhos para uma única tabela, inclusive vários gatilhos para a mesma tabela para o mesmo evento.
Pode ser criado gatilho em qualquer esquema, exceto os começados por SYS. O gatilho não precisa residir no mesmo esquema da tabela para a qual é definido.
Se for especificado um nome de gatilho qualificado, o nome do esquema não poderá começar por SYS.
Vantagens
• Redução na manutenção das aplicações cliente.
• Você pode implementar um relatório de modificações para as tabelas.
• Generator's podem ser chamados automaticamente e seus valores atribuídos a campos.
• Notificação automática das aplicações pelo uso de Eventos.
Sintaxe básica

CREATE [OR ALTER] TRIGGER nome FOR nomedatabela
[ACTIVE | INACTIVE]
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
[OR {INSERT | UPDATE | DELETE}
[OR {INSERT | UPDATE | DELETE}]]
[POSITION numero]
AS

Comandos e Conceitos do SQL - Exercícios


Para resolver os exercícios abaixo, será necessário conhecer o programa ERWIN, cujos manuais estão na área de trabalho, conhecer um Sistema (ou) Gerenciador de Banco de Dados (SQL Server, Oracle, Access, Firebird, Interbase e etc). Caso não conheça realize somente a etapa 4.

Traduza ou Realize as consulta dos exercícios feitos em Álgebra Relacional para os comandos SQL, treinando assim a sua utilização.


--> SELEÇÃO

1-Mostre o conteúdo da relação departamento.
R: SELECT * FROM DEPARTAMENTO

2- Mostre os empregados que trabalham no departamento 4.

R: SELECT * FROM EMPREGADO WHERE NDEP = 4

3-Mostre a(s) localização(ões) do departamento de pesquisa (5).

R: SELECT * FROM LOCAIS-DEPTO WHERE DNÚMERO = 5

4-Mostre o(s) projetos(s) do departamento 4.

R: SELECT * FROM PROJETO WHERE DNUM = 4


5- Mostre as informações de relação trabalha_em cujo número do projeto igual a 3.

R: SELECT * FROM TRABALHA_EM WHERE PNRO = 3



--> PROJEÇÃO

1-Mostre o número e o nome dos dependentes

R: SELECT NSSENP, NOMEDEPENDENTE FROM DEPENDENTE

2- Mostre o nome e a localização dos projetos.

R: SELECT PNOME, PLOCALIZAÇÃO FROM PROJETO

3-Mostre o nome e o código do gerente dos departamentos.

R: SELECT DNOME, SNNGER FROM DEPARTAMENTO

4-Mostre o nome e a data de nascimento dos empregados.

R: SELECT PNOME, DATANASC FROM EMPREGADO

5-Mostre o nome e o salário dos empregados.

R: SELECT PNOME, SALARIO FROM EMPREGADO


--> SELEÇÃO + PROJEÇÃO

1-Mostre o código, nome e o salário dos empregados que ganham mais de 2500.

R: SELECT NSS, PNOME, SALARIO FROM EMPREGADO WHERE SALARIO > 2500

2- Mostre o nome e a localização dos projetos do departamento 5.

R: SELECT PNOME, PLOCALIZAÇÃO FROM PROJETO WHERE DNUM = 5

3- Mostre o número do empregado e o número do projeto cujas horas são maiores que 10.
R: SELECT NSSEMP, PNRO FROM TRABALHA_EM WHERE HORAS > 10.0

4-Mostre o nome e o sexo do dependente cujo número do empregado é igual a 123456789.
R: SELECT NOMEDEPENDENTE, SEXO FROM DEPENDENTE WHERE NSSEMP = 123456789

5-Mostre o nome, relação e a data do aniversário dos dependentes cujo número do empregado é igual a 333445555.

R: SELECT NOMEDEPENDENTE, RELAÇÃO, DATANIV FROM DEPENDENTE WHERE NSSEMP = 333445555


--> Junção


1-Mostre o nome e o salário do empregado e o nome e a relação dos seus dependentes.

R: SELECT PNOME, SALARIO FROM EMPREGADO INNER JOIN NOMEDEPENDENTE, RELAÇÃO FROM DEPENDENTE

2-Mostre o nome do departamento e o nome e o salário do empregado que é o seu gerente.

R: SELECT DNOME FROM DEPARTAMENTO INNER JOIN PNOME, SALARIO FROM EMPREGADO WHERE NSS = NSSGER

3-Mostre o nome do departamento e a sua localização.

R: SELECT DNOME FROM DEPARTAMENTO INNER JOIN DLOCALIZAÇÃO FROM LOCAIS_DEPTO

4-Mostre o nome do projeto, sua localização e o departamento ao qual pertence.

R: SELECT PNOME, PLOCALIZAÇÃO FROM PROJETO INNER JOIN DNOME FROM DEPARTAMENTO

5-Mostre o nome do empregado e o nome do projeto nos quais eles trabalharam.

R: SELECT PNOME FROM EMPREGADO INNER JOIN PNOME FROM PROJETO INNER JOIN TRABALHA_EM WHERE NSS = NSSEMP



--> Agregação


1-Mostre a quantidade de empregados do sexo masculino e a quantidade de empregados do sexo feminino.

R: SELECT COUNT SEXO FROM EMPREGADO GROUP BY SEXO


2-Mostre a quantidade de dependentes do sexo masculino e a quantidade de dependentes do sexo feminino do empregado cujo número é 123456789.

R: SELECT COUNT SEXO FROM DEPENDENTE WHERE NSSEMP = 123465789 GROUP BY SEXO

3-Mostre o nome e o salário do empregado e a quantidade de dependentes que possui.

R: SELECT PNOME, SALARIO FROM EMPREGADO INNER JOIN COUNT NOMEDEPENDENTE FROM DEPENDENTE

4-Mostre a despesa total de cada departamento com os salários dos empregados.

R: SELECT SUM SALARIO FROM EMPREGADO INNER JOIN DNUMERO FROM DEPARTAMENT WHERE NDEP =DNUMERO

5-Mostre a soma total das horas empregadas em cada projeto.

R: SELECT SUM HORAS FROM TRABALHA_EM GROUP BY PNRO








quinta-feira, 22 de outubro de 2009

Álgebra Relacional

1) Quantos e Quais são os grupos nos quais a álgebra relacional está dividida? Identifique quais operações pertencem a cada um deles.

As operações da álgebra relacional são normalmente divididas em dois grupos. O primeiro deles inclui um conjunto de operações da teoria de conjuntos. As operações são UNION, INTERSECTION, DIFFERENCE e CARTESIAN PRODUCT. O segundo grupo consiste de operações desenvolvidas especificamente para bases de dados relacionais, tais como: SELECT, PROJECT e JOIN entre outras

2) Explique a Operação SELECT e PROJECT. Quando usar, Para que usar, Como usar, diferenças, etc.


A operação SELECT é usada para selecionar um subconjunto de tuplas de uma relação. Estas tuplas devem satisfazer uma condição de seleção. O operador SELECT é unário; isto é, ele é aplicado somente a uma relação. Assim, o SELECTnão pode ser usado para selecionar tuplas de mais de uma relação. Note-se também que a operação de seleção é aplicada individualmente para cada tupla. Assim, as condições de seleção não podem ser aplicadas a mais que uma tupla. O grau da relação resultante é a mesma que a relação original. O número de tuplas da relação resultante é sempre menor ou igual ao número de tuplas da relação original.

Pensando na relação como uma tabela, então o operador SELECT seleciona algumas linhas da tabela enquanto descarta outras. O operador PROJECT, por outro lado, seleciona certas colunas da tabela e descarta outras. Se existir o interesse sobre certos atributos da relação, pode-se usar o PROJECT para “projetar” a relação sobre esses atributos. Por exemplo, suponha a necessidade de listar, para cada empregado, os atributos PNOME, SNOME e SALÁRIO; então pode-se usar o PROJECT como segue:

SNOME, PNOME, SALÁRIO (EMPREGADO).


3) Explique a Operação UNION, INTERSECTION e DIFFERENCE. Quando usar, Para que usar, Como usar, etc


União (UNION): R U S

É outra relação Z que Inclui todas as tuplas da relação R e em S, ou em ambas, mas elimina as tuplas repetidas. Utilizar a operação união gera muitas vantagens e economiza muitas linhas de programação, essa operação permite reunir várias consultas num só resultado.

Intersecção (INTERSECTION): R S

É outra relação Z que inclui todas as tuplas que estão em ambas às relações R e S. É importante salientar que a diferença entre a primeira e segunda relação não é o mesmo do inverso, ou seja, da segunda pela primeira. Com isso podemos dizer que a operação de diferença não é comutativa.

Diferença (DIFFERENCE): R - S

É outra relação Z que inclui todas as tuplas de R, mas não em S

Note que as operações UNION e INTERSECTION são operações comutativas:

R U S = S U R, e R S = S R.

Estas operações podem ser aplicadas a qualquer número de relações, e ambas são associativas:

R U (S U T) = (R U S) U T, e

R (S ∩ T) = (R ∩ S) ∩ T.


A operação DIFFERENCE não é comutativa:

R - S S - R.


4) Explique a Operação CARTESIAN PRODUCT. Quando usar, Para que usar, Como usar, etc.


A operação CARTESIAN PRODUCT, denotada por x, é também uma operação de conjunto binária, mas as relações sobre as quais são aplicadas não necessitam ser união compatível.

Esta operação é usada para combinar tuplas de duas relações tal que tuplas relacionadas possam ser identificadas.

Em geral, o resultado de R(A1, A2, ..., An) x S(B1, B2, ..., Bm) é a relação Q com n + m atributos Q(A1, A2, ..., An, B1, B2, ..., Bm) nesta ordem. A relação resultante Q tem uma tupla para cada combinação de tuplas. Assim, se R tem nR tuplas e S tem nS tuplas, então RxS terá nR*nS tuplas. Para ilustrar, considere que se deseja recuperar para cada empregado do sexo feminino uma lista de nomes de seus dependentes.

5) Explique as Operações de junção (JOIN) e divisão (DIVISION). Quando usar, Para que usar, Como usar, etc


Operação de Junção (JOIN)

A operação de junção é utilizada para combinar tuplas de duas relações partindo dos atributos comuns a ambas. O resultado conterá as colunas das duas relações que estão participando da junção. Esta operação é de extrema importância em bancos de dados relacionais, pois é através dela que nos é permitido fazer relacionamento.
Representação gráfica:
Simbologia: |x|
Sintaxe: (Relação 1) |x| (Relação 2)
Obs.: Uma condição de junção pode ser formada por mais de uma condição simples, apenas aplicando os operadores relacionais AND ou OR.

Exemplo utilizando as seguintes relações:

ALUNOS

nome

sobrenome

turma

Cecília

Ortiz Rezende

2TI

João

da Silva

1TI

Laura

Nogueira

2TI

Elaine

Cristina

2TI

TURMAS

cod_turma

descricao

1TI

1º Módulo - Informática

2TI

2º Módulo - Informática

1TA

1º Módulo - Administração

2TA

2º Módulo - Administração

ALU_TUR <----- ALUNOS |x| TURMA=cod_turma TURMAS, resulta em:

nome

sobrenome

turma

cod_turma

descricao

Cecília

Ortiz Rezende

2TI

2TI

2º Módulo - Informática

João

da Silva

1TI

1TI

1º Módulo - Informática

Laura

Nogueira

2TI

2TI

2º Módulo - Informática

Elaine

Cristina

2TI

2TI

2º Módulo - Informática

E finalmente, podemos usar um conjunto de operações para trazer, por exemplo, apenas os alunos que cursam o 1 º módulo de Informática:

RESULT <----- cod_turma >=1TI ( NOME, SOBRENOME, DESCRICAO (ALUNOS |x| TURMA=COD_TURMA TURMAS)), que resulta em:

nome

sobrenome

descricao

Cecilia

Ortiz Rezende

2º Módulo - Informática

Laura

Nogueira

2º Módulo - Informática

Elaine

Cristina

2º Módulo - Informática

Existe mais de uma operação (JOIN).

INNER JOIN

NNER JOIN (junção interna) é uma operação JOIN que permite especificar uma cláusula de junção explícita. Permite juntar informações de duas tabelas.

Sintaxe

ExpressãoTabela [ INNER ] JOIN ExpressãoTabela { ON ExpressãoBooleana }

LEFT OUTER JOIN

LEFT OUTER JOIN é uma operação JOIN permite especificar a cláusula de junção. Preserva as linhas sem correspondência da primeira tabela (esquerda), juntando-as com uma linha nula na forma da segunda tabela (direita).

Sintaxe

ExpressãoTabela LEFT [ OUTER ] JOIN ExpressãoTabela
{
    ON ExpressãoBooleana
    }

RIGHT OUTER JOIN

RIGHT OUTER JOIN é uma operação JOINque permite especificar a cláusula de junção. Preserva as linhas sem correspondência da segunda tabela (direita), juntando-as com uma linha nula na forma da primeira tabela (esquerda). (A LEFT OUTER JOIN B) é equivalente a (B RIGHT OUTER JOIN A), com as colunas em uma ordem diferente.

Sintaxe

ExpressãoTabela RIGHT [ OUTER ] JOIN ExpressãoTabela
{
    ON ExpressãoBooleana
    }

Operação de Divisão (DIVISION)

É uma operação adicional que produz como resultado a projeção de todos os elementos da primeira relação que se relacionam com todos os elementos da segunda relação. Não é um operador primitivo, mas pode ter o resultado obtido por uma combinação de operadores primitivos.
Representação gráfica:
Símbologia: ÷
Sintaxe: (Relação 1) ÷ (Relação 2)

Exemplo utilizando as seguintes relações:

EQUIPE

id_emp

cod_proj

17206-2

001

12584-7

002

16764-6

001

17206-2

002

15698-3

003

17206-2

003

PROJETOS

cod_proj

descricao

001

Sistema IRPF

002

Sistema RH

003

Sistema Banco

FUNCIONARIO

id_emp

nome

cargo

17206-2

Jorge

Analista

12584-7

Paula

Programadora

16764-6

Frederico

DBA

15698-3

Heloisa

Web Master

Imaginemos a situação em queremos saber quais os funcionários que trabalham em todos os projetos:

RESULT <----- ( COD_PROJ (PROJETOS)) ÷ ( ID_EMP, COD_PROJ (EQUIPE)), que resulta em:

id_emp

17206-2



6-)Explique as Operações de AGREGAÇÃO. Quando usar, Para que usar, Como usar, etc.


Agregação: As funções de agregação operam em conjunto de linhas, de modo que fornecem
um resultado por grupo (tabela ou parte da tabela).
O operador de agrupamento reune as tuplas em grupos sobre os quais podem ser aplicadas funções agregadas.
As funções de agregação mais comuns são SOMA (SUM), MÉDIA(AVG), MÁXIMO(MAX), MÍNIMO(MIN) e CONTAR(COUNT).


Exemplos:
Considerando a relação: R1 (C1, C2,C3), o agrupamento pode ser aplicado da seguinte maneira:

C1 ? C1, SUM(C2) (R1)

Expressão a ser resolvida conforme os passos a seguir:
As tuplas da relação R1 são particionadas em grupos, conforme o valor de C1. Ou seja, as tuplas que possuírem o mesmo valor em C1 serão reunidas em um grupo. Caso não exista coluna informada na lista de colunas agrupadoras, apenas um grupo com todas as tuplas da relação é formado.
Para cada grupo, uma nova tupla é produzida. Caso nenhuma coluna projetada ou função tenha sido informada, a tupla será composta apenas pelos valores resultantes do agrupamento. Caso contrário, a nova tupla será composta por:
As colunas projetadas.
A aplicação das funções agrupadoras ao grupo. No exemplo, para cada grupo, a coluna C2 será somada, produzindo o valor da nova tupla.

Outros exemplos:

C3 ? (R1)
Produz uma nova relação agrupando os valores da coluna C3.

? MAX(C3) (R1)
Produz uma nova relação com apenas uma tupla, contendo o maior valor da coluna C3.

C1 ? C1, SUM(C3)->SOMA (R1)
Produz uma nova relação a partir do agrupamento das tuplas a partir da coluna C1, contento a coluna C1 e o resultado da soma da coluna C3 renomeado para SOMA.