Banco de Dados

March 25, 2018 | Author: Cleomar Cruz | Category: Relational Model, Databases, Relational Database, Data, Sql


Comments



Description

EQUIPE UNITINS Organização de Conteúdos Acadêmicos Eduardo Leal Coordenação Editorial Maria Lourdes F. G. Aires Assessoria Editorial Marinalva do Rêgo Barros Silva Assessoria Produção Gráfica Katia Gomes da Silva Revisão Didático-Pedagógica Francisco Gilson Rebouças Pôrto Júnior Revisão Lingüístico-Textual Marinalva do Rêgo Barros Silva Revisão Digital Helena Carolina Costa e Lima Prestes Projeto Gráfico Douglas Donizeti Soares Irenides Teixeira Katia Gomes da Silva Ilustração Geuvar S. de Oliveira Capa Igor Flávio Sousa EQUIPE FAEL Créditos Coordenação Editorial Leociléa Aparecida Vieira Assessoria Editorial William Marlos da Costa Revisão Juliana Camargo Horning Lisiane Marcele dos Santos Programação Visual e Diagramação Denise Pires Pierin Kátia Cristina Oliveira dos Santos Rodrigo Santos Sandro Niemicz William Marlos da Costa Hoje é comum referir-se à informação como o maior patrimônio de uma empresa. E a informação é armazenada nos computadores na forma de dados. Uma das grandes áreas da computação e, sem dúvidas, uma das mais requisitadas, é aquela que cuida das técnicas de coleta, armazenagem, recuperação e distribuição de dados. Essa área é chamada normalmente de banco de dados, termo que também designa genericamente o software utilizado para gerenciar todos os dados de um empreendimento. Quem trabalha na área de banco de dados atua em uma de três frentes principais: construção de software aplicativo para os clientes, utilizando um gerenciador de dados; administração do gerenciador, que é quem autoriza o uso dos diversos conjuntos dos dados armazenados para os diversos usuários (setores e/ou funcionários da empresa) e se responsabiliza pela manutenção do sistema em operação adequada; e construção dos gerenciadores de dados. A disciplina de Banco de Dados está inserida no currículo de diversos cursos, em áreas de conhecimento diferentes, cada um abordando-a de acordo com seu interesse. Por exemplo: um bibliotecário preocupa-se em catalogar e disponibilizar dados de forma eficiente, enquanto que um biólogo se interessa em armazenar e consultar dados sobre suas pesquisas com proteínas e suas funções. Para o pessoal da área de computação, o interesse é diferente, pois são eles os responsáveis pela análise, projeto, implementação e manutenção dos dados. Neste curso, enfocamos a perspectiva do profissional de Análise e Desenvolvimento de Sistemas, ou seja, vamos estudar os fundamentos para definir, projetar e manipular dados em um banco de dados. Esta disciplina tem caráter introdutório, iniciando com conceitos fundamentais dos bancos de dados, apresentando como distingui-los, modelá-los e como escrever comandos para definir e consultar informações. Prof. Eduardo Leal Apresentação Modelo entidade relacionamento. Linguagem de consulta SQL (DML. Modelagem de dados. Plano de Ensino OBJETIVO • Introduzir os conceitos mais relevantes de banco de dados para subsidiar a análise. Modelo relacional. modelo relacional • Álgebra relacional • Linguagem SQL . o projeto e o desenvolvimento de sistemas de banco de dados. Álgebra relacional. modelo entidade relacionamento. CONTEÚDO PROGRAMÁTICO • Conceitos de banco de dados. modelagem de dados. DDL e DCL). Modelo de dados.EMENTA Banco de dados: características e conceitos. sistemas gerenciadores de banco de dados e caracterização de gerenciadores de banco de dados • Conceitos de abstração de dados • Modelos de dados. Rio de Janeiro: Campus. Ramez. 8. Banco de dados desmistificado: Guia de Aprendizado. 4. SUDARSHAN. Fundamentos de sistemas de gerência de banco de dados. Sistema de bancos de dados. 3. OPEEL. Edward. 1999. Mark L. GILLENSON. Andy. Database management systems. Rio de Janeiro: Alta Books. BIBLIOGRAFIA COMPLEMENTAR DATE. R.. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 371 . 2004. KORTH. ed. ed. Christopher J. Sistemas de banco de dados: fundamentos e aplicações. São Paulo: Pearson Prentice Hall. SILBERSCHATZ. 3. Teach yourself oracle 8 in 21 days. Indianápolis: Sams Publishing. 2004. 2002. Boston: Addison Wesley. 1998.. S. GEHRKE. ed. Abraham.BIBLIOGRAFIA BÁSICA ELMASRI. ed. J. Rio de Janeiro: LTC. Henry F. DELUCA. RAMAKRISHNAN. Steve Adrien. 2005. São Paulo: Makron Books. WHALEN. Introdução a sistemas de bancos de dados. 2006. . como software. Um arquivo é uma coleção de unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 373 . Conhecimento não é verdade. Informação não é conhecimento.1 Iniciando em Banco de Dados Um banco de dados é uma coleção armazenada de dados inter-relacionados. memória. é necessário que você tenha uma noção da terminologia básica da informática. (James A. O banco de dados é um recurso valioso para as organizações. Nesta aula. Às vezes. • avaliar tecnicamente as propriedades dos bancos dos dados. ao final desta aula. praticamente. todos os sistemas informatizados das empresas. arquivos e discos.aula 1 • Banco de dados Aula 1 Introdução aos Bancos de Dados Dados não são fatos. Fatos não são informação. que são gerenciados como uma única unidade. devido à importância da informação como elemento competitivo. Você já utilizou vários bancos de dados. Autry) Esperamos que. apresentaremos uma introdução aos princípios dos sistemas de bancos de dados. Eles estão presentes em. o termo banco de dados é usado indiscriminadamente para indicar qualquer sistema que armazena informações. Para essa primeira aula. 1. Isso tem levado ao desenvolvimento de uma grande quantidade de conceitos e técnicas para o eficiente gerenciamento dos dados. você seja capaz de: • entender o que é um banco de dados e as características de um sistema gerenciador de banco de dados. Verdade não é sabedoria. sem saber em quais tabelas os dados de sua conta estão armazenados. As camadas de abstração de dados permitem que um usuário do banco de dados visualize as informações que deseja sem ter de. seus relacionamentos e formas de acesso. visões. e a distinção entre um banco de dados e um arquivo fica mais clara quando vistas certas propriedades. Em outras palavras. enquanto a camada externa é aquela na qual os usuários e aplicações se conectam e fazem consultas ao banco de dados. O modelo de dados é um 374 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . que são armazenados como uma única unidade por um sistema operacional. Existem algumas regras básicas para que um sistema que manipule dados seja considerado como um SGBD. basicamente. abstração dos dados. 1) afirma que “Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associado a um conjunto de programas para acesso a esses dados”.2 Sistema Gerenciador de Banco de Dados Korth e Sudarshan (1999. 1. deve também armazenar os metadados. Na próxima seção. A camada lógica fornece o mapeamento entre a camada física e a externa. O que as difere é o nível de abstração que elas têm do banco de dados. sem incluir detalhes sobre sua forma de armazenamento real. como: gerenciamento por um sistema gerenciador de banco de dados. discutiremos mais sobre ele. necessariamente. além dos próprios dados. O sistema gerenciador de banco de dados é um software responsável pela organização e manipulação dos dados de um banco de dados. São conceitos parecidos. é como você acessar um sistema bancário em um terminal de auto-atendimento. três camadas de abstração: a camada física. conhecer as estruturas que armazenam esses dados. A abstração dos dados é a representação conceitual dos dados. p. a camada lógica e a camada externa. as camadas de abstração de dados e a independência lógica e física dos dados.aula 1 • Banco de dados registros relacionados. A camada física representa diretamente os arquivos de dados do banco de dados. A independência dos dados representa a independência entre as aplicações e as mudanças decorrentes na estrutura de armazenamento ou na estratégia de acesso aos dados. Um metadado é a descrição dos dados armazenados. A independência física e a independência lógica serão discutidas posteriormente. O SGBD fornece todos os serviços básicos necessários para organizar e manter o banco de dados. A autocontenção indica que o banco de dados. a independência dos dados. controle de transações e o controle de concorrência. Essas regras são a autocontenção. Existem. As visões permitem restringir os dados que cada usuário pode visualizar. No caso de aplicações com operações que fazem modificações nos dados do banco de dados. Isso é chamado de modos de exibição do usuário. A figura um apresenta as camadas de abstração de um banco de dados. ou seja. seus relacionamentos e suas chaves de acesso. Ela deve garantir a atomicidade.aula 1 • Banco de dados tipo de abstração utilizada para fornecer essa representação conceitual. o isolamento e a durabilidade das operações realizadas sobre os dados. Um usuário é considerado como qualquer pessoa. situações críticas podem ocorrer. A visão é derivada de um subconjunto de dados do banco de dados e não deve estar explicitamente armazenada. o usuário não precisa ter acesso aos dados na forma como eles estão armazenados no banco de dados. como deadlock. Figura 1: Camadas de Abstração do Banco de Dados unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 375 . O controle das transações existe para manter a integridade do banco de dados.3 Níveis de Abstração de Dados Os bancos de dados têm a capacidade de apresentar a seus usuários modos de exibição distintos sobre o conjunto de dados armazenados. 1. O controle de concorrência permite que aplicações diferentes acessem concorrentemente (ao mesmo tempo) os mesmos dados. ou aplicativo. apresentando para o usuário o esquema das tabelas. a consistência. que acessa o banco de dados para armazenar e/ou recuperar dados. O usuário não deve ter a necessidade de consultar arquivos físicos de dados ao usar um banco de dados. O SGBD trabalha com o sistema operacional do computador para gerenciar. A Oracle Corporation define seu banco de dados como uma 376 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . quando o usuário precisa saber o nome do arquivo e sua localização no disco. Essa camada é também chamada de esquema. automaticamente. incluindo as operações de abertura. O objetivo de se armazenar os arquivos em locais diferentes é permitir que as unidades de disco possam trabalhar paralelamente. montadas a partir da camada física. Isso é diferente do que ocorre ao usar planilhas e documentos de texto. visando a obter o máximo de desempenho. Quase todos os SGBDs permitem que o banco de dados seja armazenado em vários arquivos de dados. Ela existe somente como estruturas de dados abstratas. é chamada de independência física de dados e é permitida pela existência da separação entre camada física e camada lógica do SGBD. A camada externa é a segunda camada de abstração e é composta pelos modos de exibição do usuário e é a camada na qual os usuários e os programas aplicativos que acessam o banco de dados se conectam e fazem consultas. todas as operações sobre os arquivos de dados.aula 1 • Banco de dados No nível interno. No nível conceitual. a camada física contém todos os arquivos de dados que armazenam os dados do banco de dados. leitura e gravação. os quais podem ser espalhados em muitas unidades físicas de disco. A independência lógica de dados é a capacidade de fazer alterações na camada lógica sem danificar usuários e procedimentos existentes. O usuário não precisa saber como os dados estão armazenados nesses arquivos ou mesmo qual arquivo contém o dado de interesse. A capacidade de alterar a estrutura física de arquivos em um banco de dados. que não tem uma existência física nos arquivos do sistema operacional. Saiba mais Fique atento! Existe uma grande variedade de empresas fabricantes de SGBD e diferentes características em seus produtos. sem precisar propagar essa alteração para os usuários e procedimentos existentes. a camada lógica é a uma camada de abstração. fechamento. atualização e recuperação de dados no banco de dados. 3. cabendo ao SGBD essa função. podemos citar: a) Oracle. Você concorda com essa definição? Justifique baseado nos requisitos necessários para a classificação de um banco de dados. em um determinado instante. Entre os sistemas gerenciadores de bancos de dados disponíveis no momento.aula 1 • Banco de dados coleção de arquivos físicos que são gerenciados por uma instância de seu produto de software de banco de dados. Bancos de dados se modificam com o passar do tempo. 2. O Microsoft SQL Server define um banco de dados como uma coleção de dados que têm um proprietário comum e vários bancos de dados costumam ser gerenciados por uma única instância do software de gerenciamento de banco de dados. O principal objetivo de um SGBD é proporcionar um ambiente que seja eficiente na inserção. Analise alguns dos SGBDs existentes no mercado e identifique suas principais características. Costuma-se dizer que a internet é um grande banco de dados. 1. Oracle c) Orkut. Podemos concluir que os bancos de dados são utilizados para armazenar e manipular dados e que estes são organizados de forma que o usuário não se preocupe como os arquivos estão dispostos no sistema operacional. Microsoft Excel unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 377 . Microsoft Windows. e esquema é o projeto geral do banco de dados. A instância é o valor das informações de um banco. Nesta primeira aula. MySql. O Microsoft Access coloca o banco de dados inteiro em um único arquivo de dados. MySql b) MySql. na medida em que informações são inseridas e removidas. de modo que um banco de dados do Access pode ser definido como o arquivo que contém os dados. Microsoft SQL Server. Verifique quais os recursos eles oferecem e em que diferem dos gerenciadores de arquivos. você aprendeu que um sistema gerenciador de banco de dados (SGBD) consiste em uma coleção de dados inter-relacionados e em uma coleção de programas que acessam esses dados. Se você acertou a resposta dessas atividades. A abstração de dados é importante em um banco de dados porque: a) todo usuário do banco de dados tem de conhecer sua implementação para poder usá-lo. b) nem todo usuário do banco de dados precisa conhecer a implementação física dos arquivos de dados. o Orkut é uma página da internet e o Microsoft Excel é uma planilha eletrônica. A internet é um grande repositório de dados. Por exemplo: cabe ao administrador do banco de dados implementar a estrutura física dos arquivos. A atividade quatro visa a descobrir qual a compreensão do aluno sobre o conceito de abstração de dados. pois o programa Microsoft Windows é um sistema operacional. Na atividade um. Os dados armazenados na internet não têm relacionamento entre si e não se pode dizer que a internet é um grande banco de dados. as características de sistemas gerenciadores de banco de dados. espera-se que você pesquise e reconheça. Uma secretária não precisa saber o nome de uma tabela do banco de dados para poder inserir um novo cliente da empresa. sendo necessário a consulta a manuais dos fabricantes ou em sitios dos produtos. A atividade três traz uma relação de vários programas disponíveis no mercado. nos diferentes produtos disponíveis no mercado. 378 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . A alternativa (b) e (c) estão erradas. atingiu os objetivos propostos para a aula: • entender o que é um banco de dados e as características de um sistema gerenciador de banco de dados. c) a abstração de dados é a regra de escolha de qual banco de dados é o melhor para cada caso. pois temos diferentes tipos de usuários em um banco de dados. O objetivo é consolidar os conceitos apresentados nesta primeira aula. A alternativa (a) é a correta. A alternativa correta é a (b). • avaliar tecnicamente as propriedades dos bancos dos dados. A atividade dois traz um conceito errôneo que é largamente divulgado. pois apresenta somente sistemas gerenciadores de banco de dados. A resposta estará condicionada pela escolha dos SGBDs.aula 1 • Banco de dados 4. entraremos em um assunto relacionado à representação da informação que está armazenada no banco de dados. 3. ed. 1999. Abraham. ou seja. o modelo de dados. São Paulo: Makron Books. Anotações unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 379 . Sistema de bancos de dados.. Após você ser apresentado aos conceitos fundamentais de bancos de dados. SUDARSHAN.aula 1 • Banco de dados SILBERSCHATZ. S. KORTH. Henry F. aula 1 • Banco de dados 380 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . como uma pessoa. por exemplo. • modelar especificações de requisitos. ao final desta aula. Uma entidade é representada por um retângulo.1 Conceitos e representação Uma entidade representa a caracterização de um elemento do mundo real.aula 2 • Banco de dados Aula 2 Modelo Entidade Relacionamento Toda generalização é perigosa. Tal representação é fundamental para que o nosso sistema saiba como tratar todas as informações que vamos precisar. Nesta aula veremos sobre como representar uma relação entre entidades e seus atributos. (Alexandre Dumas Filho) Esperamos que. independente de implementação em banco de dados. Uma entidade pode ser vista como um unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 381 . é necessário que utilizemos uma forma clara de representar o que queremos. Inclusive esta. Chen criou com isso uma descrição abstrata. Peter Chen apresentou o Modelo entidade relacionamento. Para que possamos armazenar nossos dados de forma eficiente. Para entendermos como representar é necessário conhecermos os conceitos fundamentais de banco dados. A idéia era criar uma metodologia que representasse os dados do mundo real por meio da definição de um conjunto de entidades e do relacionamento existente entre essas entidades. como ilustrado na figura um. dos dados que serão armazenados. 2. você seja capaz de: • identificar os principais componentes do modelo entidade relacionamento. Em 1976. etc. Exemplos de entidade podem ser clientes. O relacionamento é a associação entre entidades. Um exemplo é visto na figura 3.aula 2 • Banco de dados conjunto de objetos da realidade modelada. Figura 1: Exemplo de uma entidade pessoa Uma entidade tem características individuais definidas por meio de seus atributos. A representação é feita por um diagrama de ocorrências. A figura 2 exemplifica isso. sobre os quais se deseja manter informações no banco de dados. Uma Pessoa pode possuir os atributos Nome. 382 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . produtos. por exemplo. quais alunos estão associados matriculados em quais cursos. Figura 3: Relacionamento entre as entidades aluno e curso A ocorrência (ou instância) de relacionamento são associações particulares dentro de um conjunto. tem-se a instanciação (ou exemplificação) de uma ocorrência de uma entidade. Figura 2: Exemplo de entidade com seus atributos A ocorrência (ou instância) de uma entidade é um objeto particular. Cada vez que são atribuídos valores para os atributos de um conjunto de entidades. Por exemplo. uma determinada pessoa: João. Por exemplo: um par específico formado por uma determinada ocorrência da entidade aluno e por uma determinada ocorrência da entidade curso. cursos. CPF. Sexo. relacionamentos quaternários (grau quatro). vamos analisar um exemplo. curso e distribuidor O auto-relacionamento é o relacionamento entre ocorrências de uma mesma entidade. indicando relacionamentos binários. O papel da entidade no relacionamento é a função que uma instância da entidade cumpre dentro de uma instância do relacionamento. Esses produtos são fornecidos por certos distribuidores. Os relacionamentos do exemplo um têm graus de relacionamento dois.aula 2 • Banco de dados Figura 4: Diagrama de ocorrências Para fixar o conteúdo. Um conjunto de relacionamentos pode ter associado vários conjuntos de entidades. caracterizando relacionamentos ternários (grau três). unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 383 . Exemplo 1: um cliente realiza compra de determinados produtos. Figura 5: Relacionamento entre as entidades cliente. Figura 6: Auto-relacionamento O grau do relacionamento indica quantos conjuntos de entidades estão envolvidos naquele relacionamento. como no caso do telefone. esse atributo é denominado atributo derivado. máximo) de ocorrências de entidade associadas a uma ocorrência da entidade em questão. número. Geralmente. O atributo identificador pode ser chamado. são representados nos DER apenas as cardinalidades máximas. O atributo composto é aquele atributo que tem vários subcampos. Uma chave deve ser mínima. máxima) de relacionamento é o número (mínimo.aula 2 • Banco de dados É importante observar que um relacionamento com grau N > 2 só se justifica se não puder ser decomposto em relacionamentos com graus menores e ainda manter a semântica desejada. Os atributos podem pertencer a uma entidade ou a um relacionamento. também. No exemplo um. no contexto da modelagem em que se encontra. por intermédio do relacionamento. Cada entidade deve ter um identificador. ainda sim. por exemplo. que pode ser obtido pelos valores dos atributos salário/hora e horas-trabalhadas/mês. e. Um exemplo de atributo derivado é o atributo salário. Exemplos de atributos podem ser nome da pessoa e o código do departamento. Um atributo é um dado que é associado a cada ocorrência de uma entidade ou de um relacionamento. como. A cardinalidade (mínima. que é o conjunto de um ou mais atributos. Uma entidade fraca corresponde a um conjunto que. O atributo multivalorado tem mais de um valor para cada entidade que caracteriza. Quando o valor de um atributo é obtido por meio de valores de outros atributos. Por exemplo: para cada relacionamento entre médico e paciente. não tem identificação própria. no máximo. paciente) há. CEP e cidade. de chave. um relacionamento de consulta. O relacionamento pode ter identificador. 384 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . A entidade fraca é denotada por um retângulo duplo. Conjuntos de relacionamentos também podem ter atributos. o par (médico. Um atributo que tem um único valor é denominado de atributo monovalorado. que pode ter vários valores para uma mesma entidade. cujos valores servem para distinguir uma ocorrência da entidade das demais ocorrências da mesma entidade. a composição resultante continua sendo chave. Isso indica quantas ocorrências de uma entidade podem estar associadas a uma determinada ocorrência pelo relacionamento. que poderia ser escrito como rua. Por exemplo: os atributos RG. no sentido de que se a chave for composta. altura e sexo têm apenas um valor para uma entidade particular pessoa. Um exemplo disso é um dependente que não pode existir sem uma entidade pessoa associada. se houver a necessidade de indicar que uma ocorrência de relacionamento diferencia-se das demais ocorrências do mesmo relacionamento pelas ocorrências das entidades que dela participam. endereço. nenhum atributo que a compõe poderá ser retirado. um produto pode ser comprado por vários clientes e um cliente específico deve ter comprado pelo menos um produto. Podemos concluir que o modelo entidade relacionamento representa o mundo real dentro de um banco de dados. esse é um exemplo de que tipo de relacionamento? a) um-para-um b) um-para-muitos unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 385 .aula 2 • Banco de dados Saiba mais Fique atento! Por que concentrar na modelagem? Um dos aspectos mais importantes a ser observado pelos projetistas de banco de dados é que projetar um banco de dado é. 1. de escultura quase semântica. na realidade. O modelo de dados entidade relacionamento baseia-se na percepção de um mundo real constituído de um conjunto de objetos básicos chamados de entidades e de relacionamentos entre esses objetos. os atributos e a forma de representá-los graficamente utilizando-se de cardinalidade. formam uma linguagem reconhecida e digerível pelo computador. caixas e setas que. A essa técnica. Como em um brinquedo de crianças. Ele foi desenvolvido a fim de facilitar o projeto do banco de dados. Se um professor pode lecionar várias disciplinas e uma disciplina pode ser lecionada por apenas um professor. tendo como base as entidades. símbolos. montados. Essa simulação visa a transformar a realidade dos dados e processos da empresa em losangos e retângulos que ilustram as linguagens gráficas disponíveis nas ferramentas e metodologias de hoje. dispomos de um conjunto de estruturas. permitir a especialização de um esquema representando a estrutura lógica global do banco de dados. Isso seria considerado uma boa técnica? 2. chamamos de modelagem de dados. Suponha que você tenha projetado um diagrama entidade relacionamento em que a mesma entidade aparece diversas vezes. um intrigante exercício de simulação de um pedaço do universo da empresa. c) Um funcionário que tem muitos dependentes. ele pode ministrar as disciplinas Algoritmos. Não existe uma resposta previamente correta. Existem alguns casos específicos em que o modelo entidade relacionamento não consegue cobrir a semântica envolvida na descrição de um modelo. Alguns sistemas são mais complexos do que outros e essa atividade promove essa discussão. o João. pois o caminho para se chegar à solução é que vai definir a resposta. a quantidade de instâncias correspondentes da outra entidade que faz parte do relacionamento. cada entidade é caracterizada pelos seus atributos. A atividade três explora a compreensão da aplicação da metodologia na representação dos diversos modelos que existem no nosso mundo real.aula 2 • Banco de dados c) muitos-para-um d) muitos-para-muitos e) recursivo 3. Na modelagem. 386 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . A duplicidade de uma entidade mostra que a modelagem não foi bem feita. deve-se quantificar. Você consegue citar alguns exemplos? 4. a resposta correta é alternativa (b). A atividade dois explora o conceito de cardinalidades. Qual é o exemplo de um relacionamento recursivo? a) Um funcionário que gerencia um departamento. em um determinado momento. João. A alternativa (c) está errada. Se analisarmos pelo lado da entidade disciplina. esse tipo de relacionamento tem grau dois. A atividade um objetiva relacionar o conceito de modelagem a um caso prático. para uma instância de uma entidade. pois entende-se que a entidade dependente tem estrutura diferente da entidade funcionário e a alternativa (a) também está incorreta porque a entidade funcionário tem estrutura diferente da entidade departamento. pois se pensarmos em um professor específico. b) Uma disciplina que é pré-requisito de outra disciplina. A atividade quatro está baseada no conceito de relacionamento recursivo ou auto-relacionamento. em que a mesma entidade participa as duas vezes. A resposta correta é a letra (b). por exemplo. Linguagem de Programação e Banco de dados. Assim. A resposta correta seria algo que conduzisse à reflexão sobre a não validade de duplicidade de entidades. a Matemática só terá um único professor. Para se definir a cardinalidade. Por definição. Após aprender a modelar os dados do seu domínio da aplicação. • modelar especificações de requisitos. você está pronto para implementá-los em um banco de dados. O modelo relacional representa o banco de dados como uma coleção de tabelas e é o principal modelo utilizado. atingiu os objetivos propostos para a aula: • identificar os principais componentes do modelo entidade relacionamento.aula 2 • Banco de dados Se você acertou a resposta dessas atividades. é necessário entender os modelos disponíveis e como eles estão definidos. Para isso. Anotações unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 387 . aula 2 • Banco de dados 388 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . aula 3 • Banco de dados Aula 3 Modelo Relacional Entre a idéia e a realidade habitam as sombras. (T. S. Elliot) Esperamos que, ao final desta aula, você seja capaz de: • reconhecer a estrutura do modelo relacional; • compreender como as restrições permitem manter a integridade do banco de dados. Nosso assunto dessa aula tem sido amplamente apresentado e discutido nas últimas décadas, existindo em praticamente toda literatura sobre banco de dados. Para que possamos entender o modelo relacional, utilizaremos nossos conhecimentos sobre os fundamentos de banco de dados e os conceitos de modelagem de dados, conteúdos presentes na aula dois deste caderno. De uma perspectiva histórica, o modelo de dados relacional é o que mais auxiliou na popularização e nos avanços em banco de dados. Ele tem suas origens em 1970, apresentado por Codd suas características mais marcantes são o formalismo de seu modelo e sua estrutura de dados simples e uniforme. O modelo relacional representa os dados em um banco de dados como uma coleção de relações ou tabelas e é o modelo mais utilizado comercialmente. Nesta aula veremos como os dados são armazenados, ou seja, organizados e como podem ser relacionados com outros dados. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 389 aula 3 • Banco de dados 3.1 Modelo Relacional A estrutura de um banco de dados relacional consiste em uma coleção de tabelas, cada uma das quais com um nome único. No modelo relacional, podemos ver os dados como armazenados em tabelas, chamadas de relações. Uma linha em uma relação representa uma instância com valores definidos entre um conjunto de valores e recebe o nome de tupla. A tupla é composta de valores chamados de atributos. Um atributo pode assumir um valor dentro de um domínio de valores possíveis. O grau de uma relação é o número de atributos que essa relação tem. Para auxiliar nos conceitos, vamos utilizar uma Relação Alunos, exemplificada a seguir. Quadro 1: Relação alunos MATRÍCULA 100 200 201 NOME João Tiago Pedro DATA_NASCIMENTO 25/05/80 01/01/76 03/12/81 CURSO Biologia Matemática Matemática Considerando-se as instâncias da relação Alunos, identifica-se quatro atributos que são: matrícula, nome, data_nascimento e curso. Esses atributos, juntos, formam uma relação de grau quatro, composta de três tuplas. Para identificar uma tupla dentro de uma relação, é necessário o estabelecimento de um ou mais campos como chave dessa relação. No exemplo anterior, o atributo matrícula identifica univocamente uma tupla e pode ser designado como chave da relação. Um esquema de relação R é denotado por R(A1 A2 ... An ), em que R representa o nome da relação e (A1 A2 ... An) é a lista dos atributos que compõem essa relação. No nosso exemplo, a relação alunos tem o esquema alunos (matrícula, nome, data_nascimento, curso). Para cada atributo Ai, existe um conjunto Di denominado domínio de Ai. O domínio determina o tipo e a faixa de valores que um atributo pode assumir. Por exemplo: para o atributo curso, o domínio é dados pelos cursos oferecidos pela instituição na qual o aluno está matriculado. Uma tupla é identificada por uma chave. A superchave de uma relação é um subconjunto de atributos de tuplas, nas quais não existem duas tuplas com os mesmos valores para todos os atributos desse subconjunto. A chave da relação é o menor desses subconjuntos que satisfaça essa propriedade, ou seja, uma chave não pode ter nenhum de seus atributos removidos e ainda continuar sendo uma chave. Considerando a relação alunos, {matrícula} é uma chave (e uma superchave), enquanto {matrícula, curso} é uma superchave, mas não é chave. 390 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins aula 3 • Banco de dados No caso do esquema de relação ter mais do que uma chave, cada uma das chaves é chamada de chave candidata. Denotamos os atributos que formam a chave principal de um esquema da relação sublinhando-os. Quando um esquema da relação tem muitas chaves candidatas, a escolha de uma delas para ser chave principal é feita de forma arbitrária; entretanto, usualmente, é melhor escolher a chave principal com um único atributo ou um pequeno número de atributos. 3.2 Esquemas de Banco de Dados Relacional e Restrições de Integridade Um esquema de banco de dados relacional é um conjunto de esquemas de relação e um conjunto de restrições de integridade. As restrições de integridade são regras que devem ser sempre satisfeitas, em quaisquer das relações do banco de dados. As principais regras são unicidade de chave, integridade da entidade e integridade referencial. A unicidade de chave é uma restrição que protege a duplicidade da chave candidata, não permitindo que ela possa ter o mesmo valor em duas tuplas distintas da mesma relação. A restrição de integridade da entidade não permite que a chave primária aceite o valor nulo em nenhuma tupla da relação e a restrição de integridade referencial refere-se ao conceito de chave estrangeira, sendo usada para manter a consistência entre tuplas de duas relações relacionadas entre si. Por exemplo: supomos que existam duas relações (alunos e cursos) e um relacionamento entre elas. O atributo curso da relação aluno só pode assumir um valor que exista na relação curso. Essa referência é realizada por intermédio da utilização das chaves (estrangeira na relação alunos e primária na relação cursos). As restrições de integridade semântica são especificadas nas regras de negócio que acompanham o banco de dados. Um exemplo pode ser que o salário de um empregado não possa ser maior do que o salário do seu gerente. Porém nem todos os SGBDs relacionais oferecem mecanismos para a especificação dessas restrições. Sempre que operações de atualização (inserir, deletar, modificar) são aplicadas, deve-se verificar as restrições de integridade (chave, entidade e referencial. Saiba mais unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 391 a tabela de relação e o tipo de dado que especificam o tipo de valor que pode aparecer em uma coluna é chamado de domínio. O grau de uma relação é o número de atributos de R. todos os elementos de um conjunto de tuplas são distintos significando que nenhuma tupla pode ter a mesma combinação de valores para todos os seus atributos. • há muitas opções de fornecedores. existem subconjuntos de atributos de uma relação esquema R que garantem que nenhuma tupla de uma relação tenha a mesma combinação de atributos. O modelo relacional representa os dados da base de dados como uma coleção de relações (tabelas. • os dados são recuperados por meio de consultas simples. Normalmente. e R é seu nome. manutenção e manipulação de estruturas de armazenamento de dados. Podemos concluir que o modelo relacional ajuda a manter a ordem dos dados em um banco de dados.aula 3 • Banco de dados Fique atento! O modelo relacional é o mais predominante de todos os modelos de bancos de dados nos sistemas modernos de negócios. Pesquise as 12 leis de Codd. Isso se dá através de regras pré-estabelecidas como chaves e integridade referencial. • SGBD relacionais são produtos maduros e estáveis. Além disso. Uma relação r (ou instância de relação) da relação esquema R é um conjunto de tuplas. Assim uma relação esquema R é um conjunto de atributos (Ai) em que cada um indica o nome do papel de algum domínio D (D = domínio de Ai) na relação esquema R. Na sua terminologia. toda coluna de atributo. Uma relação esquema é utilizada para descrever uma relação. outros motivos são: • facilidade de definição. arquivos de registros). Pela definição. • a conversão entre implementações dos fabricantes é relativamente fácil. • existem padrões ANSI e ISO. Tente relacionar a cada lei um exemplo prático. 392 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . 1. toda linha é chamada de tupla. Esse subconjunto é denominado super-chave da relação esquema R. O modelo objeto-relacional é uma extensão do modelo relacional. A atividade três fixa o conceito de chave estrangeira. eles não têm a obrigatoriedade de ser iguais em tipo e domínio. Codd relaciona as leis que ele aplicou na definição do modelo relacional. garante que duas linhas de uma tabela não tenham valores duplicados. b e d estão corretas. pois. na época que foi proposto o modelo unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 393 . quais as extensões feitas nos modelos relacionais? O objetivo é analisar as propriedades do modelo relacional. O que garante a não duplicidade é a definição de uma restrição sobre o campo. mas isso não é uma obrigatoriedade. A atividade dois visa a fortalecer o conceito de atributo de uma entidade. b) ajuda o SGBD a armazenar os dados com eficiência. mesmo que dois campos tenham o mesmo nome. em que devemos. É aconselhado que os nomes sejam iguais nas duas tabelas. A resposta deve considerar que. implicitamente. bem como o comportamento é definido por meio um conjunto de regras. d) pode ser selecionado com base nas regras de um atributo. É interessante que você estude as leis e faça comparações com outros modelos de dados. Uma restrição de integridade referencial é definida quando a) as duas tabelas relacionadas devem ter colunas de chaves primárias e chaves estrangeiras definidas com o mesmo nome. por meio do relacionamento existente entre as tabelas garantir a integridade dos dados. b) garante que a chave primária não tenha valores duplicados. pois a definição de um tipo de dados traz. o domínio a que esse tipo pertence. c) as duas tabelas relacionadas devem ter colunas de chaves primárias e chaves estrangeiras definidas com o mesmo domínio de dados. c) fornece um conjunto de comportamentos para uma coluna que ajuda o usuário do banco de dados. 4. um tipo de dado: a) restringe os dados que podem ser armazenados em um atributo. Você consegue identificar nas aplicações. Em seu trabalho.aula 3 • Banco de dados 2. A atividade quatro promove uma discussão sobre extensões ao modelo estudado. A atividade um direciona você para o criador do modelo relacional. e) 3. A alternativa correta é a (c). independentes da escolha do tipo de dado. permitindo o suporte a determinados paradigmas da orientação a objetos em um núcleo relacional. para facilitar o entendimento do modelo. As alternativas a. Baseando-se no conceito de atributo. sons. dados numéricos e textuais. Hoje temos outros tipos mais complexos. As discussões anteriores sobre o modelo relacional contemplaram apenas os aspectos estruturais. como imagens. com o propósito de especificar uma consulta sobre a base de dados. atingiu os objetivos propostos para a aula: • reconhecer a estrutura do modelo relacional.aula 3 • Banco de dados relacional. que exigem conceitos de orientação a objetos como herança e tipos abstratos de dados. Essas operações são usadas para selecionar tuplas de uma determinada relação ou para combinar tuplas relacionadas a diversas relações. Agora. a atenção será voltada para a álgebra relacional. • compreender como as restrições permitem manter a integridade do banco de dados. basicamente. Se você acertou a resposta dessas atividades. áudio e aplicações. os bancos de dados manipulavam. Anotações 394 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . que é uma coleção de operações que são utilizadas para manipular relações. ou seja. Podemos definir uma linguagem de consultas como a linguagem utilizada pelo usuário para requisitar dados do banco de dados. • entender que existem formas alternativas de consulta a relações. Em uma linguagem de consultas procedural. Nas linguagens de consultas não-procedurais. trabalhando com conceitos como teoria dos conjuntos matemáticos. ao final desta aula. as linguagens de consulta são de alto nível. têm um poder maior de abstração. É importante conhecer os conceitos de relações. o usuário obtém os dados descrevendo quais são os dados desejados. Para que se possa consultar uma determinada informação. é necessário saber qual esquema adotado para representar e armazenar nossos dados. você seja capaz de: • compreender sentenças de consulta aos dados de relações usando a linguagem da álgebra relacional. atributos e tuplas para continuarmos nosso aprendizado. (Einsten) Esperamos que. Nesta aula veremos como podemos utilizar as diversas funções dentro da álgebra para compreendermos melhor a linguagem de consulta SQL. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 395 . Tipicamente. É fundamental. porém não faça somente as mais simples.aula 4 • Banco de dados Aula 4 Álgebra Relacional Faça as coisas o mais simples que você puder. o usuário indica a seqüência de operações que devem ser executadas no banco de dados para se obter os dados desejados. que você já compreenda os conceitos expostos na aula três. para o entendimento desta aula. ou trabalham no departamento ‘Rh’ e recebem pelo menos $ 4000. b) operações desenvolvidas especificamente para bancos de dados relacionais: seleção.aula 4 • Banco de dados A álgebra relacional é uma linguagem de consultas procedural e consiste em um conjunto de operações que manipulam uma ou duas relações e produzem uma nova relação. projeção.01. junção e funções agregadas. Exemplo 2: Selecionar os empregados que trabalham no departamento ‘Cpd’ e recebem mais de R$ 4000. Tabela 1: Empregado NOME João Francisco Alice Joana Rodolfo RG 123456789 333445555 999887777 987654321 666884444 ADMISSÃO SEXO SALÁRIO 09.55 08.09. 396 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . seleciona um subconjunto de tuplas que satisfaça uma determinada condição de seleção.00 por ano.12. Sintaxe: Exemplo 1: Selecione os empregados que trabalham no departamento CPD.06.45 18. A relação Empregado (a seguir) servirá a base para exemplificarmos algumas de suas operações.1 A operação SELEÇÃO (SELECT) A operação seleção. Podemos dividir suas operações em dois grupos: a) operações da teoria matemática dos conjuntos: união. interseção. diferença e produto cartesiano.31 15.75 20.03.52 M M F F M 3000 4000 2500 4300 3800 RG SUPER 333445555 888665555 987654321 888665555 333445555 DEPARTAMENTO RH RH CPD CPD RH 4. Observe que a relação resultante da operação de seleção tem os mesmos atributos da relação especificada em <nome da relação>. representada pela letra σ.00. 06. O resultado é mostrado na tabela a seguir: NOME João Francisco Alice Joana Rodolfo SALÁRIO 3000 4000 2500 4300 3800 4.12. usando uma única expressão da álgebra relacional.45 20.aula 4 • Banco de dados O resultado é mostrado na tabela a seguir: NOME RG ADMISSÃO SEXO SALÁRIO 08.2 A Operação PROJEÇÃO (PROJECT) A operação PROJEÇÃO seleciona determinadas colunas da relação. cujo código é ‘Cpd’: O resultado é mostrado na tabela a seguir: NOME João Francisco Rodolfo SOBRENOME Silva Souza Nogueira SALÁRIO 3000 4000 3800 unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 397 . Sintaxe: Exemplo 3: Liste o nome e o salário de cada empregado.3 Aninhando Operações As operações podem ser aninhadas. Exemplo 4: Selecionar o nome e o salário de todos os empregados que trabalham no departamento.31 M F 4000 4300 RG SUPER 888665555 888665555 DEPARTAMENTO RH CPD Francisco 333445555 987654321 Joana 4. Exemplo: R ATRIB1 X1 X2 S ATRIB2 Z1 Z2 398 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . ou seja. b) são aplicadas a qualquer número de relações.6 A operação Diferença (DIFFERENCE) É denotada por R – S e tem como resultado uma relação que inclui todas as tuplas que estão em R. 4. As tuplas duplicadas são eliminadas. R-S <> S-R. mas não estão em S. As operações união e interseção apresentam as seguintes propriedades: a) são comutativas. nomeando cada uma delas. 4.5 A operação Interseção (INTERSECTION) É denotada por R ∩ S e tem como resultado uma relação que inclui todas as tuplas que estão em ambas R e S. R ∪ S = S ∪ R e R ∪ S = S ∪ R. em geral.aula 4 • Banco de dados Outra alternativa é criarmos relações resultantes intermediárias. DEP_EMP= σNROD=’Cpd’(EMPREGADO) RESULT ΠNOME.7 A operação Produto Cartesiano É denotada por R X S e tem como resultado a combinação de tuplas de duas relações R e S. resultando em uma relação que tem uma tupla para cada combinação de tuplas – uma de R e outra de S. Observe que. SALARIO (DEP_EMP) 4. 4. A operação diferença não é comutativa. c) são associativas.4 A Operação União (UNION) É denotada por R ∪ S e tem como resultado uma relação que inclui todas as tuplas que estão em R ou em S ou em ambas. ou seja. R ∪ (S ∪ T) = (R ∪ S) ∪ T e R ∪ (S ∪ T) = (R ∪ S) ∪ T. As operações da álgebra relacional são normalmente divididas em dois grupos. A relação resultante contém as colunas das duas tabelas que participaram da junção. mas a popularização dos SGBDR fez com que surgissem novas linguagens consultas de mais alto nível. Atualmente. conceitualmente bem definida e com alto poder de expressão. Concluímos que a álgebra é utilizada para compreendermos como as funções que manipulam os dados funcionam. As operações são UNION. 4. por meio de um ou mais atributos comuns às duas relações. como soma. DIFFERENCE e unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 399 . Foi uma das primeiras linguagens a serem desenvolvidas. a álgebra relacional é apresentada em grande parte dos cursos somente como um conjunto de operadores que podem ser mapeados para outras linguagens de consulta. máximo.aula 4 • Banco de dados RXS A1 X1 X1 X2 X2 C1 Z1 Z2 Z1 Z2 4.8 A operação Junção (JOIN) É denotada por |X| e é utilizada para combinar tuplas de duas relações. com o propósito de especificar uma consulta sobre a base de dados. Existem vantagens em se utilizar a álgebra relacional como linguagem de consulta. como a SQL. mínimo e contagem (de tuplas). INTERSECTION. média. através de suas operações. Fique atento! A álgebra relacional é uma linguagem de consulta a banco de dados relacionais. a álgebra relacional é a base formal dos SGBDs. O primeiro deles inclui um conjunto de operações da teoria de conjuntos. independente de plataforma. Essas operações são usadas para selecionar tuplas de uma determinada relação ou para combinar tuplas relacionadas a diversas relações. A álgebra relacional é uma coleção de operações utilizadas para manipular relações. Além dessas características. uma vez que ela é uma linguagem compacta.9 Funções Agregadas São funções matemáticas sobre coleções de valores do banco de dados. desenvolvida por Codd na década de 1970. O resultado da sentenças R = σ(cpf= 111)(cliente) é: a) criação da relação R com o cpf de todos os clientes. a atividade um promove um comparativo entre a teoria dos conjuntos matemática e o conceito do modelo relacional. Na alternativa (b). A atividade três fixa o conceito do operador de projeção. Project e Join entre outras. tais como: Select. Discuta algumas das consultas em que seja necessário renomear atributos a fim de especificar consultas não ambíguas. portando. É o caso da relação pessoa. Em que elas se assemelham? Em que diferem? 2. com os atributos nome e uf. O objetivo é a fixação dos operadores da álgebra relacional. considere a relação cliente como definida: Cliente (cpf. a sintaxe está aplicada 400 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins .aula 4 • Banco de dados CARTESIAN PRODUCT. A discussão deve explorar o princípio que toda relação é um conjunto de atributos relacionados em uma entidade. nome) 3. 1. O segundo grupo consiste de operações desenvolvidas especificamente para bases de dados relacionais. Para isso. a aplicação das teorias. Compare a álgebra relacional e a teoria dos conjuntos matemática. A consulta que retorna à relação R. b) criação da relação R com todos os dados do cliente que tem cpf = 111. A atividade dois visa a discutir os conflitos que ocorrem quando é necessário manipular relações que têm atributos com os mesmos nomes. mostrando diferentes sentenças em álgebra relacional. com os atributos cpf e nome. Para as questões 3 e 4. c) criação da relação R com o nome do cliente que tem cpf = 111. envolvendo operações sobre conjuntos. composta com o nome de todos os clientes é: a) cliente = Π b) R = Π c) σ(nome=R) (nome) (nome) (R) (cliente) cliente 4. é válido. e da relação cidade. A atividade quatro fixa o conceito do operador de seleção. Anotações unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 401 . • entender que existem formas alternativas de consulta a relações. A alternativa (b) traz a sintaxe corretamente aplicada. Se você acertou a resposta dessas atividades. A álgebra relacional proporciona uma linguagem concisa para representar consultas. Bancos de dados comerciais requerem uma linguagem de consulta mais amigável. estudaremos a SQL. por meio da escolha entre diferentes sentenças. que influenciou praticamente todos os bancos de dados utilizados atualmente. A alternativa (a) apresenta uma inversão dos nomes das relações e a alternativa (c) traz o operador de seleção. As alternativas (a) e (c) confundem a seleção com projeção. Na próxima aula.aula 4 • Banco de dados corretamente. atingiu os objetivos propostos para a aula: • compreender sentenças de consulta aos dados de relações usando a linguagem da álgebra relacional. trabalhando com conceitos como teoria dos conjuntos matemáticos. aula 4 • Banco de dados 402 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . sob a coordenação do professor Dr. entre si. devido à sua simplicidade e ao grande poder de consulta. a Linguagem SQL (“Structured Query Language”) foi criada como uma forma de interface entre os usuários e o primeiro Sistema de Gerenciamento de Bancos de Dados Relacional denominado System R. Vamos aprender como conversar com o banco de dados! Para isso estudaremos uma linguagem que utilizaremos para nos comunicar com a maioria dos bancos de dados existentes hoje. chegamos à SQL. Finalmente. É a mais conhecida linguagem de manipulação de bancos de dados relacionais. Os conceitos do modelo de dados relacional. Desenvolvida e implementada pelo Laboratório de Pesquisas da IBM. que representa o último e grande assunto deste curso. O material foi elaborado com base nas discussões do Grupo de Banco de Dados da Universidade Federal de São Carlos. Para isso. você seja capaz de: • escrever consultas em SQL. ao final desta aula. são fundamentais para o entendimento desta aula. entre os anos de 1964 e 1969. sendo adotada por diversos SGBDs Relacionais existentes comercialmente. estudados na aula três deste caderno. Mauro Biajiz. • entender como a SQL se divide. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 403 . Nesta aula veremos como cada comando SQL funciona e como pode ser empregado. é fundamental que saibamos que ele organiza seus dados na forma de tabelas relacionadas.Aula 5 SQL aula 5 • Banco de dados Esperamos que. ou não. date. • suporte para SQL embutida em novas linguagens. PL/1 (ISO/IEC 6160 de 1979). entre os diversos ambientes. tipos de dados definidos pelo usuário e herança. As sentenças SQL estáticas são definidas por meio do seu código e conver- 404 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . Essa versão tinha alguns conceitos e comandos considerados novos. SQL92 que compreendeu a norma ISO SQL92 (ou SQL2). que compreendeu uma intersecção das implementações SQL da época. um agente SQL tem de solicitar o código cliente SQL para o CONNECT (conectar-se) com algum servidor SQL. C (ISO/IEC 9899 – International Organization for Standardization / International Electrotechnical Commission). mas apenas uma pode estar ativa em um determinado momento.aula 5 • Banco de dados 5. Fortran (ISO 1539 de 1980). time e timestamp. • suporte para novos tipos de dados – blobs. junção cruzada e junção de união. Ada. Entre eles estão: • agentes SQL: definidos como programas ou usuários interativos que produzem sentenças em SQL. incluindo encapsulamento. A linguagem SQL pode ser vista como o middleware entre o cliente e o SGBD Server. • conexões cliente/servidor SQL: para poder executar quaisquer operações com bancos de dados. definida em 1992. e a forma como as sentenças SQL são estruturadas pode ser classificada como sentenças estáticas ou sentenças dinâmicas. É dado suporte a conexões simultâneas (ou sessões).1 Padronização de SQL Diversas tentativas de padronização da SQL foram realizadas. Pascal (ISO/IEC 10206 de 1990) e MUMPS. A versão mais atual da linguagem é denominada SQL3 e tem como características mais importantes as funções SQL objeto. • suporte para tabelas temporárias. Existem diversas várias versões da SQL: SQL89 (ou SQL1). o que facilitou uma conformidade dos produtos existentes para com ela. Os comandos de manipulação de dados podem ser diretamente utilizadas por meio de um ambiente interativo ou indiretamente como uma sub-linguagem embutida (Embedded SQL) em linguagens de aplicação (ou linguagens hospedeiras) como Cobol (ISO 1989 de 1985). externa. sendo pelo menos cinco vezes mais extensa do que a SQL89. possibilitando maior interação entre usuários e os dados. varchar. de modo a criar um conjunto de comandos e operandos de uso comum. métodos. • suporte para operadores de junção – incluindo-se junção interna. e TIMESTAMP. Pode-se pensar na SQL estática como sendo uma forma compilada da linguagem SQL. alterar e remover tabelas e índices. Podem-se encontrar outros tipos reconhecidos pelos compiladores.2E-308 a 1. melhoria do desempenho. os comandos da SQL podem ser divididos em três conjuntos: • Linguagem de Definição de Dados (DDL): inclui comandos para definir. oferecendo flexibilidade máxima em troca da velocidade de execução.j) em que i é o total de casas decimais. Pode-se pensar na SQL dinâmica em tempo real. SMALLINT (0 a 65535).aula 5 • Banco de dados tidas em um plano de acesso na hora da preparação do programa. 5. e j é o total de casas decimais depois do ponto (até 18).17E-38 a 3. atualizar e consultar os dados armazenados nas tabelas. BIT(n) em que n é a quantidade fixa de bits. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 405 . TIME(i) em que i é uma fração de segundo (ex. • Linguagem de Controle de Dados (DCL): inclui comandos para se trabalhar em ambiente multi-usuário.: 67 centésimos de segundo). as sentenças SQL dinâmicas são criadas e emitidas em tempo real. DOUBLE PRECISION (2. TIME que são oito posições no formato hh:mm:ss. VARCHAR (n) onde n é a quantidade máxima de caracteres (até 60000). remover.7E+308). Independente da versão. DECIMAL (i. permitindo estabelecer níveis de segurança e manipular transações.2 Tipos de Dados Os tipos de dados mais usuais são: INTEGER ou INT (-32768 a 32767). FLOAT (-2147483648 a 2147483647). BIT VARYING(n) em que n é a quantidade máxima de bits. Um dos aspectos que pode ser usado para comparação é o fato da SQL estática ser usada para a escrita de programas de transações altamente otimizadas. tendo-se de repetir o processo toda vez que a mesma sentença for executada novamente. Por outro lado.4E+38). REAL (1. e a SQL dinâmica ser mais apropriada para a escrita de utilitários para programação de bancos de dados em geral e para ferramentas frontend com GUI (Graphics User Interface – Interface Gráfica do Usuário) que necessitam criar consultas ad hoc. antes de o seu programa ser rodado. DATE que são dez posições no formato aaaa-mm-dd. contendo como característica. Essa sentença SQL deve ser conhecida. e os objetos de banco de dados têm de existir na hora da pré-compilação dessas sentenças SQL estáticas. CHAR (n) em que n é a quantidade fixa de caracteres (até 60000). • Linguagem de Manipulação de Dados (DML): inclui comandos para inserir. informações sobre as peças que utiliza em cada projeto de veículo e os fornecedores dessas peças. As PEÇAS são identificadas por um número. ou seja. MIN – obtém o menor valor de uma coluna. UPPER – obtém o uppercase do valor. são necessários o nome e o preço atual de cada peça. Os PROJETOS de veículos têm um nome. 5. número de identificação. será adotado o seguinte exemplo: suponha que a empresa construtora necessita armazenar. Para a especificação das compras. BETWEEN CONJUNTURAIS =ANY <ANY >ANY >=ANY <=ANY <>ANY <ALL >ALL <>ALL EXISTS NOT EXISTS IN NOT IN 5. bem como associações entre esses elementos. é necessário o nome dos FORNECEDORES.3 Operadores LóGICOS AND OR NOT + – * / ARITMéTICOS < <= > >= <> = RELACIONAIS LIKE. a duração para a montagem do veículo e o custo de cada veículo (incluindo peças e serviços). A categoria de cada fornecedor é utilizada para indicar a qualidade de seus produtos e serviços. COUNT – obtém a soma da quantidade de linhas analisadas.aula 5 • Banco de dados 5. em seu banco de dados. MAX – obtém o maior valor de uma coluna. bem como a cidade e um número de identificação. O banco de dados deve ser capaz de oferecer respostas precisas sobre as peças. a quantidade de peças fornecidas por uma determinada empresa e utilizadas em um projeto.5 Estudo de Caso Para ilustrar o assunto abordado em seções posteriores. 406 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . sendo utilizada a cor das gavetas onde estão colocadas as peças para uma localização visual mais rápida por parte dos funcionários. SUM – obtém a soma de valores de uma coluna.4 Funções AVG – obtém o valor médio de uma coluna. fornecedores e projetos realizados. Para a emissão correta das notas de compra e dos pagamentos. PeCor) FCateg) PCusto) Quant) Considere também as tabelas a seguir.000 26. PeNome. FNro.aula 5 • Banco de dados Considere que o seguinte esquema relacional foi desenvolvido para suprir as necessidades dos usuários: PEÇA FORNECEDOR PROJETO FORNECE_PARA (PeNro. (PeNro.200 17. que mostram instâncias do banco de dados em um determinado instante.700 21. PNome. PePreco. (PNro. PNro. (FNro. FNome.000 Tabela 4: Fornece_para PeNro PE1 PE2 PE3 FNro F5 F2 F3 F4 PNro P4 P2 P4 P5 Quant 5 1 2 3 PE4 unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 407 .000 37. Tabela 1: Peça PeNro PE1 PE2 PE3 PE4 PE5 PE6 PeNome Cinto Volante Lanterna Limpador Painel Pára-brisa PePreco (dólar) 22 18 14 09 43 56 PeCor Azul Vermelho Preto Amarelo Vermelho ----------- Tabela 2: Fornecedor FNro F1 F2 F3 F4 F5 FNome Plastec C&M Kirurgic Piloto’s Equipament FCidade Campinas São Paulo Campinas Piracicaba São Carlos FCateg B D A A C Tabela 3: Projeto PNro P1 P2 P3 P4 P5 PNome Detroit PEGASUS Alfa SEA PaRAíso PDuracao (mês) 5 3 2 3 1 PCusto (dólar) 43. PDuracao. FCidade. 6 Linguagem de Definição de Dados (DDL) Criar uma tabela e definir suas colunas.aula 5 • Banco de dados PeNro PE5 PE2 PE4 FNro F1 F2 F3 PNro P1 P3 P5 Quant 1 1 2 5. 408 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . Remover um índice unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 409 . Criar um índice para uma tabela. Remover uma tabela e todas as suas tabelas de índices.aula 5 • Banco de dados Alterar uma tabela existente. 7 Linguagem de Manipulação de Dados (DML) a) Atualização do Banco de Dados Inclusão de dados em uma tabela.aula 5 • Banco de dados 5. Remover os dados de uma tabela. 410 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . Atualizar os dados de uma tabela. WHERE .. interseção e obviamente seleção).... unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 411 . Observações: Esse comando se tornou o mais importante da linguagem SQL devido ao seu poder de consulta. diferença.. possibilita consultar uma ou mais tabelas de acordo com critérios estabelecidos. com extrema simplicidade na manipulação das tabelas.aula 5 • Banco de dados b) Pesquisando dados em tabelas O comando SELECT . FROM . de tal modo que diversos ambientes e linguagens de programação estão embutindo esse comando (Select-From-Where) em suas bibliotecas de operações e funções. A possibilidade de utilização das operações relacionais (união. despertou o interesse dos pesquisadores e projetistas de gerenciadores de bancos de dados.. SELECT FROMProjeto WHERE PCusto < 28000 PNome PNome Alfa Sea Paraiso Exemplo 5 (Operador Lógico): obtenha os nomes das peças de cor vermelha e com preço maior que $25. SELECT FROMPeca PeNome PeNome Cinto Volante Lanterna Limpador Painel Exemplo 2 (Where): obtenha o nome e código dos fornecedores de Campinas. SELECT FROMPeca WHERE AND (PeCor = ‘Vermelho’ PePreco > 25) PNome PeNome Painel Exemplo 6 (uso explícito das relações): obtenha o código dos fornecedores para o projeto P5. SELECT WHERE Fornece_para.FNro Fornece_para. FNro FCidade = ‘Campinas’ Fnome Plastec Kirurgic FNro F1 F3 FROM Fornecedor Exemplo 3 (Operador Aritmético): obtenha o nome e a duração em dias de cada projeto. SELECT FROMProjeto PNome. SELECT WHERE FNome. (PDuracao*30) as_Dur_Dias Pnome Detroit Pegasus Alfa Sea Paraíso Dur_Dias 150 90 60 90 30 Exemplo 4 (Operador Relacional): obtenha o nome dos projetos de custo menor que $28000.PNro = ‘P5’ FROMFornece_para FNo F4 F3 412 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins .aula 5 • Banco de dados Exemplo 1: Obtenha os nomes de todas as peças. SELECT FROMProjeto WHERE Utilizando UPPER: SELECT FROMProjeto WHERE Pnome = UPPER(“Pegasus”) PDuracao.FNro F3 F4 Exemplo 8 (Variáveis): obtenha o código das peças de mesma cor.PeNro = Y. testa os valores da coluna e recupera os valores que estão entre um valor mínimo e um valor máximo. Fornece_para Y X. Y.FNro <> Y..PeNro (X.PCusto PNome = “Pegasus” PDuracao -------- PCusto -------- d) Operador BETWEEN .FNro.PCusto PDuracao 3 PCusto 37000 X.PeNro.FNro) FROMFornece_para X. SELECT WHERE AND X. inclusive especificados no BETWEEN..PeNro <> Y.. Exemplo 10 (Between): obtenha o nome dos projetos com preço entre $20000 e $30000.PeNro PE5 PE2 PDuracao. O operador BETWEEN. AND. SELECT WHERE AND c) Operador UPPER O operador UPPER serve para colocar em maiúscula todas as letras de uma determinada coluna.PeNro ) FROMPeca X.. Y. Peca Y X.PeNro = Y.PeNro PE2 PE5 Y. Exemplo 9 (Operador Relacional): obtenha a duração e o custo do projeto de nome Pegasus.aula 5 • Banco de dados Exemplo 7 (Variáveis): obtenha o código dos fornecedores concorrentes entre si...PeNro X.FNro F4 F3 Y.FNro (X.PeNro X. AND ... SELECT FROMProjeto WHERE PCusto BETWEEN 20000 AND 30000 PNome PNome Alfa Sea unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 413 . . $ 22 .. o nome das peças de cor vermelha ou amarela e com preço de $09. O símbolo de sublinhado ( _ ) é usado para representar um único caractere. 40.aula 5 • Banco de dados e) Operador IN O operador IN testa os valores da coluna e recupera somente os valores que estão na lista de valores. especificá-los entre aspas simples. e IS NULL podem ser combinados com o operador de negação NOT. SELECT WHERE FNome FCidade LIKE ‘S%’ FROMFornecedor FNome C&M Equipament Observação: o operador LIKE só pode ser usado com cadeia de caracteres ou com dados gráficos. LIKE. especificados pelo operador IN. Utilizando a negação (NOT) Os operadores BETWEEN. $40 ou $ 90. em ordem crescente de preço. 22.. Exemplo 13 (IS NULL): obtenha o nome das peças que não têm cor. PeNome PeNome Para-brisa 414 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . 18. 90) ) PeNome PeNome Limpador Volante Observação: caso forem usados caracteres ou data na lista.. AND. Exemplo 12 (Like): obtenha o nome dos fornecedores residentes em cidades iniciadas com a letra S. f) Operador LIKE O operador LIKE permite recuperar linha da tabela sem saber exatamente o valor que está sendo procurado. IN. Exemplo 11 (In): obtenha.. O símbolo de percentagem (%) é usado para representar uma cadeia de caracteres de qualquer tamanho (inclusive zero). e não com dados numéricos. O operador IS NULL testa os valores da coluna e recupera somente as linhas da tabela que possuírem o valor null. SELECT FROMPeca WHERE PeCor IS NULL. utilizando para isso os símbolos (%) e ( _ ). SELECT FROMPeca WHERE OR AND ( (PeCor = ‘Vermelho’ PeCor = ‘Amarelo’) PePreco IN (09. $ 18. A cláusula ORDER BY sempre deve aparecer por último no comando SELECT. SELECT FROMPeca WHERE g) Cláusula DISTINCT A cláusula DISTINCT é utilizada para eliminar os valores duplicados na saída (no resultado). $60. $14. os nomes das peças de cor vermelha e com preço maior que $ 15. A ordem do resultado pode aparecer em ordem decrescente (DESC) ou ascendente (ASC) que é default.14. SELECT FROMPeca WHERE AND ORDER BY (PeCor = ‘Vermelho’ PePreco > 15) PePreco DESC PeNome PeNome Painel Volante unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 415 . SELECT DISTINCT PeNro FROM Fornece_para PeNome PE1 PE2 PE3 PE4 PE5 PeNome PePreco NOT IN (09. em ordem decrescente de preço.aula 5 • Banco de dados Operador NOT BETWEEN NOT IN NOT LIKE IS NOT NULL Significado NÃO ENTRE DOIS VALORES ESPECIFICADOS NÃO ENTRE UMA LISTA DE VALORES NÃO ENTRE UM PADRÃO ESPECIFICADO NÃO IGUAL AO VALOR NULL Exemplo 14 (Not): obtenha o nome das peças cujo preço não é $ 09. Exemplo 16 (Order by): obtenha. Exemplo 15 (Distinct): obtenha os código de todas as peças fornecidas.60) PeNome Cinto Volante Painel h) Cláusula ORDER BY A cláusula ORDER BY é utilizada para ordenar (classificar) as linhas da tabela. • Retornam um resultado baseado em um grupo de linhas (ROWS). anterior. c) SUM: retorna a soma dos valores da coluna. 5. • Por padrão todas as linhas (ROWS) da tabela são tratadas com um grupo. duplicadas e nulas.8 Funções para manipular grupos • As funções de grupos servem para manipular um conjunto de linhas (ROWS) da tabela. SELECT GROUP BY PeNro. retorna todas as ocorrências das linhas incluindo. e) MIN: retorna o valor mínimo de uma coluna. PeNro PE1 PE2 PE3 PE4 PE5 5 2 2 5 1 5.aula 5 • Banco de dados i) Cláusula GROUP BY A cláusula GROUP BY referencia uma coluna especificada da tabela relacionada na cláusula FROM e agrupa as linhas com base nos valores iguais dessa coluna. d) MAX: retorna o valor máximo de uma coluna. b) COUNT: retorna o número de ocorrências da expressão.9 Funções de grupo a) AVG: retorna a média dos valores da coluna.1 Cláusula HAVING A cláusula HAVING especifica uma restrição sobre a tabela agrupada. 416 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . SUM (Quant) PeNro FROMFornece_para Observação: a cláusula WHERE só pode ser usada em funções de grupos em casos especiais. não efetuando qualquer tipo de ordenação. • A cláusula GROUP BY é usada para dividir as linhas da tabela em grupos menores. Exemplo 17 (Group By): obtenha a quantidade de cada peça utilizada em todos os projetos. 5. que resultou de uma cláusula GROUP BY. O resultado da cláusula GROUP BY particiona a tabela em um conjunto de grupos. e elimina os grupos que não satisfazem a condição estabelecida. ignorando valores nulos.9. ou coluna. ignorando valores nulos. Usando *. Fornece_para PeNome Cinto Lanterna PeNro. Exemplo 18 (Having): obtenha os códigos das peças que são utilizadas em uma quantidade inferior a cinco unidades na somatória de todos os projetos. SUM (Quant) PeNro SUM (Quant) < 5 FROMFornece_para PeNro PE2 PE3 PE5 2 2 1 Exemplo 20 (Natural Join): obtenha o nome das peças fornecidas que tenham o preço maior que $20.PeNro) FROMPeca. PeCor PeCor <> ‘Vermelho’ FROM(Peca JOIN Fornece_para ON PeNro = PeNro) unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 417 .aula 5 • Banco de dados A cláusula HAVING é usada para especificar a qualidade que um grupo deve ter para ser incluído no resultado. A cláusula HAVING é sempre utilizada junto com a cláusula GROUP BY. SELECT WHERE DISTINCT PeNome. SELECT WHERE PE1 PE2 PE2 PE3 PE4 PE4 PE5 Cinto Volante Volante Lanterna Limpador Limpador Painel DISTINCT PeNome PePreco > 20 PeCor Azul Vermelho Vermelho Preto Amarelo Amarelo Vermelho FROM(Peca NATURAL JOIN Fornece_para) PeNro PeNome PePreço 22 18 18 14 09 09 43 FNro PNro Quant F5 F2 F3 F3 F4 F3 F1 P4 P2 P5 P4 P5 P5 P1 5 1 2 2 3 2 1 PeNome Cinto Painel Exemplo 21 (Equi Join): obtenha o nome das peças fornecidas que não são vermelhas e as suas cores.PeNome (Fornece_para. SELECT GROUP BY HAVING JOINs Exemplo 19 (Join): obtenha o nome das peças utilizadas no projeto P4.PeNro = Peca. O HAVING é especificado sempre após o GROUP BY. SELECT WHERE AND Peca. Ela efetua para os grupos a mesma função que a cláusula WHERE efetua para as linhas.PNro = ‘P4’ Fornece_para. alteração. enfocamos parte da manipulação dos dados. Essa linguagem inclui instruções para definição dos dados.aula 5 • Banco de dados PeNro PeNome PePreço PE1 PE2 PE2 PE3 PE4 PE4 PE5 Cinto Volante Volante Lanterna Limpador Limpador Painel 22 18 18 14 09 09 43 PeCor Azul Vermelho Vermelho Preto Amarelo Amarelo Vermelho FNro PNro Quant F5 F2 F3 F3 F4 F3 F1 P4 P2 P5 P4 P5 P5 P1 5 1 2 2 3 2 1 PeNome Cinto Lanterna Limpador PeCor Azul Preto Amarelo Exemplo 22 (Outer Join): obtenha informações sobre todas as peças. além da definição das estruturas da tabelas. podendo fazer várias formas de combinação de consultas. SELECT * FROM (Peca LEFT OUTER JOIN Fornece_para ON PeNro = PeNro) PeNro PeNome PePreço PE1 PE2 PE2 PE3 PE4 PE4 PE5 PE6 Cinto Volante Volante Lanterna Limpador Limpador Painel Calota 22 18 18 14 09 09 43 70 PeCor Azul Vermelho Vermelho Preto Amarelo Amarelo Vermelho Azul FNro PNro Quant F5 P4 F2 P2 F3 P5 F3 P4 F4 P5 F3 P5 F1 P1 NULL NULL 5 1 2 2 3 2 1 NULL Saiba mais Podemos concluir que a linguagem de consulta SQL é utilizada para manipulação dos dados em uma base de dados. 418 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . remoção e consulta aos dados. A SQL é uma linguagem que foi padronizada para uso em banco de dados. envolvendo a inserção. resultando em informações úteis para serem utilizadas para os mais diversos fins. manipulação dos dados e para controle. Nesta aula. A atividade quatro explora a sintaxe do comando SELECT. A atividade dois provoca uma discussão a respeito de responsabilidades na divisão das tarefas de um banco de dados.000. é usada para retornar: a) o valor do menor elemento de uma coluna. A função de grupo COUNT. b) a somatória dos valores de uma coluna. A alternativa correta é a letra (b). que nesse comando são referenciadas após a palavra SELECT. Um SELECT sem o termo WHERE: a) retorna uma mensagem de erro. Se você acertou a resposta dessas atividades. e a alternativa (b) refere-se a função SUM. A atividade três provoca você a questionar o uso da função de grupo COUNT. A alternativa correta é (c). A resposta correta é: select Pnome from Projeto where PDuração >= 3 and pDuracao <= 5 and PCusto < 40000. Obtenha o nome dos projetos com duração entre três e cinco inclusive e que tem um preço menor que $40. • entender como a SQL se divide.aula 5 • Banco de dados 1. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 419 . b) seleciona todas as linhas de uma tabela. c) a quantidade de elementos de uma coluna. Explique como a padronização de uma linguagem de consulta pode auxiliar o projetista do banco de dados. A alternativa (a) está incorreta porque a cláusula WHERE é opcional para o comando. pois essa função é usada para contar o número de ocorrências de uma coluna. c) seleciona todas as colunas de uma tabela. A alternativa (a) refere-se à função MIN. 4. e a alternativa (c) cita as colunas. A atividade um verifica se você aprendeu a utilizar os comandos SQL de seleção. entre o DBA. atingiu os objetivos propostos para a aula: • escrever consultas em SQL. 3. pois a cláusula WHERE filtra as linhas por algum critério. o programador da aplicação e o projetista do banco de dados. 2. um recurso interessante para poder quebrar consultas complexas em consultas menores. Anotações 420 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins .aula 5 • Banco de dados Explora como criar consultas dentro de outras consultas. 1 Subconsultas (subqueries) Uma subconsulta é uma cláusula SELECT aninhada com outra cláusula SELECT e que retorna um resultado intermediário.PeNro IN ( SELECT DISTINCT Peca. é imprescindível uma introdução à linguagem SQL. 6. permitindo uma maior flexibilidade para alguns casos específicos. Para o entendimento desta aula.PeNome PeNome Limpador unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 421 .aula 6 • Banco de dados Aula 6 SQL: subconsultas Esperamos que. que. como o nome diz. se refere a um comando SELECT que contém um comando SELECT subordinado. e o conhecimento do comando Select. • entender o comportamento de consultas aninhadas. Nosso assunto é uma continuidade da aula anterior. Essa pode ser uma maneira flexível de selecionar os dados. SELECT FROM Peca WHERE Peca. ao final desta aula. Um recurso muito eficaz do SQL é a subconsulta (ou subseleção). que abordamos na aula cinco. Nesta aula veremos como as subconsultas podem ajudar a concentrar melhor as informações para um determinado fim. conteúdo presente na aula quatro deste caderno. você seja capaz de: • escrever subconsultas eficientes em SQL. Exemplo 1 (SubSelect): obtenha o nome das peças utilizadas no projeto P5. PNro IN( SELECT WHERE Projeto.PeNro IN ( Fornece_para.PeNro Fornece_para Fornece_para.PNro Projeto.PNro = ‘P5’) PeNro PE4 Exemplo 2 (SubSelect): obtenha o nome das peças fornecidas pelos fornecedores F4 e F3.FNro = ‘F3’) PeNro PE4 Peca.PeNro Fornece_para Fornece_para.PeNome PeNome Limpador AND Peca.PeNro IN ( PeNro PE3 PE4 Exemplo 3 (SubSelect): obtenha o nome das peças utilizadas nos projetos com duração maior que três meses.FNro = ‘F4’) Fornece_para. SELECT Fornecedor.PeNro FROM Fornece_para WHERE Fornece_para.FNome FROM Fornecedor WHERE EXISTS ( FNome C&M 422 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . SELECT FROM Peca WHERE SELECT FROM WHERE SELECT FROM WHERE Peca.PeNro Fornece_para Fornece_para. SELECT FROMPeca WHERE Peca.PeNro IN ( SELECT FROM WHERE Fornece_para.aula 6 • Banco de dados Fornece_para.PDuração > 3) ) FROMProjeto PNro P1 PeNro PE5 Peca.PeNome PeNome Painel Exemplo 4 (Exists): obtenha os nomes dos fornecedores que fornecem a peça PE2. No exemplo anterior.aula 6 • Banco de dados SELECT FROM WHERE AND * Fornece_para (Fornece_para. no resultado retornam mais de uma linha da tabela. SELECT FROM Peca. maior ou igual (<=) ou diferente (!=). Exemplo 5 (Any): obtenha o nome das peças fornecidas por algum fornecedor de Piracicaba. o resultado é 800.FNro Fornece_para. a) Operadores ANY E ALL Os operadores ANY e ALL são utilizados para subqueries que retornam mais de uma linha da tabela. >=. Obs. o SELECT principal e SELECT interno. menor ou igual (>=).PeNome Peca SELECT FROM WHERE PeNro Fornece_para FNro = ANY ( SELECT WHERE FNro FCidade = ‘Piracicaba’) ) FROMFornecedor PeNro PE4 FNro F4 PeNome Limpador WHERE Peca. <. O SELECT principal é processado usando o valor retornado pelo SELECT interno.PeNro = ‘PE2’) ) 6. O comando SELECT interno é executado primeiro. Obs. maior (<). aplicado ao resultado de uma subconsulta. b) ANY Compara um valor com cada valor da lista de valores que foi retornado pela subquery. produzindo um resultado. se utiliza o operador IN.: b) Sempre que aparecer uma SUBQUERY.FNro = Fornecedor.PeNro IN ( unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 423 . e requerem o uso dos operadores igual (=). !=. <=.2 Como as Subqueries Aninhadas são Processadas Uma subquery é composta por duas cláusulas SELECT. >. em que. menor (>).: a) sempre que o SELECT interno retorna uma linha da tabela podem ser utilizadas os operadores =. e o HAVING. e) Utilização do ORDER BY Não é possível utilizar o ORDER BY em um SELECT interno. Exemplo 6 (All): obtenha o nome das peças não fornecidas por fornecedores de categoria A. c) ALL Compara um valor com todos os valores da lista de valores retornados pela subquery. f) Cláusula HAVING com subqueries aninhadas A cláusula WHERE refere-se a uma linha da tabela. ou seja. FNro FROMFornecedor FCateg = ‘A’ ) ) PeNome Cinto Volante Painel DISTINCT PeNro PeNro PE1 PE2 PE5 FNro F3 F4 424 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . ALL e ANY. a um grupo de linhas especificadas na cláusula GROUP BY. 6. retorna a união de dois SELECTs.: quando a ANY é utilizado. SELECT PeNome FROM Peca WHERE PeNro IN ( SELECT FROM WHERE Fornece_para FNro <>ALL ( SELECT WHERE d) Operador NOT O operador NOT também pode ser utilizado com os operadores IN. a regra é utilizar somente um ORDER BY em uma subquery e este deve ser o último comando do SELECT. não existindo limites. ignorando as linhas duplicadas.1 OPERADORES SET g) UNION A união de duas relações é o conjunto de todas as linhas que estão em uma ou outra relação. ou seja. Aninhamento de subqueries Também é possível aninhar (encadear) várias queries uma dentro da outra. ignorando as duplicada.aula 6 • Banco de dados Obs.2. no SELECT mais externo. freqüentemente a cláusula DISTINCT é utilizada para prevenir que a mesma linha seja selecionada várias vezes. aula 6 • Banco de dados Exemplo 7 (Union): obtenha os códigos das peças com preço menor que $ 20 ou que tenham a cor vermelha. retorna a interseção de dois SELECTs. Exemplo 8 (Intersect): obtenha os códigos das peças com preço menor que $ 20 e que tenham a cor vermelha. SELECT FROM Peca WHERE UNION SELECT FROM Peca WHERE h) INTERSECT A interseção é o conjunto de todas as linhas que estão simultaneamente em ambas as relações. SELECT FROMPeca WHERE INTERSECT SELECT FROMPeca WHERE i) MINUS A diferença é o conjunto de todas as linhas que estão em apenas uma das relações. SELECT FROMPeca WHERE MINUS SELECT FROMPeca WHERE PeCor = ‘Vermelho’ PeNro PePreco < 20 PeNro PeNro PE2 PE3 PE4 PeNro PE2 PE5 PeNro PE3 PE4 PeNro PePreco < 20 PeNro PeCor = ‘Vermelho’ PeNro PE2 PE3 PE4 PeNro PE2 PE3 PE4 PE5 PeNro PE2 PE5 PeNro PePreco < 20 PeNro PeCor = ‘Vermelho’ PeNro PE2 PE3 PE4 PeNro PE2 PeNro PE2 PE5 unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 425 . ou seja. retornam a subtração de dois SELECTs. Exemplo 9 (Minus): obtenha os códigos das peças com preço menor que $ 20 e que não tenham a cor vermelha. ou seja. Concluímos que as subconsultas ajudam a refinar a informação que se dejesa retirar de uma base de dados. A cláusula ORDER BY somente pode ser usada indicando o número da coluna. Nesta aula. Quais os nomes das peças com preço maior que $ 20 e que são fornecidas por empresas de São Paulo. A cláusula ORDER BY deve aparecer no final do comando. Vários SET OPERATORS podem ser utilizados. INTERSECT e MINUS a) b) c) d) e) f) g) h) i) A cláusula SELECT deve selecionar o mesmo número de colunas. As colunas correspondentes devem ter o mesmo tipo de dado. Os operadores UNION. permitindo a quebra de uma consulta complexa em consultas mais simples. As linhas duplicadas são automaticamente eliminados.aula 6 • Banco de dados Saiba mais Fique atento! Regras para utilizar UNION. Obtenha o nome das peças utilizadas no projeto 3. 426 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . escreva as consultas dos números: 1. você aprendeu a escrever subconsultas. 2. Considerando o exemplo da aula passada. ITERSECT e MINUS podem ser utilizados em subqueries. As colunas SELECTs são executadas de cima para baixo. Para indicar a seqüência de execução deve-se utilizar-se parêntese. Os nomes das colunas do primeiro SELECT é que aparecem no resultado. fornecedor where fornecedor. pedindo que você interprete o seu uso. Uma consulta pode ter quantas subconsultas? a) uma b) três c) não tem um limite definido As atividades um e dois visam à fixação do conceito de subconsultas por meio de escrita de comandos de consulta ao banco de dados. A alternativa (c) traz essa resposta. b) é uma função de cálculo de valores.PePreco > 20 and PeNro in (select fornece_para. c) permite ao comando de seleção ser decomposto em consultas mais simples. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 427 .PeNro in (select PeNro from Projeto where pNro = 3) A atividade três explora o conceito de subconsulta. A atividade um tem resposta: select peca.PeNome from peca where peca. A atividade quatro trata do aninhamento de consultas.FNro = fornecedor. As alternativas (a) e (b) trazem definições que não são pertinentes. A priori.FCidade = ‘Sao Paulo’ and fornece_para. Uma subseleção: a) cria uma nova tabela em disco. o número de subconsultas é ilimitado.FNro) A atividade dois tem como resposta: select peca.PeNro from fornece_para. A alternativa correta é (c).PeNome from peca where peca. 4.aula 6 • Banco de dados 3. Na próxima aula. veremos como utilizar esses comandos. Anotações 428 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . Os comandos DCL têm a função de controlar o acesso ao banco de dados e suas transações. atingiu os objetivos propostos para a aula: • escrever subconsultas eficientes em SQL. • entender o comportamento de consultas aninhadas.aula 6 • Banco de dados Se você acertou a resposta dessas atividades. você seja capaz de: • definir os privilégios que cada usuário terá no banco de dados. Nesta aula veremos como cada usuário pode ter acesso diferente à base de dados para obter uma segurança nas informações guardadas. Freqüentemente associa-se a DCL às funções responsáveis pela administração dos usuários. apresentados nas aulas cinco e seis deste caderno.aula 7 • Banco de dados Aula 7 Linguagem de Controle de Dados Esperamos que. a DCL é responsável pelo controle das transações do banco de dados. 7. iniciada com os comandos de definição de dados e os comandos de manipulação de dados. O assunto desta aula fecha uma trilogia sobre a linguagem SQL.1 Privilégios Estabelecer os privilégios dos usuários comuns. Além disso. Além dessas funções. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 429 . dos grupos e das permissões. ao final desta aula. • controlar as transações do banco de dados. É interessante que você tenha fixado os conceitos da aula um. outro conhecimento prévio que se faz necessário é a forma como o banco de dados interage com seus usuários e com os programas que podem estar armazenados em sua estrutura. bem como os comandos da linguagem SQL. 2 Travamentos de Tabelas (Lock) Estabelecer uma restrição momentânea de acesso a uma tabela. 7. 7. 430 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins .aula 7 • Banco de dados Revoga os privilégios de qualquer usuário comum.3 Execução de um Comando SQL Indicar o início de um comando SQL. aula 7 • Banco de dados Indicar o fim de um comando SQL. 7.4 Bloco de Comando Indicar o início e o final de um conjunto de comandos SQL. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 431 . • WAIT/NO WAIT: espera ou não em uma fila até o término das transações concorrentes.aula 7 • Banco de dados 7. Observações: • READ WRITE/READ ONLY: define o motivo do acesso. 432 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . • TABLE STABILITY: não pode escrever sobre esta visão. • ISOLATION LEVEL: determina como a transação age em relação as transações concorrentes.5 Transações Definir os atributos de uma transação. • SNAPSHOT: a transação retém uma visão estática do BD. 7. Rejeitar as operações de uma transação invalidando todas as alterações executadas. Efetivar as operações de uma transação gravando as alterações em disco. Estabelecer o início de uso de um cursor. • RESERVING: reservar previamente as tabelas para evitar o deadlock. • NO RECORD_VERSION: visão alterada apenas quando a última transação terminar. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 433 . Estabelecer o fim de uso de um cursor. No início de todo comando SQL. o cursor se posiciona antes da primeira tupla.6 Cursores Definir um cursor (tipo de variável especial que indica a tupla corrente). • RECORD_VERSION: visão alterada em cada transação encerrada.aula 7 • Banco de dados • READ COMMITED: a transação retém uma visão não estática do BD. 434 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . • RELATIVE i: posiciona i posições adiante da tupla corrente (indicada pelo cursor).aula 7 • Banco de dados Realizar um avanço seqüencial em uma relação. Observações: • ABSOLUTE i: posiciona na i-ésima tupla da relação. aula 7 • Banco de dados 7.7 Procedimentos Armazenados (Stored Procedures) Executar um procedimento. Remover um procedimento que não é internamente utilizado por outro (somente pelo criador do procedimento ou pelo DBA). unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 435 . Definir um procedimento. 8 TRIGGERS (armazenados junto ao Esquema). inclusive. • POSITION número: especifica a ordem de execução de triggers sobre a mesma ação e sobre as mesmas tabelas ou visões. 7. Observações: • ACTIVE: (Default) especifica que a ação do trigger tem efeito. • DELETE\INSERT\UPDATE: especifica a operação que causa a execução do trigger. Definir um trigger. • AFTER: especifica que o trigger é executado depois da operação associada.aula 7 • Banco de dados Visualizar as dependências de um procedimento. O número deve variar entre 0 e 32767. • BEFORE: especifica que o trigger é executado antes da operação associada. • INACTIVE: especifica que a ação do trigger não tem efeito. 436 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . aula 7 • Banco de dados • O menor número executa primeiro. Triggers com os mesmos números são executados em ordem randômica. Observações: • NEW. Alterar um trigger.coluna: novo valor da coluna em uma operação de INSERT ou UPDATE. Default: 0 = primeiro trigger a executar.coluna: velho valor da coluna antes da operação de UPDATE ou DELETE. • OLD. unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 437 . Remover um trigger que não está sendo utilizado (somente pelo criador do procedimento ou pelo DBA). Concluímos que o controle de dados fornece uma maior segurança das informações que são acessadas. além de controlar as transações que ocorrem no banco de dados. 438 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins .aula 7 • Banco de dados Saiba mais Fique atento! O controle de transações é parte fundamental para a garantia da consistência dos dados do banco de dados. controlando o que cada usuário irá acessar com o tipo de permissão destinado a ele. aprendeu a escrever rotinas de código que ficam armazenadas no sistema gerenciador do banco de dados. em banco de dados. Além disso. isso é feito pelo comando GRANT. bem como rotinas que tem ativação automática. pode ser entendido como: a) um comando b) uma permissão de acesso c) uma tabela 4. Analise o funcionamento diário de um banco de dados de algum empreendimento comercial.aula 7 • Banco de dados Nesta aula. 2. usamos o comando: a) create program b) include program c) create procedure O objetivo é verificar se você aprendeu os conceitos da DCL (linguagem de controle dos dados). A atividade dois visa à compreensão de como podemos atribuir permissões de acesso a um determinado usuário. Na linguagem SQL. Podemos criar programas que ficam armazenados dentro do banco de dados. 1. a definir o início e o final das transações e proceder a recuperação em caso de falha. Quando se controla a segurança em banco de dados. A resposta correta para esta questão é: grant select on Empregados to Marcos. A atividade três objetiva a fixar o conceito de privilégio em um banco de dados. Para isso. você aprendeu a atribuir e revogar privilégios dos usuários. uma dos unitins • análise e desenvolvimento de sistemas • 2º PeRÍodo 439 . Quais e para qual finalidade você usaria os procedimentos armazenados e os gatilhos? Cite exemplos. Um privilégio. A atividade um espera que você relacione os conceitos de rotinas armazenadas à uma aplicação real. Como você atribuiria para um usuário chamado MARCOS o acesso somente de leitura da tabela empregados de um determinado esquema de banco de dados? 3. Para isso. é (b). podemos definir rotinas que devem ser executadas.aula 7 • Banco de dados mecanismos de que dispomos é permitir que o usuário tenha acesso somente a determinados dados e funções do banco de dados. A atividade quatro explora o conceito de procedimento armazenado. A alternativa (c) está correta e as alternativas (a) e (b) apresentam sintaxes inexistentes no SQL. A alternativa correta. Anotações 440 2º PeRÍodo • análise e desenvolvimento de sistemas • unitins . Para isso. portanto. Se você acertou a resposta dessas atividades. atingiu os objetivos propostos para a aula: • definir os privilégios que cada usuário terá no banco de dados. que tem como significado a concessão de permissão de acessos. Em SQL. usamos o comando CREATE PROCEDURE. • controlar as transações do banco de dados. usamos uma política de concessão de privilégios.
Copyright © 2024 DOKUMEN.SITE Inc.