Tecnologias e Linguagens Para Banco de Dados

148
Tecnologias e Linguagens para Banco De Dados

description

Apostila básica de Banco de Dados

Transcript of Tecnologias e Linguagens Para Banco de Dados

  • Tecnologias e Linguagens para Banco De Dados

  • 1 - Viso Geral do Gerenciamento de Banco de DadosUm sistema de banco de dados basicamente um sistema computadorizado de manuteno de registros um sistema computadorizado cuja finalidade geral armazenar informaes e permitir que os usurios busquem e atualizem essas informaes quando as solicitar. As informaes em questo podem ser qualquer coisa que tenha algum significado ao indivduo ou a organizao a que o sistema deve servir, ou seja, qualquer coisa que seja necessria para auxiliar as atividades desse indivduo ou dessa organizao.Observe que existe uma diferena entre os termos dados e informaes. Dado se refere ao que realmente armazenado no banco de dados e informao se refere ao significado desses dados para determinado usurio.

  • 1.1 Sistemas de Banco de DadosUm sistema de banco de dados envolve quatro componentes principais: dados, hardware, software e usurios.

  • 1.1 Sistemas de Banco de DadosDadosOs dados de um banco de dados esto normalmente integrados e tambm compartilhados, esses dois aspectos representam uma vantagem importante dos sistemas de banco de dados.Monousurio - um sistema em que no mximo um usurio pode acessar o banco de dados em determinado momentoMultiusurio - aquele em que muitos usurios podem acessar o banco de dados ao mesmo tempo. Um dos objetivos dos sistemas multiusurios que cada usurio se comporte como se estivesse trabalhando com um sistema monousurio. Os problemas especiais dos sistemas multiusurios so, principalmente, problemas internos ao sistema, e no aqueles visveis ao usurio.

  • 1.1 Sistemas de Banco de DadosDadosIntegrado - quer dizer que o banco de dados pode ser considerado como a unificao de vrios arquivos, com a eliminao de qualquer redundncia parcial ou total entre esses arquivos. Por exemplo, determinado banco de dados poderia conter um arquivo FUNCIONARIO, oferecendo nomes, endereos, departamentos, salrios e outros itens sobre os funcionrios, e um arquivo MATRICULA, representando o recrutamento dos funcionrios em cursos de treinamento. Agora suponha que para executar o processo de administrao do curso de treinamento, seja necessrio saber o departamento de cada aluno matriculado. Ento, devido a integrao dos dados, no necessrio incluir essa informao de forma redundante no arquivo MATRICULA, pois ela sempre poder ser obtida do arquivo FUNCIONARIO.

  • 1.1 Sistemas de Banco de DadosDadosCompartilhado - diferentes usurios podem ter acesso aos mesmos dados, possivelmente ao mesmo tempo (acesso concorrente). Tal compartilhamento concorrente ou no, em parte uma conseqncia do fato de que o banco de dados integrado. No exemplo anterior, a informao do departamento no arquivo FUNCIONARIO geralmente seria compartilhada pelos usurios no departamento pessoal e pelos usurios no departamento de treinamento.Outra conseqncia do banco de dados ser integrado e compartilhado, que, determinado banco de dados ser percebido por diferentes usurios de diferentes maneiras.

  • 1.1 Sistemas de Banco de DadosHardwareOs componentes de hardware do sistema consistem em:Volumes de armazenamento secundrio, normalmente discos magnticos, que so usados para manter os dados armazenados, juntamente com os dispositivos de E/S associados, controladores de dispositivos e assim por diante.Processadores de hardware e memria principal associada, que so usados para dar suporte execuo do software do sistema de banco de dados.

  • 1.1 Sistemas de Banco de DadosSoftwareEntre o banco de dados fsico, ou seja os dados fisicamente armazenados, e os usurios do sistema existe uma camada de software conhecida como:Gerenciador de Banco de Dados ou;Servidor de Banco de Dados;ou mais freqentemente como Sistema de Gerenciamento de Banco de Dados (SGBD).Todas as requisies de acesso ao banco de dados so tratadas pelo SGBD. Uma funo geral fornecida pelo SGBD , portanto, a de isolar os usurios do banco de dados dos detalhes no nvel de hardware. Em outras palavras, o SGBD oferece aos usurios uma viso de banco de dados elevada acima do nvel de hardware, e ele admite operaes do usurio que so expressas em termos dessa viso de nvel mais elevado.

  • 1.1 Sistemas de Banco de DadosUsuriosQuatro classes gerais de usurios so:Programadores de aplicaes responsveis pela escrita de programas de aplicaes de banco de dados em alguma linguagem de programao. Esses programas acessam o banco de dados emitindo a requisio apropriada (normalmente, uma instruo SQL) ao SGBD.Usurios finais acessam o banco de dados interativamente, por exemplo por meio de uma aplicao.O grupo de administrao de dados (AD) responsvel pelo gerenciamento e controle das informaes essenciais da empresa. Administrador de Banco de Dados (DBA) - O DBA responsvel por autorizar acesso base de dados e coordenar e monitorar seu uso. O DBA responsvel por problemas, tais como, quebra de segurana ou baixo desempenho. Assim eles formam a equipe responsvel pela implementao das decises do AD.

  • Base de Dados x Processamento Tradicional de Arquivos

    Processamento Tradicional de ArquivosBase de DadosVantagens da base de DadosDefinio dos dados parte do cdigo de programas de aplicaoMeta Dadoseliminao de redundnciasDependncia entre aplicao especfica e dadosCapaz de permitir diversas aplicaeseliminao de redundnciasIndependncia entre dados e programasfacilidade de manutenoRepresentao de dados ao nvel fsicoRepresentao conceitual atravs de dados e programasfacilidade de manutenoCada viso implementada por mdulos especficosPermite mltiplas visesfacilidade de consultas

  • 1.2 Banco de Dados comum referir-se aos dados de um banco de dados como persistente, com isso queremos sugerir que os dados desse banco de dados diferem em espcie de outros dados mais efmeros, como dados de entrada, dados de sada, filas de trabalho, instrues SQL, resultados intermedirios e, de modo geral, qualquer dado que tenha natureza transitria. Dizemos que os dados do banco de dados persistem porque, uma vez aceitos pelo SGBD para entrada no banco de dados, eles s podem ser removidos do banco de dados mais tarde por alguma requisio explicita ao SGBD. Assim, um banco de dados uma coleo de dados persistentes, usadas pelos sistemas de aplicao de uma determinada empresa.

  • 1.2 Banco de DadosEntidades e RelacionamentosVamos considerar agora o exemplo de uma fbrica FazTudo.LTDA, onde a empresa desejar registrar informaes sobre os projetos em andamento;As peas usadas nesses projetos; os fornecedores que esto contratados para fornecer essas peas, os empregados que trabalham nesses projetos, e assim por diante. Assim, projetos, peas, fornecedores constituem as entidades bsicas sobre as quais a FazTudo precisa registrar informaes. Alm das entidades bsicas propriamente ditas, haver tambm relacionamentos interligando essas entidades bsicas.

  • 1.2 Banco de DadosEntidades e Relacionamentos

  • 1.2 Banco de DadosEntidades e RelacionamentosObserve que esses relacionamentos so todos bidirecionais, ou seja, eles podem ser percorridos em qualquer sentido. Por exemplo, dado um fornecedor, obter as peas fornecidas por esse fornecedor, ou, dado uma pea obter os fornecedores que fornecem essa pea.O ponto significativo a respeito desse relacionamento que eles fazem parte dos dados tanto quanto as entidades bsicas. Portanto eles devem ser representados no banco de dados assim como as entidades bsicas.Podemos observar que um relacionamento pode ser considerado uma entidade em si, se tornarmos como nossa definio de entidade qualquer objeto sobre o qual queremos registrar informaes, ento um relacionamento certamente se encaixar na definio.

  • 1.2 Banco de DadosVantagens da abordagem de Banco de DadosOs dados podem ser compartilhados;A redundncia pode ser reduzida;A inconsistncia pode ser evitada;O suporte a transaes pode ser fornecido;A integridade pode ser mantida;A segurana pode ser reforada;Os padres podem ser impostos.

  • 1.3 Modelos de DadosModelo HierrquicoO modelo hierrquico foi o primeiro a ser reconhecido como um modelo de dados. Seu desenvolvimento somente foi possvel devido consolidao dos discos de armazenamento endereveis, pois esses discos possibilitaram a explorao de sua estrutura de endereamento fsico para viabilizar a representao hierrquica das informaes. Nesse modelo de dados, os dados so estruturados em hierarquias ou rvores. Os ns das hierarquias contm ocorrncias de registros, onde cada registro uma coleo de campos (atributos), cada um contendo apenas uma informao. O registro da hierarquia que precede a outros o registro-pai, os outros so chamados de registros-filhos.Uma ligao uma associao entre dois registros.

  • 1.3 Modelos de DadosModelo HierrquicoOs dados organizados segundo este modelo podem ser acessados segundo uma seqncia hierrquica com uma navegao do topo para as folhas e da esquerda para a direita. Um registro pode estar associado a vrios registros diferentes, desde que seja replicado. A replicao possui duas grandes desvantagens: pode causar inconsistncia de dados quando houver atualizao e o desperdcio de espao inevitvel.O sistema comercial mais divulgado no modelo hierrquico foi o Information Management System da IBM Corp(IMS). Grande parte das restries e consistncias de dados estava contida dentro dos programas escritos para as aplicaes. Era necessrio escrever programas na ordem para acessar o banco de dados.

  • 1.3 Modelos de DadosModelo Hierrquico

  • 1.3 Modelos de DadosModelo em RedeO modelo em redes surgiu como uma extenso ao modelo hierrquico, eliminando o conceito de hierarquia e permitindo que um mesmo registro estivesse envolvido em vrias associaes.O gerenciador Data Base Task Group (DBTG) da CODASYL (Committee on Data Systems and Languages) estabeleceu uma norma para este modelo de banco de dados, com linguagem prpria para definio e manipulao de dados.Ao contrrio do Modelo Hierrquico, em que qualquer acesso aos dados passa pela raiz, o modelo em rede possibilita acesso a qualquer n da rede sem passar pela raiz. No Modelo em Rede o sistema comercial mais divulgado o CAIDMS da Computer Associates.

  • 1.3 Modelos de DadosModelo em Rede

  • 1.3 Modelos de DadosModelo RelacionalO modelo relacional apareceu devido s seguintes necessidades: aumentar a independncia de dados nos sistemas gerenciadores de banco de dados; prover um conjunto de funes apoiadas em lgebra relacional para armazenamento e recuperao de dados; O Modelo relacional revelou-se ser o mais flexvel e adequado ao solucionar os vrios problemas que se colocam no nvel da concepo e implementao da base de dados. A estrutura fundamental do modelo relacional a relao (tabela). Uma relao constituda por um ou mais atributos (campos) que traduzem o tipo de dados a armazenar. Cada instncia do esquema (linha) chamada de tupla (registro).

  • 1.3 Modelos de DadosModelo RelacionalO modelo relacional no tem caminhos pr-definidos para se fazer acesso aos dados como nos modelos que o precederam. O modelo relacional implementa estruturas de dados organizadas em relaes. Porm, para trabalhar com essas tabelas, algumas restries precisaram ser impostas para evitar aspectos indesejveis, como: Repetio de informao;Incapacidade de representar parte da informao;e perda de informao. Essas restries so: integridade referencial, chaves e integridade de junes de relaes.

  • 1.3 Modelos de DadosModelo Relacional

  • 1.3 Modelos de DadosModelo Orientado a ObjetosOs bancos de dados orientados a objeto comearam a se tornar comercialmente viveis em meados de 1980. A motivao para seu surgimento est em funo dos limites de armazenamento e representao semntica impostas no modelo relacional. Alguns exemplos so os sistemas de informaes geogrficas (SIG), os sistemas CAD e CAM, que so mais facilmente construdos usando tipos complexos de dados. A habilidade para criar os tipos de dados necessrios uma caracterstica das linguagens de programao orientadas a objetos.Contudo, estes sistemas necessitam guardar representaes das estruturas de dados que utilizam no armazenamento permanente. A estrutura padro para os bancos de dados orientados a objetos foi feita pelo Object Database Management Group (ODMG).

  • 1.3 Modelos de DadosModelo Orientado a ObjetosQuando os bancos de dados orientados a objetos foram introduzidos, algumas das falhas perceptveis do modelo relacional pareceram ter sido solucionadas com esta tecnologia e acreditava-se que tais bancos de dados ganhariam grande parcela do mercado. Hoje, porm, acredita-se que os Bancos de Dados Orientados a Objetos sero usados em aplicaes especializadas, enquanto os sistemas relacionais continuaro a sustentar os negcios tradicionais, onde as estruturas de dados baseadas em relaes so suficientes. O diagrama de classes UML serve geralmente como o esquema para o modelo de dados orientado a objetos.

  • 1.3 Modelos de DadosModelo Orientado a Objetos

  • 2. Arquitetura de Sistemas de Banco de DadosA arquitetura mais difundida na literatura a Arquitetura Three-Schema (tambm conhecida como arquitetura ANSI/SPARC), proposta por Tsichritzis & Klug em 1978. A meta desta arquitetura separar as aplicaes de usurios da base de dados fsica. Nesta arquitetura, esquemas podem ser definidos em trs nveis:O nvel interno tem um esquema interno que descreve a estrutura de armazenamento fsico da base de dados. O esquema interno usa um modelo de dados fsico e descreve todos os detalhes de armazenamento de dados e caminhos de acesso base de dados;O nvel conceitual tem um esquema conceitual que descreve a estrutura de toda a base de dados. O esquema conceitual uma descrio global da base de dados, que omite detalhes da estrutura de armazenamento fsico e se concentra na descrio de entidades, tipos de dados, relacionamentos e restries.

  • 2. Arquitetura de Sistemas de Banco de DadosA arquitetura mais difundida na literatura a Arquitetura Three-Schema (tambm conhecida como arquitetura ANSI/SPARC), proposta por Tsichritzis & Klug em 1978. A meta desta arquitetura separar as aplicaes de usurios da base de dados fsica. Nesta arquitetura, esquemas podem ser definidos em trs nveis:O nvel externo ou viso possui esquemas externos ou vises de usurios. Cada esquema externo descreve a viso da base de dados de um grupo de usurios da base de dados. Cada viso descreve, tipicamente, a parte da base de dados que um particular grupo de usurios est interessado e esconde deste o restante da base de dados.

  • 2. Arquitetura de Sistemas de Banco de Dados

  • 2.1 Linguagens de Base de DadosDML - Linguagem de Manipulao de Dados - (Data Manipulation Language - Linguagem de Manipulao de Dados). A DML um subconjunto da linguagem usada para selecionar, inserir, atualizar e apagar dados.SELECT o mais usado do DML, comanda e permite ao usurio especificar uma query como uma descrio do resultado desejado. A questo no especifica como os resultados deveriam ser localizados. INSERT usada para somar uma fila (formalmente uma tupla) a uma tabela existente. UPDATE para mudar os valores de dados em uma fila de tabela existente. DELETE permite remover filas existentes de uma tabela.

  • 2.1 Linguagens de Base de DadosDDL - Linguagem de Definio de Dados - (Data Definition Language - Linguagem de Definio de Dados). Uma DDL permite ao usurio definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem extenses proprietrias no DDL. Os comandos bsicos da DDL so:CREATE cria um objeto (uma Tabela, por exemplo) dentro da base de dados. DROP apaga um objeto do banco de dados. Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usurio alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente.

  • 2.1 Linguagens de Base de DadosDDL - Linguagem de Definio de Dados - (Data Definition Language - Linguagem de Definio de Dados). Outros comandos DDL:ALTER TABLE CREATE INDEX ALTER INDEX DROP INDEX CREATE VIEW DROP VIEW

  • 2.1 Linguagens de Base de DadosDDL - Linguagem de Definio de Dados - (Data Definition Language - Linguagem de Definio de Dados). Outros comandos DDL:ALTER TABLE CREATE INDEX ALTER INDEX DROP INDEX CREATE VIEW DROP VIEW

  • 2.2 MapeamentosAlm dos trs nveis a arquitetura envolve ainda certos mapeamentos, um mapeamento conceitual/interno e vrios mapeamentos externos /conceituais.O mapeamento conceitual/interno define a correspondncia entre viso conceitual e o banco de dados armazenado; ele especifica o modo como os registros e campos conceituais so representados no nvel interno. Se a estrutura do banco de dados armazenado for alterada o mapeamento conceitual interno ter de ser alterado.O mapeamento externo/conceitual define a correspondncia entre uma viso externa especfica e a viso conceitual. Por exemplo, os campos podem ter diferentes tipos de dados, os nomes de campos e registros podem ser alterados, vrios campos conceituais podem ser combinados em um nico campo externo, e assim por diante.

  • 2.3 O sistema de Gerenciamento de Banco de Dados (SGBD)O SGBD o software que trata de todo o acesso ao banco de dados.Conceitualmente o que ocorre :Um usurio faz um pedido de acesso usando uma determinada sub-linguagem de dados (geralmente SQL).O SGBD intercepta o pedido e o analisa.O SGBD inspeciona o esquema externo para esse usurio, o mapeamento externo conceitual correspondente, o esquema conceitual, o mapeamento conceitual/interno e a definio do banco de dados armazenado.O SGBD executa as operaes necessrias sobre o banco de dados armazenado.

  • 2.3 O sistema de Gerenciamento de Banco de Dados (SGBD)

  • 2.3 O sistema de Gerenciamento de Banco de Dados (SGBD)Definio de dados o SGBD deve ser capaz de aceitar definies de dados em formato fonte e converte-los para o formato objeto apropriado. Em outras palavras o SGBD deve incluir componentes de processador de DDL ou compilador de DDL para cada uma das diversas linguagens de definio de dados (DDL). O SGBD tambm dever entender as definies de DDL, no sentido de que, ele entende que os registros externos EMPREGADO incluem um campo SALRIO, ele deve ento ser capaz de usar esse conhecimento para analisar e responder a pedidos de manipulao de dados (por exemplo, obtenha todos os empregados com salrio
  • 2.3 O sistema de Gerenciamento de Banco de Dados (SGBD)Segurana e integridade de dados o SGBD, ou algum subsistema chamado pelo SGBD, deve monitorar requisies de usurios e rejeitar toda tentativa de violar as restries de segurana e integridade definidas pelo DBA.Recuperao de dados e concorrncia o SGBD ou, mais provavelmente, algum outro componente de software relacionado, em geral chamado gerenciador de transaes ou monitor de TP (transaction processing), deve impor certos controles de recuperao e concorrncia.Dicionrio de dados o SGBD deve fornecer uma funo de dicionrio de dados, que pode ser considerado um banco de dados isolado, que contem dados sobre os dados (tambm chamados de metadados ou descritores), ou seja, definies de outros objetos do sistema. Um dicionrio completo tambm incluir muitas informaes adicionais mostrando, por exemplo, os programas que utilizam determinadas partes do banco de dados, os usurios que exigem certos relatrios, e assim por diante.Desempenho o SGBD deve realizar todas as funes identificadas anteriormente de forma to eficiente quanto possvel.

  • 2.4. Arquitetura Cliente ServidorFalamos dos sistemas de banco de dados sob o ponto de vista da chamada arquitetura ANSI/SPARC. O objetivo geral desses sistemas fornecer suporte ao desenvolvimento e execuo de aplicaes de banco de dados. Sob um ponto de vista de mais alto nvel, um sistema desse tipo pode ser considerado como tendo uma estrutura muito simples em duas partes, consistindo em um servidor (back end) e um conjunto de clientes (front ends):O servidor o prprio SGBD. Ele admite todas as funes bsicas de SGBDs definio de dados, manipulao de dados, segurana e integridade de dados. Assim, o termo servidor nesse contexto to somente outro nome para SGBD.Os clientes so as diversas aplicaes executadas em cima do SGBD tanto aplicaes escritas por usurios quanto aplicaes internas (aplicaes fornecidas pelo fabricante do SGBD ou por terceiros). No que se refere ao servidor, claro que no existe diferena alguma entre aplicaes escritas pelo usurio e aplicaes internas.

  • 2.4. Arquitetura Cliente Servidor

  • 3. Modelagem de Dados Usando o Modelo Entidade - Relacionamento (MER)O MER um modelo de dados conceitual de alto-nvel, ou seja, seus conceitos foram projetados para serem compreensveis a usurios, descartando detalhes de como os dados so armazenados. Atualmente, o MER usado principalmente durante o processo de projeto da base de dados.Existem expectativas para que uma classe de SGBDs baseados diretamente no MER esteja disponvel no futuro.

  • 3.1 Modelo de Dados Conceitual de Alto-Nvel e Projeto de Base Dados

  • 3.2 Um ExemploNeste exemplo, descrita uma base de dados COMPANHIA que ser utilizada para ilustrar o processo de projeto de base de dados. So listados os requisitos da base de dados e criado o seu esquema conceitual passo-a-passo ao mesmo tempo em que so introduzidos os conceitos de modelagem usando o MER.A base de dados COMPANHIA armazena os dados dos empregados, departamentos e projetos. Supe-se que aps a Obteno e Anlise dos Requisitos, os projetistas da base de dados produziram a seguinte descrio do mini-mundo-parte da companhia a ser representada na base de dados:A companhia organizada em departamentos. Cada departamento tem um nome, um nmero e um empregado que gerencia o departamento. Armazena-se a data de incio que o empregado comeou a gerenciar o departamento. Um departamento pode ter diversas localizaes;Um departamento controla inmeros projetos, sendo que cada um tem um nome, um nmero e uma localizao;Do empregado armazena-se o nome, o nmero do seguro social, endereo, salrio, sexo e data de nascimento. Todo empregado associado a um departamento, mas pode trabalhar em diversos projetos, que no so necessariamente controlados pelo mesmo departamento. Armazena-se, tambm, o nmero de horas que o empregado trabalha em cada projeto. Mantm-se, ainda, a indicao do supervisor direto de cada projeto;Os dependentes de cada empregado so armazenados para propsito de garantir os benefcios do seguro. Para cada dependente ser armazenado o nome, sexo, data de nascimento e o relacionamento com o empregado.

  • 3.2 Um ExemploNeste exemplo, descrita uma base de dados COMPANHIA que ser utilizada para ilustrar o processo de projeto de base de dados. So listados os requisitos da base de dados e criado o seu esquema conceitual passo-a-passo ao mesmo tempo em que so introduzidos os conceitos de modelagem usando o MER.A base de dados COMPANHIA armazena os dados dos empregados, departamentos e projetos. Supe-se que aps a Obteno e Anlise dos Requisitos, os projetistas da base de dados produziram a seguinte descrio do mini-mundo-parte da companhia a ser representada na base de dados:A companhia organizada em departamentos. Cada departamento tem um nome, um nmero e um empregado que gerencia o departamento. Armazena-se a data de incio que o empregado comeou a gerenciar o departamento. Um departamento pode ter diversas localizaes;Um departamento controla inmeros projetos, sendo que cada um tem um nome, um nmero e uma localizao;Do empregado armazena-se o nome, o nmero do seguro social, endereo, salrio, sexo e data de nascimento. Todo empregado associado a um departamento, mas pode trabalhar em diversos projetos, que no so necessariamente controlados pelo mesmo departamento. Armazena-se, tambm, o nmero de horas que o empregado trabalha em cada projeto. Mantm-se, ainda, a indicao do supervisor direto de cada projeto;Os dependentes de cada empregado so armazenados para propsito de garantir os benefcios do seguro. Para cada dependente ser armazenado o nome, sexo, data de nascimento e o relacionamento com o empregado.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoEntidades e AtributosO objeto bsico que o MER representa a entidade. Uma entidade algo do mundo real que possui uma existncia independente. Uma entidade pode ser um objeto com uma existncia fsica - uma pessoa, carro ou empregado - ou pode ser um objeto com existncia conceitual - uma companhia, um trabalho ou um curso universitrio. Cada entidade tem propriedades particulares, chamadas atributos, que a descrevem. Por exemplo, uma entidade EMPREGADO pode ser descrita pelo seu nome, o trabalho que realiza, idade, endereo e salrio. Uma entidade em particular ter um valor para cada um de seus atributos. Os valores de atributos que descrevem cada entidade ocupam a maior parte dos dados armazenados na base de dados.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoEntidades e AtributosA Figura a seguir ilustra duas entidades. A entidade e1, EMPREGADO, tem quatro atributos: Nome, Endereo, Data de nascimento e Telefone residencial. Os seus valores so: Joo da Silva, Rua Gois 711, So Paulo, SP, 1301100, 31/07/1973 e 713-749, respectivamente. A entidade c1, COMPANHIA, tem trs atributos: Nome, Sede e Presidente. Seus valores so: Cooper Sugar, Ribeiro Preto e Joo da Silva.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoEntidades e AtributosAlguns atributos podem ser divididos em subpartes com significados independentes. Por exemplo, Endereo da entidade e1 pode ser dividido em Endereo da Rua, Cidade, Estado e CEP. Um atributo que composto de outros atributos mais bsicos chamado composto. J, atributos que no so divisveis so chamados simples ou atmicos. Atributos compostos podem formar uma hierarquia.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoEntidades e AtributosAtributos compostos so teis quando os usurios referenciam o atributo composto como uma unidade e, em outros momentos, referenciam especificamente a seus componentes. Se o atributo composto for sempre referenciado como um todo, no existe razo para subdividi-lo em componentes elementares.Muitos atributos tm apenas um nico valor. Tais atributos so chamados atributos univalorados (exemplo, Data de nascimento da entidade e1). Em outros casos, um atributo pode ter um conjunto de valores. Tais atributos so chamados de atributos multivalorados (exemplo, Telefone residencial da entidade e1). Atributos multivalorados podem possuir uma multiplicidade, indicando as quantidades mnima e mxima de valores.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoEntidades e AtributosEm alguns casos, dois ou mais atributos so relacionados. Por exemplo, Idade e Data de Nascimento de uma pessoa. Para uma entidade pessoa em particular, a Idade pode ser determinada a partir da data atual e da Data de Nascimento. Atributos como Idade so chamados atributos derivados. Alguns valores de atributos podem ser derivados de entidades relacionadas. Por exemplo, um atributo Nmero de Empregados de uma entidade departamento que pode ser calculado contando-se o nmero de empregados relacionados com o departamento.Outras situaes: uma entidade pode no ter quaisquer valores para um atributo. Por exemplo, o atributo Apartamento aplica-se somente queles empregados que residam em algum prdio. Para tais situaes, um valor especial chamado null criado. O valor null pode tambm ser utilizado para denotar que o valor desconhecido, como por exemplo, quando o cliente em um cadastro no responde o nmero do CEP da rua onde reside. O significado para o primeiro uso do null no aplicvel e, para o segundo, desconhecido.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoTipos de Entidades, Conjunto de Valores e Atributos-ChavesA Figura abaixo mostra dois tipos de entidades denominadas EMPREGADO e COMPANHIA, e uma lista de atributos. Algumas instncias so tambm ilustradas, juntamente com os seus valores de atributos:

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoTipos de Entidades, Conjunto de Valores e Atributos-ChavesAtributo-Chave: Um tipo de entidade tem, normalmente, atributos cujos valores so distintos para cada entidade. Tal atributo chamado atributo-chave, e o seu valor pode ser usado para identificar cada entidade unicamente. Algumas vezes, um conjunto de atributos pode formar uma chave. Nestes casos, os atributos podem ser agrupados em um atributo composto, que vir a ser um atributo-chave.A especificao de um atributo-chave para um tipo de entidade significa que a propriedade de unicidade deve valer para quaisquer extenses deste tipo de entidade. Assim, esta restrio probe que duas entidades tenham, simultaneamente, o mesmo valor para o atributo-chave.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisTipo e Instncia de Relacionamento: Um tipo de relacionamento R entre n tipos de entidades E1, E2, ..., En um conjunto de associaes entre entidades desses tipos. Diz-se que cada entidade E1, E2, ..., En participa no tipo de relacionamento R e que as entidades individuais e1, e2, ..., en participam na instncia do relacionamento ri=(e1, e2, ..., en). O ndice i indica que podem existir vrias instncias de relacionamento.Por exemplo, considere-se que um tipo de relacionamento TRABALHA-PARA exista entre tipos de entidades EMPREGADO e DEPARTAMENTO. Este relacionamento associa cada empregado com o departamento em que este trabalha. Cada instncia de relacionamento em TRABALHA-PARA associa uma entidade empregado e uma entidade departamento.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisA Figura abaixo ilustra este exemplo, onde cada instncia de relacionamento ri conectada a uma entidade empregado e a uma entidade departamento. No mini-mundo representado nesta Figura, os empregados e1, e3 e e6 trabalham para o departamento d1; e2 e e4 trabalham para d2; e e5 e e7 trabalham para d3.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisO Grau de um Tipo de Relacionamento indica o nmero de tipos de entidades participantes. Assim, o tipo de relacionamento TRABALHAPARA de grau dois. Um tipo de relacionamento de grau dois chamado binrio e de grau trs de ternrio. Um exemplo de um tipo de relacionamento ternrio FORNECE.Cada instncia de relacionamento ri associa trs entidades um fornecedor s, uma pea p e um projeto j - onde o fornecedor s fornece a pea p para o projeto j. Podem existir tipos de relacionamento de qualquer grau, porm mais freqente encontrar o tipo de relacionamento de grau dois.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries Estruturais

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisEm geral, um tipo de relacionamento ternrio representa mais informao do que trs tipos de relacionamentos binrios. Por exemplo, considere os trs tipos de relacionamentos binrios: PODE-FORNECER, USA e FORNECE-ALGO. Supe-se que: PODE-FORNECER, entre os tipos de entidades FORNECEDOR e PEA, possui uma instncia (s, p) com o significado: "o fornecedor s pode fornecer a pea p" (para qualquer projeto);USA, entre os tipos de entidades PROJETO e PEA, possui uma instncia (j, p) com o significado: "o projeto j usa a pea p"; e FORNECE-ALGO, entre os tipos de entidades FORNECEDOR e PROJETO, possui uma instncia (s, j) com o significado: "o fornecedor s fornece alguma pea para o projeto j".

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisA existncia dessas trs instncias de relacionamentos (s, p), (j, p) e (s, j) em PODEFORNECER, USA e FORNECE-ALGO, respectivamente, no necessariamente implica que uma instncia (s, j, p) exista no tipo de relacionamento ternrio FORNECE. Isto tem sido chamado armadilha de conexo.Relacionamento como Atributo: Considere-se o tipo de relacionamento TRABALHA-PARA. Pode-se pensar em colocar um atributo chamado Departamento no tipo de entidade EMPREGADO onde o valor deste atributo em cada entidade empregado a entidade departamento em que ele trabalha.Quando se pensa em um tipo de relacionamento binrio como atributo, existem duas alternativas: Departamento como atributo do tipo de entidade EMPREGADO ou Empregado como atributo do tipo de entidade DEPARTAMENTO.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisNomes de Papis e Relacionamentos Recursivos: Cada tipo de entidade que participa de um tipo de relacionamento possui um papel especfico no relacionamento. O nome do papel indica o papel que uma entidade de um tipo de entidade tem para cada instncia de relacionamento. Por exemplo, no tipo de relacionamento TRABALHA-PARA, EMPREGADO tem o papel empregado ou trabalhador e DEPARTAMENTO tem o papel de departamento ou empregador. A escolha do nome nem sempre simples. Para o tipo de relacionamento ternrio FORNECE, difcil encontrar-se um nome. O nome de papel no exclusividade do tipo de relacionamento onde os tipos de entidades participantes so distintos. Em alguns casos, um mesmo tipo de entidade participa mais que uma vez em um tipo de relacionamento com diferentes papis. Nesses casos, essencial identificar os nomes dos papis a fim de distinguir o significado de cada participao. Tais tipos de relacionamentos so chamados recursivos. Para ilustrar, considere a Figura 17:

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisConsidere o exemplo: relacionamento SUPERVISIONA relaciona um empregado com o seu supervisor, onde ambas entidades so membros do mesmo tipo de entidade EMPREGADO. Assim, o tipo de entidade EMPREGADO participa duas vezes: uma vez no papel de supervisor e outra no papel de supervisionado. Na figura a seguir, as linhas marcadas com "1" representam o papel de supervisor e os marcados com "2" representam o papel de supervisionado. Assim, e1 supervisiona e2, e2 supervisiona e3 e e3 supervisiona e4.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisRestries sobre Tipos de Relacionamentos: Os tipos de relacionamento possuem certas restries que limitam as combinaes possveis de entidades participando nas instncias de relacionamento.Por exemplo, se existir uma regra que um empregado trabalha para apenas um departamento, ento esta restrio deve ser descrita no esquema. Pode-se distinguir dois principais tipos de restries de relacionamento que ocorrem com relativa freqncia: razo de cardinalidade e participao.A restrio razo de cardinalidade especifica a quantidade de instncias de relacionamento que uma entidade pode participar. No tipo de relacionamento binrio TRABALHA-PARA, DEPARTAMENTO:EMPREGADO tem razo de cardinalidade 1:N. Isto significa que cada entidade departamento pode estar relacionada a inmeras entidades empregado (muitos empregados podem trabalhar para um departamento) mas uma entidade empregado pode estar relacionada a apenas um departamento (um empregado pode trabalhar apenas para um departamento).

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisAs razes de cardinalidade mais comuns para tipos de relacionamento binrio so 1:1, 1:N e M:N.Um exemplo de um tipo de relacionamento binrio 1:1 pode ser observado entre DEPARTAMENTO e EMPREGADO GERENCIA, que relaciona uma entidade departamento com o empregado que gerencia esse departamento. Este relacionamento 1:1 pois sabe-se que um empregado pode gerenciar apenas um departamento e que um departamento pode ter apenas um gerente.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisA restrio de participao especifica se a existncia de uma entidade depende dela estar relacionada com outra entidade atravs de um relacionamento. Existem dois tipos de restries de participao: total e parcial. Se uma companhia estabelece a regra de que todo empregado deve trabalhar para um departamento, ento uma entidade empregado somente pode existir se ele participar em uma instncia de relacionamento TRABALHAPARA.A participao de EMPREGADO em TRABALHA-PARA chamada total, o que significa que toda entidade empregado deve estar relacionada a uma entidade departamento via TRABALHA-PARA. A restrio de participao total algumas vezes chamada dependncia existencial. No esperado que todo empregado gerencie um departamento, assim a participao de EMPREGADO no tipo de relacionamento GERENCIA parcial. Isso significa que algumas entidades, do conjunto de entidades EMPREGADO, podero estar relacionadas a uma entidade departamento via GERENCIA, mas no necessariamente todas.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisAs restries de participao e razo de cardinalidade podem ser derivadas da restrio estrutural de um tipo de relacionamento. simples especificar as restries estruturais, embora no seja to intuitiva quanto s restries de participao e razo de cardinalidade.Pode-se associar um par de nmeros inteiros (min, max) para cada participao de um tipo de entidade E em um tipo de relacionamento R, onde 0 min max e max 1. Os nmeros indicam que para cada entidade e em E, e deve participar ao menos min e no mximo Max vezes em instncias de relacionamento de R. Note-se, que se min=0 ento a restrio de participao parcial e se min>0 ento a participao total. A vantagem de usar este mtodo que ele mais preciso e pode ser usado facilmente para especificar restries estruturais para tipos de relacionamentos de qualquer grau.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisAtributos em Tipos de Relacionamento: Os tipos de relacionamento tambm podem ter atributos. Por exemplo, pode haver a necessidade de se representar a quantidade de horas semanais trabalhadas por um empregado em um dado projeto. Isto pode ser representado em cada instncia de relacionamento TRABALHA-EM na forma de atributo denominado Horas. Um outro exemplo o caso de representar a data em que um gerente comeou a gerenciar um departamento atravs de um atributo DataIncio para o tipo de relacionamento GERENCIA.Atributos de tipos de relacionamento 1:1 ou 1:N podem ser includos como atributos de um dos tipos de entidades participantes. Por exemplo, o atributo DataIncio para o tipo de relacionamento GERENCIA pode ser um atributo tanto de EMPREGADO quanto de DEPARTAMENTO; embora, conceitualmente, ele pertena ao relacionamento GERENCIA. Isso ocorre porque GERENCIA um relacionamento 1:1. Assim, toda entidade departamento ou empregado participam em apenas uma instncia de relacionamento e, dessa forma, o valor do atributo DataIncio pode ser representado em uma das entidades participantes.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoRelacionamentos, Papis e Restries EstruturaisPara um tipo de relacionamento 1:N, um atributo de relacionamento pode somente ser colocado no tipo de entidade que est do lado N do relacionamento. Se o relacionamento TRABALHA-PARA tiver um atributo DataIncio indicando quando um empregado comeou a trabalhar para um departamento, este atributo pode ser colocado como atributo de EMPREGADO. Isto acontece porque o relacionamento 1:N, tal que cada entidade empregado participa apenas uma nica vez em uma instncia de TRABALHA-PARA. Em ambos os tipos de relacionamento 1:1 e 1:N, a deciso de onde colocar um atributo de relacionamento determinada subjetivamente pelo projetista de esquemas.Se o valor de um atributo determinado pela combinao das entidades participantes em uma instncia de relacionamento, e no apenas por uma das entidades, ento o atributo deve ser especificado como um atributo de relacionamento. Esta condio aplica-se a atributos de tipos de relacionamentos M:N, porque as entidades dos tipos de entidades participantes podem participar em inmeras instncias de relacionamento. Um exemplo disso o atributo Horas do relacionamento M:N TRABALHA-EM. O nmero de horas que um empregado trabalha em um projeto determinado pela combinao empregado-projeto e no separadamente.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoTipo de Entidade-FracaAlguns tipos de entidades podem no ter quaisquer atributos-chaves. Isto implica que no se pode distinguir as entidades porque a combinao dos valores de atributos podem ser idnticas. Tais tipos de entidades so chamadas tipos de entidades-fracas. Por exemplo, considere o tipo de entidade DEPENDENTE, relacionado a EMPREGADO, que usado para representar os dependentes de cada empregado atravs do relacionamento 1:N. Os atributos de DEPENDENTE so Nome (apenas o primeiro nome do dependente), DataNasc, Sexo e Relao com o empregado (esposa, marido, filho, sogra, etc.). Dois dependentes de empregados distintos podem ter os mesmos valores para os atributos, mesmo assim eles ainda sero entidades distintas. Os dependentes sero identificados como entidades distintas aps a determinao da entidade empregado com a qual cada um est relacionado.Um tipo de entidade-fraca tem uma chave-parcial, que um conjunto de atributos que pode univocamente identificar entidades-fracas relacionadas mesma entidade proprietria. No exemplo, assume-se que nenhum dependente de um mesmo empregado ter o mesmo nome, ento o atributo Nome de DEPENDENTE ser a chave-parcial.

  • 3.3 Conceitos do Modelo Entidade-RelacionamentoTipo de Entidade-FracaUm tipo de entidade-fraca pode, algumas vezes, ser representado como atributo composto e multivalorado. No exemplo, pode-se especificar um atributo composto e multivalorado denominado Dependente para EMPREGADO, onde os atributos componentes so Nome, DataNasc, Sexo e Relao, substituindo-se assim, o tipo de entidade-fraca DEPENDENTE. A escolha de qual representao usar determinada pelo projetista da base de dados. Um critrio usado para se adotar a representao de tipo de entidade-fraca quando o tipo de entidade-fraca tem muitos atributos ou participa, independentemente, em outros tipos de relacionamentos alm do tipo de relacionamento que o identifica.

  • 3.4 Projeto da Base de Dados COMPANHIA utilizando o MERTendo visto os conceitos pertinentes ao MER, pode-se agora especificar os seguintes tipos de relacionamentos extrados do exemplo apresentado.GERENCIA (1:1) entre EMPREGADO e DEPARTAMENTO. A participao de EMPREGADO parcial. A participao de DEPARTAMENTO total. O atributo DataIncio associado a este tipo de relacionamento.TRABALHA-PARA (1:N) entre DEPARTAMENTO e EMPREGADO. Ambos tm participao total.CONTROLA (1:N) entre DEPARTAMENTO e PROJETO. A participao de PROJETO total e de DEPARTAMENTO parcial.SUPERVISIONA (1:N) entre EMPREGADO (no papel de supervisor) e EMPREGADO (no papel de supervisionado). A participao de ambos parcial, pois nem todo empregado supervisor e nem todo empregado tem um supervisor.TRABALHA-EM (M:N) entre EMPREGADO e PROJETO com o atributo Horas. Ambos tm participao total.DEPENDENTE-DE (1:N) entre EMPREGADO e DEPENDENTE. um tipo de relacionamento de identificao para o tipo de entidade-fraca DEPENDENTE. A participao de EMPREGADO parcial e de DEPENDENTE total.

  • 3.4 Projeto da Base de Dados COMPANHIA utilizando o MEREm diagramas do MER, ou simplesmente DER, a nfase est na representao de esquemas ao invs de instncias. Isso porque o esquema de uma base de dados raramente sofre mudanas, j instncias podem mudar freqentemente. Tambm, o esquema de fcil visualizao por conter menor quantidade de elementos visuais.

  • 3.5 Diagrama Entidade-Relacionamento (DER)

  • 3.5 Diagrama Entidade-Relacionamento (DER)

  • 3.5 Diagrama Entidade-Relacionamento (DER)Tipos de Relacionamentos de Grau maior que Dois

  • 5. Algebra RelacionalUtilizada para manipular Relaes. Consiste em um conjunto de operaes que tomam uma ou mais relaes (tabelas) como entrada e produzem uma nova relao (tabela) como resultado. As operaes da lgebra relacional podem ser divididas em dois grupos. Um grupo inclui operaes de conjunto da teoria de conjuntos da matemtica. Essas operaes incluem unio, interseo, diferena, e produto cartesiano. O outro grupo consiste de operaes desenvolvidas especialmente para bancos de dados relacionais e incluem as operaes de seleo, projeo, e juno.

  • 5.1. Operaes da Teoria dos ConjuntosSo chamadas de operaes binrias, uma vez que operam pares de relaes.

  • 5.1.1 UnioA unio de duas relaes R e S, R U S o conjunto de todas as tuplas t pertencentes a R, ou a S, ou a ambas. As duas relaes operando tm que ser do mesmo grau, digamos n, e os j-simos atributos das duas relaes (j na faixa de 1 a n) tm que ser do mesmo domnio.

  • 5.1.2 Interseo A interseo de duas relaes R e S, R S o conjunto de todas as tuplas t pertencentes simultaneamente a R e a S.

  • 5.1.3 DiferenaA diferena entre duas relaes R e S (nesta ordem), R - S, o conjunto de todas as tuplas t pertencentes a R, mas no a S.

  • 5.1.4 Produto Cartesiano O produto cartesiano de duas relaes R e S, R X S o conjunto de tuplas t tais que t a concatenao de uma tupla r pertencente a R com uma tupla s pertencente a S. A concatenao de uma tupla r = (r1 , , rm) com uma tupla s = (sm+1 , , sm+n), nesta ordem, a tupla t = (r1 , , rm, sm+1 , , sm+n).

  • 5.2. Operaes Desenvolvidas para Banco de Dados RelacionalPodem ser operaes binrias ou no, logo no necessariamente operam pares de relaes.Seleo ou Restrio;Projeo;Juno.

  • 5.2.1 SeleoA operao de seleo constri uma nova tabela usando um subconjunto horizontal de uma tabela existente, isto , todas as linhas de uma tabela que satisfaam a determinada condio. uma operao unria, ou seja, s envolve uma relao. A operao de seleo aplicada sobre cada tupla individualmente. A condio de seleo expressa como uma combinao booleana de termos, sendo cada termo uma comparao singela que pode se tornar verdadeira ou falsa para uma determinada linha, inspecionando-se aquela linha isoladamente. A comparao da condio de seleo deve envolver atributos do mesmo domnio. O grau da relao resultante da operao de seleo igual ao grau da relao sobre a qual se operou, j que ambas tm os mesmos atributos. O nmero de tuplas da relao resultante sempre menor ou igual ao nmero de tuplas da relao original.

  • 5.2.1 SeleoSimbologia = () A operao de seleo comutativa. ( (R)) = ( (R)) Uma srie de clusulas de seleo conectadas pelo operador booleano E pode ser substituda por uma cascata de operaes de seleo. ee...e(R)=((...((R))...))

  • 5.2.2 ProjeoA operao de projeo forma uma nova tabela usando um subconjunto vertical de algumas colunas de uma tabela, subconjunto obtido pela seleo de atributos especificados, extraindo colunas especficas e removendo qualquer linha duplicata no conjunto de colunas extradas. A projeo nos fornece a maneira de permutar (reordenar) os atributos de uma dada relao. Nenhum atributo pode ser especificado mais de uma vez em uma operao de projeo. A omisso da lista de nomes de atributos equivalente especificao de uma lista contendo todos os nomes de atributos da relao dada, na sua ordem correta, da esquerda para a direita. Em outras palavras, tal projeo idntica relao dada. uma operao unria.

  • 5.2.2 ProjeoSimbologia: ().Se uma lista de atributos no incluir nenhum atributo-chave, tuplas duplicadas poderiam aparecer na relao resultante. Logo,para que isso seja evitado, a operao de projeo remove implicitamente quaisquer duplicatas de uma tupla. Se a lista de atributos incluir um atributo-chave, a relao resultante ter o mesmo nmero de tuplas que a relao original. A equao ((R))= (R) s ser verdadeira se contiver os atributos presentes em , caso contrrio o lado esquerdo da equao ser invlido. A operao de projeo no comutativa.

  • 5.2.3 JunoA operao de juno, denotada por , usada para combinar tuplas relacionadas de duas relaes distintas. Esta operao muito importante para qualquer base de dados relacional porque permite processar o relacionamento entre relaes. A forma geral de uma operao de juno sobre duas relaes R(A1,A2,...,An) e S(B1,B2,...,Bm) R S O resultado de uma juno uma relao Q(A1,A2,...,An,B1,B2,...,Bm) com m+n atributos nesta ordem. A relao resultante Q tem uma tupla para cada combinao de tuplas, uma vinda de R e a outra vinda de S, sempre que a combinao satisfizer a condio de juno (diferena entre JUNO e PRODUTO CARTESIANO). Cada combinao de tuplas para qual a condio de juno seja avaliada como VERDADEIRA includa na relao resultante Q como uma nica tupla. A tem a seguinte forma: E E ... E onde cada condio da forma Ai Bj , onde Ai um atributo de R, Bj um atributo de S, Ai e Bj tm o mesmo domnio, e um operador relacional do conjunto {= , < , , > , , }. As tuplas cujos atributos de juno so nulos no aparecem no resultado.

  • 5.2.3 Juno

  • 5.2.4 EqijunoA operao de juno mais comum envolve condies de juno com o operador de igualdade (=). Tal operao chamada de EQIJUNO. A forma geral de uma operao de eqijuno, tambm chamada de JUNO NATURAL, : R *(),() S Neste caso, especifica a lista de atributos de R, e especifica a lista de atributos de S. As listas so usadas para executar uma comparao de igualdade entre os pares de atributos correspondentes (implicitamente conectadas pelo operador Booleano E). Apenas a lista correspondente aos atributos da primeira relao ( da relao R) mantida na relao resultante Q; evitando assim a duplicao de atributos na relao resultante. Em geral, se R tem nR tuplas e S tem nS tuplas, ento R S tem entre zero e nR*nS tuplas. O tamanho esperado de uma juno dividido pelo valor mximo de nR*nS leva a uma razo chamada de seletividade da juno, que uma propriedade de cada condio de juno.

  • 5.2.4 Eqijuno

  • 5.2.5 Juno Externa (OUTER JOIN)A operao de juno descrita anteriormente realiza um casamento entre tuplas que satisfaam uma determinada condio de juno. Por exemplo, em uma operao de Juno Natural R*S, apenas as tuplas de R que tm uma contrapartida em S, e vice-versa, aparecem no resultado. Logo, as tuplas que no possuam uma tupla relacionada so eliminadas do resultado. As tuplas que possuam valores nulos para os atributos de juno tambm so eliminadas. Um conjunto de operaes, chamadas de Junes Externas, pode ser usado quando quisermos manter no resultado todas as tuplas de R e/ou S; quer tenham ou no tuplas relacionadas na outra relao. A Juno Externa Esquerda mantm todas as tuplas da primeira relao (R); se no houver nenhuma tupla correspondente em S os atributos oriundos de S na relao resultante so preenchidos com o valor nulo. As tabelas da prxima transparncia ilustram as operaes acima. Uma operao similar, Juno Externa Direita (=), mantm na relao resultante as tuplas da segunda relao (S); enquanto a operao Juno Externa Total (==) mantm as tuplas de ambas as relaes.

  • 5.2.5 Juno Externa (OUTER JOIN)Por exemplo, suponha que queiramos uma lista com o nome de todos os empregados e o nome dos departamentos que eles gerenciam. Devemos ento usar a operao de Juno Externa, denotada por =, como se segue:TEMP (EMPREGADO =CPF = CPF_GER DEPARTAMENTO) RESULT P_NOME , U_NOME,NOME_DEP(TEMP)

  • Exerccio

  • Exerccio1. Obtenha o primeiro nome, o ltimo nome e o salrio de cada um dos empregados. 2. Obtenha o CPF do gerente do Departamento de Informtica. 3. Obtenha o primeiro e o ltimo nome do gerente do Departamento de Informtica. 4. Obtenha o primeiro e o ltimo nome de todos os empregados do Departamento de Informtica. 5. Obtenha uma relao com o primeiro e o ltimo nome de todos os empregados do Departamento de Informtica, juntamente com o nome do projeto que cada um deles est trabalhando. 6. Obtenha o primeiro e o ltimo nome de todos os empregados que no tm dependentes. 7. Obtenha o primeiro e o ltimo nome de todos os empregados que tm dois ou mais dependentes. 8. Obtenha o total dos salrios pagos aos empregados do Departamento de Informtica. 9. Obtenha o salrio mdio dos gerentes de departamento. 10. Obtenha uma relao com o nome de cada um dos departamentos e o salrio mdio dos seus empregados.

  • Exerccio11. Recupere os nomes de todos os empregados no departamento 5 que trabalham menos que 20 horas por semana no projeto Intranet. 12. Liste os nomes de todos os empregados que possuem umdependente cujo nome seja igual ao deles. 13. Encontre os nomes de todos os empregados que estejam diretamente supervisionados por Beatriz Figueredo 14. Recupere os nomes de todos os empregados que trabalham em cada projeto. 15. Recupere os nomes de todos os empregados que no trabalham em nenhum projeto. 16. Liste os sobrenomes de todos os gerentes de departamento que no possuam dependentes. 17. Para cada projeto, liste o nome do projeto e o total de horas por semana (de todos os empregados) despendidos naquele projeto. 18. Para cada departamento, recupere o nome do departamento e o salrio mdio de todos os empregados que trabalham naquele departamento. 19. Recupere o salrio mdio de todos os empregados do sexo feminino.

  • 6. SQLA primeira verso da linguagem SQL, chamada SEQUEL (Structured Query English Language), surgiu em 1974 nos laboratrios da IBM (Califrnia). Entre 1976 e 1977 ela foi revisada e ampliada, tendo ento o seu nome alterado para SQL. Devido ao sucesso da nova forma de consulta e manipulao de dados dentro de um ambiente de banco de dados, sua utilizao tornou-se cada vez maior. Vrios SGBDs atuais utilizam o SQL como a linguagem padro para o acesso s bases de dados. Entre eles podemos citar: DB2 da IBM ORACLE da Oracle Corporation; RDB da Digital SYBASE da Sybase INC SQL Server da Microsoft Ingres da Computer Associates Em 1982 o American National Standard Institute (ANSI) tornou a SQL a linguagem padro para a manipulao de dados em ambiente relacional.

  • 6. SQLLinguagem de definio de dados (DDL) Permite ao usurio a definio da estrutura e organizao dos dados armazenados, e das relaes existentes entre eles. Linguagem de manipulao de dados (DML) Permite a um usurio, ou a um programa de aplicao, a execuo de operaes de incluso, remoo, seleo ou atualizao de dados previamente armazenados na base de dados.

  • 6.1 Comandos SQLAs tabelas a seguir sero usadas nos exemplos que se seguem, para a apresentao dos comandos SQL: CLIENTE (cod_cli, nome_cli, endereco, cidade, cep, uf) VENDEDOR (cod_vend, nome_vend, sal_fixo, faixa_comiss) PEDIDO ( num_ped, prazo_entr, cd_cli, cd_vend) ITEM_PEDIDO (no_ped, cd_prod, qtd_ped) PRODUTO (cod_prod, unid_prod, desc_prod, val_unit)

  • 6.1 Comandos SQLCriao e Destruio de Tabelas O comando CREATE TABLE usado para criar uma tabela. A sua forma geral : CREATE TABLE (, ); onde: dever ser substitudo pelo nome da tabela a ser criada. deve ser substituda pela relao das colunas da tabela e seus respectivos tipos de dados (por exemplo, smallint, char, varchar, integer, number, float e etc). deve ser substituda pela lista das colunas que so tratadas como chaves estrangeiras.

  • 6.1 Comandos SQLScript de Criao das Tabelas dos Exemplos create table cliente ( cod_cli smallint not null, nome_cli varchar(40) not null, endereco varchar(40) null, cidade varchar(20) null, cep char(08) null, uf char(02) null, primary key (cod_cli)); create table vendedor ( cod_vend smallint not null, nome_ve nd varchar(40) not null, sal_fixo number(9,2) not null, faixa_comiss char(01) not null, primary key (cod_vend)); create table produto ( cod_prod smallint not null, unid_prod char(03) not null, desc_prod varchar(20) not null, val_unit number(9,2) not null, primary key (cod_prod));

  • 6.1 Comandos SQLScript de Criao das Tabelas dos Exemplos create table pedido ( num_ped smallint not null, prazo_entr smallint not null, cd_cli smallint not null REFERENCES CLIENTE (cod_cli), cd_vend smallint not null REFERENCES VENDEDOR (cod_vend), primary key (num_ped)); create table item_pedido ( no_ped smallint not null REFERE NCES PEDIDO (num_ped), cd_prod smallint not null REFERENCES PRODUTO (cod_prod), qtd_ped float not null);

  • 6.1 Comandos SQLPara excluirmos uma tabela existente devemos usar o comando DROP TABLE. A sua forma geral : DROP TABLE ; onde: dever ser substitudo pelo nome da tabela a ser excluda. Exemplos drop table item_pedido; drop table pedido; drop table vendedor; drop table produto; drop table cliente;

  • 6.1.2 Executando Consultas sobre as TabelasSelecionando Colunas Especficas de uma TabelaSELECT FROM ; Listar todos os produtos com as respectivas descries, unidades e valores unitrios. select desc_prod,unid_prod,val_unit from produto; DESC_PROD UNI VAL_UNIT Chapa de Aco kg 2,5 Cimento kg 4,5 parafuso kg 2,0 Fio plastico m 0,2 Solvente PRW l 5,0

  • 6.1.2 Executando Consultas sobre as TabelasListar os nomes dos clientes, as cidade e os estados onde eles esto localizados. select nome_cli,cidade,uf from cliente; NOME_CLI CIDADE UF Supermercado Carrefour rio de janeiro rj Supermercado Baratao rio de janeiro rj Supermercado Arariboia niteroi rj UFF niteroi rj CSN volta redonda rj Pegeout resende rj Ind. Quimicas Paulistas sao paulo sp Ford Caminhoes sao paulo sp Riocel Celulose guaiba rs Elevadores Sur guaiba rs

  • 6.1.2 Executando Consultas sobre as TabelasSelecionando todas as Colunas de uma Tabela SELECT * FROM ; Listar o contedo de todas as tabelas da base de dados dos exemplos. select * from cliente; Selecionando Apenas Alguns Registros da TabelaSELECT FROM WHERE ; Onde a clusula WHERE tem a seguinte forma: WHERE

  • 6.1.2 Executando Consultas sobre as TabelasOperadores Relacionais: = igual ou != diferente < menor que > maior que >= maior ou igual a
  • 6.1.2 Executando Consultas sobre as TabelasListar o nmero do pedido, o cdigo do produto e a quantidade pedida dos itens de um pedido, onde a quantidade pedida seja igual a 500. select no_ped,cd_prod,qtd_ped from item_pedido where qtd_ped = 500;

    Quais so os clientes localizados na cidade de Niteri? select nome_cli from cliente where cidade = 'niteroi'; NO_PED CD_ PROD QTD_PED 2111 100 500 2113 500 500 4112 500 500 5111 300 500 7111 100 500 NOME_CLI Supermercado Arariboia UFF

  • 6.1.2 Executando Consultas sobre as TabelasOperadores Lgicos AND conjuno OR disjuno NOT negao Quais so os produtos que tm unidade igual a 'kg' e valor unitrio maior do que R$ 2,00? select desc_prod from produto where unid_prod = 'kg' and val_unit > 2.00;

    DESC_PROD Chapa de Ao Cimento

  • 6.1.2 Executando Consultas sobre as TabelasListe todos os clientes localizados na cidade de So Paulo ou que tenham CEP entre 20000005 e 20000010. select nome_cli,cidade,cep from cliente where cidade = 'sao paulo' or (cep>='20000005' and cep
  • 6.1.2 Executando Consultas sobre as TabelasMostrar todos os pedidos que no tenham prazo de entrega superior a 15 dias. select num_ped from pedido where not (prazo_entr > 15);

    NUM_PED 1111 1112 2111 2113 3111 3112 4111 4112 5111

  • 6.1.2 Executando Consultas sobre as TabelasOperadores BETWEEN e NOT BETWEEN WHERE BETWEEN AND WHERE NOT BETWEEN AND Este operador possibilita a seleo de uma faixa de valores sem a necessidade do uso dos operadores >=,
  • 6.1.2 Executando Consultas sobre as TabelasListe o cdigo e a descrio dos produtos que tenham o valor unitrio na faixa de R$ 0,10 a R$ 3,00. select cod_prod,desc_prod from produto where val_unit between 0.10 and 3.00; COD_PROD DESC_PROD 100 Chapa de Ao 300 parafuso 3.0X10.5 mm 400 Fio plstico

  • 6.1.2 Executando Consultas sobre as TabelasOperadores LIKE e NOT LIKE WHERE LIKE WHERE NOT LIKE Aplicveis apenas a colunas dos tipos CHAR e VARCHAR. Funcionam de modo anlogo aos operadores = e , porm o poder dos operadores LIKE e NOT LIKE est na utilizao dos smbolos % e _, que podem fazer o papel de coringa: % substitui uma palavra _ substitui um caracter qualquer Exemplos: 'apis%' se aplicaria s seguintes cadeias de caracteres: 'lapis preto' 'lapis cera' 'lapis borracha' 'broca n_' se aplicaria s seguintes cadeias de caractere: 'broca n1' 'broca n9'

  • 6.1.2 Executando Consultas sobre as TabelasListar todos os produtos que tenham a sua unidade comeando por k (lembre-se de que a coluna unid_prod foi definida como char(03)). select cod_prod,desc_prod from produto where unid_prod like 'k__'; COD_PROD DESC_PROD 100 Chapa de Ao 200 Cimento 300 parafuso 3.0X10.5 mm

  • 6.1.2 Executando Consultas sobre as TabelasListar todos os vendedores cujos os nome no comecem por 'A'. select cod_vend,nome_vend from vendedor where nome_vend not like 'A%'; COD_VEND NOME_VEND 11 Paulo Alberto 13 Cassia Andrade 15 Maria Paula

  • 6.1.2 Executando Consultas sobre as TabelasOperadores IN e NOT IN WHERE IN WHERE NOT IN () Seleciona as linhas cujo o valor da coluna pertena ao conjunto . Listar todos os vendedores cujas as faixas de comisso sejam 'a' ou 'b'. select cod_vend,nome_vend from vendedor where faixa_comiss in ('a','b'); COD_VEND NOME_ VEND 11 Paulo Alberto 12 Ana Cristina 14 Armando Pinto

  • 6.1.2 Executando Consultas sobre as TabelasOperadores IS NULL e IS NOT NULL WHERE IS NULL WHERE IS NOT NULL A utilizao do valor nulo (NULL) problemtica, pois as diversas implementaes da linguagem SQL podem adotar qualquer representao para o valor nulo. Mostrar os clientes que no tenham endereo cadastrado. select nome_cli from cliente where endereco is null; NOME_CLI ---------------------------------------- 0 linhas selecionadas.

  • 6.1.2 Executando Consultas sobre as TabelasOrdenando os Dados Selecionados SELECT FROM WHERE ORDER BY {| [ASC|DESC]} Onde se refere coluna segundo a qual as linhas sero ordenadas, e se refere posio relativa da coluna na projetadas, contada da esquerda para a direita, e no posio na tabela original. As clusulas ASC e DESC denotam ordenao ascendente e descendente respectivamente. A forma ascendente de ordenao assumida caso nenhuma opo seja informada explicitamente.

  • 6.1.2 Executando Consultas sobre as TabelasMostrar em ordem alfabtica a lista de vendedores e seus respectivos salrios fixos. select nome_vend,sal_fixo from vendedor order by nome_vend; NOME_VEND SAL_FIXO Ana Cristina 2100 Armando Pinto 2500 Cassia Andrade 900 Maria Paula 900 Paulo Alberto 1500

  • 6.1.2 Executando Consultas sobre as TabelasListar os nomes, as cidades e os estados de todos os clientes, ordenados por estado e cidade de forma descendente.

    select nome_cli,cidade,uf from cliente order by uf desc,cidade desc; NOME_CLI CIDADE UF Ind. Quimicas Paulistas sao paulo sp Ford Caminhoes sao paulo sp Riocel Celulose guaiba rs Elevadores Sur guaiba rs CSN volta redonda rj Supermercado Carrefour rio de janeiro rj Supermercado Baratao rio de janeiro rj Pegeout resende rj Supermercado Arariboia niteroi rj UFF niteroi rj

  • 6.1.2 Executando Consultas sobre as TabelasMostrar a descrio e o valor unitrio de todos os produtos que tenham unidade 'kg' em ordem ascendente de valor unitrio. select desc_prod,val_unit from produto where unid_prod = 'kg' order by 2; DESC_PROD VAL_UNIT parafuso 3.0X10.5 mm 2 Chapa de Ao 2,5 Cimento 4,5

  • 6.1.2 Executando Consultas sobre as TabelasRealizando Clculos sobre a Informao Selecionada Podemos criar dinamicamente um campo que no pertena tabela original atravs de operaes executadas sobre os campos projetados. Exibir o novo salrio fixo dos vendedores da faixa de comisso C, calculado com base no reajuste de 75% sobre o salrio atual acrescido de R$ 120,00 de bonificao. Ordene a relao resultante pelo nome do vendedor. select nome_vend,((sal_fixo*1.75)+120) as from vendedor where faixa_comiss='c' order by nome_vend; NOME_VEND NOVO_SAL Cassia Andrade 1695 Maria Paula 1695

  • 6.1.2 Executando Consultas sobre as TabelasMximos (MAX) e Mnimos (MIN) Mostrar o menor e o maior salrio entre os vendedores. select MIN(sal_fixo),MAX (sal_fixo) from vendedor;

    Totalizando Colunas (SUM) Mostrar a quantidade total pedida para o produto cimento, de cdigo 200. select SUM(qtd_ped) from item_pedido where cd_prod=200; MIN(SAL_FI) MAX(SAL_FI )900 2500

    SUM(QTD_PE)900

  • 6.1.2 Executando Consultas sobre as TabelasCalculando Mdias (AVG) Qual a mdia dos salrios fixos dos vendedores? select AVG(sal_fixo) from vendedor;

    Contando as Linhas (COUNT) Quantos vendedores ganham acima de R$ 2.000,00 de salrio fixo? select COUNT(*) from vendedor where sal_fixo>2000; AVG(SAL_FI) 1580 COUNT(*) 2

  • 6.1.2 Executando Consultas sobre as TabelasA Palavra-Chave DISTINCT Vrias linhas de uma tabela podem conter os mesmos valores para as suas colunas (duplicidade), com exceo da chave primria. Quando desejarmos eliminar a duplicidade, podemos inserir a palavra-chave DISTINCT aps a palavra-chave SELECT. Em que cidades as nossa empresa possui clientes? select DISTINCT cidade from cliente;

    CIDADE guaiba niteroi resende rio de janeiro sao paulo volta redonda

  • 6.1.2 Executando Consultas sobre as TabelasAgrupando a Informao Selecionada (GROUP BY) Existem ocasies em que desejamos aplicar uma funo de agregao no somente a um conjunto de tuplas, mas tambm organizar a informao em determinadas categorias. Isto possvel atravs do uso da clusula GROUP BY. Listar o nmero de itens existente em cada pedido. select no_ped, count(*) as total_itens from item_pedido group by no_ped;

    NO_PED TOTAL_ITEN 1111 3 1112 2 1113 1 2111 2 2112 2 2113 1 3111 1 3112 2 4111 1 4112 2 5111 2 6111 1 6112 2 7111 1

  • 6.1.2 Executando Consultas sobre as TabelasInicialmente as linha so agrupadas atravs do(s) atributo(s) fornecido(s) na clusula GROUP BY; neste caso, no_ped. Em um segundo passo, aplicada a operao COUNT(*) para cada grupo de linhas que tenha o mesmo nmero de pedido. Aps a operao de contagem de cada grupo, o resultado da consulta apresentado. Normalmente, a clusula GROUP BY utilizada em conjunto com as operaes COUNT e AVG.

  • 6.1.2 Executando Consultas sobre as TabelasA Clusula HAVING s vezes temos que definir condies e aplic-las aos grupos ao invs de faz-lo a cada linha separadamente. Por exemplo, suponha que desejemos listar todos os pedidos que possuam mais de um item. Esta condio no se aplica a uma nica linha separadamente, mas a cada grupo definido pela clusula GROUP BY. Para exprimir tal consulta, usamos a clusula HAVING. A condio da clusula HAVING aplicada aps a formao dos grupos; logo, podemos usar funes de agregao na construo das condies da clusula HAVING.

  • 6.1.2 Executando Consultas sobre as TabelasA Clusula HAVING Listar os pedidos que possuam mais de um item. select no_ped,count(*) as total_itens from item_pedido group by no_ped having count(*)>1; NO_PED TOTAL_ITEN 1111 3 1112 2 2111 2 2112 2 3112 2 4112 2 5111 2 6112 2

  • 6.1.2 Executando Consultas sobre as TabelasRecuperando Dados de Vrias Tabelas (JOINS) Algumas consultas necessitam acessar simultaneamente vrias tabelas, o que leva realizao de junes (JOINS) entre as tabelas para poder extrair as informaes necessrias para a consulta formulada. Qualificadores de Nomes Um qualificador de nome consiste do nome da tabela, seguido de um ponto, seguido por um nome de uma coluna da tabela. Por exemplo, o qualificador da coluna DESC_PROD da tabela PRODUTO ser PRODUTO.DESC_PROD. Os qualificadores de nome so utilizados em uma consulta para efetivar a juno (JOIN) entre as tabelas.

  • 6.1.2 Executando Consultas sobre as TabelasFaa uma juno da tabela de clientes com a de pedidos, exibindo o nome do cliente, o cdigo do cliente e o nmero do pedido. select cod_cli,nome_cli,pedido.num_ped from cliente,pedido; COD_CLI NOME_CLI NUM_PED 1000 Supermercado Carrefour 1111 2000 Supermercado Baratao 11 11 3000 Supermercado Arariboia 1111 7000 Ind. Quimicas Paulistas 1111 8000 Ford Caminhoes 1111 9000 Riocel Celulose 1111 ..........................................................................................................................10000 Elevadores Sur 1111 1000 Supermercado Carrefour 1112 140 linhas selecionadas.

  • 6.1.2 Executando Consultas sobre as TabelasNeste exemplo foi executado um produto cartesiano das tabelas CLIENTE e PEDIDO, seguido de uma projeo das colunas exibidas. Neste caso, poucas informaes teis podem ser extradas da relao resultante. Devemos ento aplicar critrios de seleo juno para podermos obter algum resultado concreto.

  • 6.1.2 Executando Consultas sobre as TabelasA que clientes esto associados os pedidos existentes? Listar pelos nomes dos clientes. Select (nome_cli,pedido.cd_cli,pedido.num_ped) from cliente,pedido where cliente.cod_cli=pedido.cd_cli; NOME_CLI CD_CLI NUM_PED Supermercado Carrefour 1000 1111 Supermercado Carrefour 1000 1112 Supermercado Carrefo ur 1000 1113 Supermercado Arariboia 3000 2111 Supermercado Arariboia 3000 2112 Supermercado Arariboia 3000 2113 UFF 4000 3111 UFF 4000 3112 Pegeout 6000 4111 Pegeout 6000 4112 Ford Caminhoes 8000 5111 Riocel Celulose 9000 6111 Riocel Celulose 9000 6112 Elevadores Sur 10000 7111

  • 6.1.2 Executando Consultas sobre as TabelasA equao apresentada na clusula WHERE chamada de EQUAO DE JUNO. Podemos utilizar os operadores LIKE, NOT LIKE, IN, NOT IN, NULL, NOT NULL, os operadores relacionais e operadores AND, OR e NOT, na clusula WHERE de uma juno de tabelas.

  • 6.1.2 Executando Consultas sobre as TabelasQuais so os clientes que tm pedidos com prazos de entrega superiores a 15 dias e que esto localizados nos estados de So Paulo ou do Rio de Janeiro? select nome_cli,uf,pedido.num_ped,pedido.prazo_entr from cliente,pedido where cliente.cod_cli=pedido.cd_cli and uf in ('rj','sp') and prazo_entr>15; NOME_CLI UFNUM_PED PRAZO_ENTR Supermercado Carrefour rj 111330 Supermer cado Arariboia rj 211218

  • 6.1.2 Executando Consultas sobre as TabelasMostrar os pedidos dos clientes e seus respectivos prazos de entrega, ordenados do maior para o menor. Select nome_cli, pedido.num_ped, pedido.prazo_entr from cliente,pedido where cliente.cod_cli=pedido.cd_cli order by prazo_entr DESC; NOME_CLI NUM_PED PRAZO_ENTR Riocel Celulose 611 2 60 Supermercado Carrefour 1113 30 Riocel Celulose 6111 30 Elevadores Sur 7111 20 Supermercado Arariboia 2112 18 Supermercado Arariboia 2111 15 UFF 3111 13 Supermercado Carrefour 1111 10 Ford Caminhoes 5111 10 UFF 3112 7 Pegeout 4111 7 Pegeout 4112 7 Supermercado Carrefour 1112 5 Supermercado Arariboia 2113 3

  • 6.1.2 Executando Consultas sobre as TabelasSinnimos Para que no seja necessrio escrever o nome da tabela nas qualificaes de nomes, podemos utilizar ALIASES definidos na prpria consulta. A definio dos ALIASES feita na clusula FROM, sendo ento utilizada nas outras clusulas (WHERE, ORDER BY, GROUP BY, HAVING e SELECT) de uma consulta.

  • 6.1.2 Executando Consultas sobre as TabelasSinnimos Exibir os vendedores (ordenados por nome) que emitiram pedidos com prazos de entrega superiores a 15 dias e que tenham salrios fixos iguais ou superiores a R$ 1.000,00. select distinct V.nome_vend,P.prazo_entr from vendedor V, pedido P where V.cod_vend=P.cd_vend and V.sal_fixo>1000 and P.prazo_entr>15 order by V.nome_vend; NOME_VEND PRAZO_ENTR Ana Cristina 60 Armando Pinto 30

  • 6.1.2 Executando Consultas sobre as TabelasJunes Envolvendo Trs ou mais Tabelas Exiba a relao dos clientes localizados no Rio de Janeiro (ordenados alfabeticamente) que tm pedidos do produto Chapa de Aco com prazos de entrega superirores a 15 dias. select C.nome_cli,PR.desc_prod,P.no_ped,P.prazo_entr from cliente C,pedido P,item_pedido IP,produto PR where C.cod_cli=P.cd_cli and P.num_ped=IP.no_ped and IP.cd_prod=PR.cod_prod and PR.desc_prod='Chapa de Aco' and P.prazo_entr>15 and C.uf='rj' order by C.nome_cli; NOME_CLI DESC_PROD NO_PED PRAZO_ENTR Carrefour Chapa de Aco 1113 30

  • 6.1.2 Executando Consultas sobre as TabelasJunes Envolvendo Trs ou mais Tabelas Mostre os nome de todos os vendedores que venderam Chapa de Ao em quantidade superior a 300 Kg. select distinct V.nome_vend from vendedor V, pedido P, item_pedido IP, produto PR where V.cod_vend=P.cd_vend and P.num_ped=IP.no_ped and IP.cd_prod=PR.cod_prod and IP.qtd_ped>300 and PR.desc_prod='Chapa de Aco'; NOME_VEND Armando Pinto Maria Paula Paulo Alberto

  • 6.1.2 Executando Consultas sobre as TabelasQuantos clientes fizeram pedidos com a vendedora Ana Cristina? select count(distinct C.cod_cli) from cliente C, pedido P, vendedor V where C.cod_cli=P.cd_cli and P.cd_vend=V.cod_vend and V.nome_vend='Ana Cristina'; Quantos clientes das cidades do Rio de Janeiro e Niteri tiveram seus pedidos tirados com a vendedora Ana Cristina? select C.cidade,count(distinct C.cod_cli) as num_clientes from cliente C, pedido P, vendedor V where C.cod_cli=P.cd_cli and C.cidade in ('rio de janeiro','niteroi') and P.cd_vend=V.cod_vend and V.nome_vend='Ana Cristina' group by C.cidade; COUNT(COD_ Cli)3 CIDADE NUM_CLIENT niteroi 2

  • 6.1.2 Executando Consultas sobre as TabelasUtilizando Consultas Aninhadas (Subqueries) Chamamos de consulta aninhada consulta cujo o resultado utilizado por outra consulta, de forma encadeada e contida no mesmo comando SQL. Que produtos esto includos em um pedido qualquer com a quantidade pedida igual a 100? select desc_prod from produto where cod_prod IN (select cd_prod from item_pedido where qtd_ped=100); DESC_PROD Chapa de Ao Cimento Fio plstico

  • 6.1.2 Executando Consultas sobre as TabelasUtilizando Consultas Aninhadas (Subqueries) Quais vendedores ganham um salrio fixo abaixo da mdia? select nome_vend from vendedor where sal_fixo < (select avg(sal_fixo) from vendedor); NOME_VEND Paulo Alberto Cassia Andrade Maria Paula

  • 6.1.2 Executando Consultas sobre as TabelasUtilizando Consultas Aninhadas (Subqueries) Quais os vendedores que s venderam produtos comercializados em quilogramas (Kg)? select distinct cod_vend,nome_vend from vendedor V where 'kg'=ALL (select unid_prod from pedido P,item_pedido IP,produto PR where P.num_ped=IP.no_ped and IP.cd_prod=PR.cod_prod and P.cd_vend=V.cod_vend); COD_VEND NOME_VEND 15 Maria Paula

  • 6.1.2 Executando Consultas sobre as TabelasUtilizando Consultas Aninhadas (Subqueries) Quais clientes realizaram mais de dois pedidos? select nome_cli from cliente C where exists (select count(*) from pedido where cd_cli=C.cod_cli having count(*)>2); NOME_CLI Supermercado Carrefour Supermercado Arariboia

  • 6.1.2 Executando Consultas sobre as TabelasUtilizando Consultas Aninhadas (Subqueries) Quais os produtos que no esto presentes em nenhum pedido? select cod_prod,desc_prod from produto P where not exists (select * from item_pedido where cd_prod=P.cod_prod); COD_PROD DESC_PROD ---------- -------------------- 0 linhas selecionadas.

  • 6.1.2 Inserindo, Modificando e Excluindo Registros Inserindo Registros em uma Tabela INSERT INTO () VALUES (
  • 6.1.3 Inserindo, Modificando e Excluindo Registros Cadastrar como clientes os vendedores que emitiram mais de 3 pedidos.Usar para o cdigo de cliente o mesmo cdigo do vendedor. O restante das colunas devem ser preenchidas com um espao em branco. insert into cliente (cod_cli, nome_cli,endereco,cidade,cep,uf) select cod_vend,nome_vend,' ', ' ',' ',' ' from vendedor V where 3
  • 6.1.3 Inserindo, Modificando e Excluindo Registros Modificando um Registro UPDATE SET { = } WHERE ; Alterar o preo unitrio do Cimento para R$ 5,00. update produto set val_unit=5.00 where desc_prod=Cimento; 1 linha processada. Atualizar o salrio fixo de todos os vendedores em 27% mais uma bonificao de R$ 100,00. update vendedor set sal_fixo=(sal_fixo*1.27+100.00); 5 linhas processadas.

  • 6.1.3 Inserindo, Modificando e Excluindo Registros Acrescentar 2,5% ao preo unitrio dos produtos que estejam abaixo da mdia dos preos dos produtos comprados a quilo. update produto set val_unit=val_unit*1.025 where val_unit < (select avg(val_unit) from produto where unid_prod=kg); 3 linhas processadas.

  • 6.1.2 Inserindo, Modificando e Excluindo Registros Excluindo Registros DELETE FROM WHERE ; Excluir todos o itens de pedido que tenham quantidade pedida inferior a 200. delete from item_pedido where qtd_ped < 200; 6 linhas processadas.

    Excluir todos os vendedores que no realizaram nenhum pedido. delete from vendedor V where 0=(select count(*) from vendedor,pedido where V.cod_vend=cd_vend); 1 linha processada.