Escolar Documentos
Profissional Documentos
Cultura Documentos
Aires Assessoria Editorial Marinalva do Rgo Barros Silva Assessoria Produo Grfica Katia Gomes da Silva Reviso Didtico-Pedaggica Francisco Gilson Rebouas Prto Jnior Reviso Lingstico-Textual Marinalva do Rgo Barros Silva Reviso Digital Helena Carolina Costa e Lima Prestes Projeto Grfico Douglas Donizeti Soares Irenides Teixeira Katia Gomes da Silva Ilustrao Geuvar S. de Oliveira Capa Igor Flvio Sousa EQUIPE FAEL
Crditos
Coordenao Editorial Leocila Aparecida Vieira Assessoria Editorial William Marlos da Costa Reviso Juliana Camargo Horning Lisiane Marcele dos Santos Programao Visual e Diagramao Denise Pires Pierin Ktia Cristina Oliveira dos Santos Rodrigo Santos Sandro Niemicz William Marlos da Costa
Hoje comum referir-se informao como o maior patrimnio de uma empresa. E a informao armazenada nos computadores na forma de dados. Uma das grandes reas da computao e, sem dvidas, uma das mais requisitadas, aquela que cuida das tcnicas de coleta, armazenagem, recuperao e distribuio de dados. Essa rea chamada normalmente de banco de dados, termo que tambm 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 trs frentes principais: construo de software aplicativo para os clientes, utilizando um gerenciador de dados; administrao do gerenciador, que quem autoriza o uso dos diversos conjuntos dos dados armazenados para os diversos usurios (setores e/ou funcionrios da empresa) e se responsabiliza pela manuteno do sistema em operao adequada; e construo dos gerenciadores de dados. A disciplina de Banco de Dados est inserida no currculo de diversos cursos, em reas de conhecimento diferentes, cada um abordando-a de acordo com seu interesse. Por exemplo: um bibliotecrio preocupa-se em catalogar e disponibilizar dados de forma eficiente, enquanto que um bilogo se interessa em armazenar e consultar dados sobre suas pesquisas com protenas e suas funes. Para o pessoal da rea de computao, o interesse diferente, pois so eles os responsveis pela anlise, projeto, implementao e manuteno dos dados. Neste curso, enfocamos a perspectiva do profissional de Anlise e Desenvolvimento de Sistemas, ou seja, vamos estudar os fundamentos para definir, projetar e manipular dados em um banco de dados. Esta disciplina tem carter introdutrio, iniciando com conceitos fundamentais dos bancos de dados, apresentando como distingui-los, model-los e como escrever comandos para definir e consultar informaes. Prof. Eduardo Leal
Apresentao
EMENTA
Banco de dados: caractersticas e conceitos. Modelo de dados. Modelagem de dados. Modelo entidade relacionamento. Modelo relacional. lgebra relacional. Linguagem de consulta SQL (DML, DDL e DCL).
Plano de Ensino
OBJETIVO
Introduzir os conceitos mais relevantes de banco de dados para subsidiar a anlise, o projeto e o desenvolvimento de sistemas de banco de dados.
CONTEDO PROGRAMTICO
Conceitos de banco de dados, sistemas gerenciadores de banco de dados e caracterizao de gerenciadores de banco de dados Conceitos de abstrao de dados Modelos de dados, modelagem de dados, modelo entidade relacionamento, modelo relacional lgebra relacional Linguagem SQL
BIBLIOGRAFIA BSICA
ELMASRI, Ramez. Sistemas de banco de dados: fundamentos e aplicaes. 4. ed. So Paulo: Pearson Prentice Hall, 2005. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. 3. ed. So Paulo: Makron Books, 1999.
BIBLIOGRAFIA COMPLEMENTAR
DATE, Christopher J. Introduo a sistemas de bancos de dados. 8. ed. Rio de Janeiro: Campus, 2004. GILLENSON, Mark L. Fundamentos de sistemas de gerncia de banco de dados. Rio de Janeiro: LTC, 2006. OPEEL, Andy. Banco de dados desmistificado: Guia de Aprendizado. Rio de Janeiro: Alta Books, 2004. RAMAKRISHNAN, R.; GEHRKE, J. Database management systems. 3. ed. Boston: Addison Wesley, 2002. WHALEN, Edward; DELUCA, Steve Adrien. Teach yourself oracle 8 in 21 days. Indianpolis: Sams Publishing, 1998.
371
Aula 1
Introduo aos Bancos de Dados
Dados no so fatos. Fatos no so informao. Informao no conhecimento. Conhecimento no verdade. Verdade no sabedoria. (James A. Autry)
Esperamos que, ao final desta aula, voc seja capaz de: entender o que um banco de dados e as caractersticas de um sistema gerenciador de banco de dados; avaliar tecnicamente as propriedades dos bancos dos dados.
Voc j utilizou vrios bancos de dados. Eles esto presentes em, praticamente, todos os sistemas informatizados das empresas. s vezes, o termo banco de dados usado indiscriminadamente para indicar qualquer sistema que armazena informaes. Para essa primeira aula, necessrio que voc tenha uma noo da terminologia bsica da informtica, como software, memria, arquivos e discos.
O banco de dados um recurso valioso para as organizaes, devido importncia da informao como elemento competitivo. Isso tem levado ao desenvolvimento de uma grande quantidade de conceitos e tcnicas para o eficiente gerenciamento dos dados. Nesta aula, apresentaremos uma introduo aos princpios dos sistemas de bancos de dados.
373
registros relacionados, que so armazenados como uma nica unidade por um sistema operacional. So conceitos parecidos, e a distino entre um banco de dados e um arquivo fica mais clara quando vistas certas propriedades, como: gerenciamento por um sistema gerenciador de banco de dados, as camadas de abstrao de dados e a independncia lgica e fsica dos dados. O sistema gerenciador de banco de dados um software responsvel pela organizao e manipulao dos dados de um banco de dados. Na prxima seo, discutiremos mais sobre ele. As camadas de abstrao de dados permitem que um usurio do banco de dados visualize as informaes que deseja sem ter de, necessariamente, conhecer as estruturas que armazenam esses dados. Em outras palavras, como voc acessar um sistema bancrio em um terminal de auto-atendimento, sem saber em quais tabelas os dados de sua conta esto armazenados. Existem, basicamente, trs camadas de abstrao: a camada fsica, a camada lgica e a camada externa. O que as difere o nvel de abstrao que elas tm do banco de dados. A camada fsica representa diretamente os arquivos de dados do banco de dados, enquanto a camada externa aquela na qual os usurios e aplicaes se conectam e fazem consultas ao banco de dados. A camada lgica fornece o mapeamento entre a camada fsica e a externa. A independncia fsica e a independncia lgica sero discutidas posteriormente.
374
tipo de abstrao utilizada para fornecer essa representao conceitual, apresentando para o usurio o esquema das tabelas, seus relacionamentos e suas chaves de acesso. As vises permitem restringir os dados que cada usurio pode visualizar, ou seja, o usurio no precisa ter acesso aos dados na forma como eles esto armazenados no banco de dados. A viso derivada de um subconjunto de dados do banco de dados e no deve estar explicitamente armazenada. O controle das transaes existe para manter a integridade do banco de dados. Ela deve garantir a atomicidade, a consistncia, o isolamento e a durabilidade das operaes realizadas sobre os dados. O controle de concorrncia permite que aplicaes diferentes acessem concorrentemente (ao mesmo tempo) os mesmos dados. No caso de aplicaes com operaes que fazem modificaes nos dados do banco de dados, situaes crticas podem ocorrer, como deadlock.
375
No nvel interno, a camada fsica contm todos os arquivos de dados que armazenam os dados do banco de dados. Quase todos os SGBDs permitem que o banco de dados seja armazenado em vrios arquivos de dados, os quais podem ser espalhados em muitas unidades fsicas de disco. O objetivo de se armazenar os arquivos em locais diferentes permitir que as unidades de disco possam trabalhar paralelamente, visando a obter o mximo de desempenho. O usurio no precisa saber como os dados esto armazenados nesses arquivos ou mesmo qual arquivo contm o dado de interesse. O SGBD trabalha com o sistema operacional do computador para gerenciar, automaticamente, todas as operaes sobre os arquivos de dados, incluindo as operaes de abertura, fechamento, leitura e gravao. O usurio no deve ter a necessidade de consultar arquivos fsicos de dados ao usar um banco de dados. Isso diferente do que ocorre ao usar planilhas e documentos de texto, quando o usurio precisa saber o nome do arquivo e sua localizao no disco. No nvel conceitual, a camada lgica a uma camada de abstrao, que no tem uma existncia fsica nos arquivos do sistema operacional. Ela existe somente como estruturas de dados abstratas, montadas a partir da camada fsica. Essa camada tambm chamada de esquema. A camada externa a segunda camada de abstrao e composta pelos modos de exibio do usurio e a camada na qual os usurios e os programas aplicativos que acessam o banco de dados se conectam e fazem consultas. A capacidade de alterar a estrutura fsica de arquivos em um banco de dados, sem precisar propagar essa alterao para os usurios e procedimentos existentes, chamada de independncia fsica de dados e permitida pela existncia da separao entre camada fsica e camada lgica do SGBD. A independncia lgica de dados a capacidade de fazer alteraes na camada lgica sem danificar usurios e procedimentos existentes.
Saiba mais
Fique atento! Existe uma grande variedade de empresas fabricantes de SGBD e diferentes caractersticas em seus produtos. A Oracle Corporation define seu banco de dados como uma
376
coleo de arquivos fsicos que so gerenciados por uma instncia de seu produto de software de banco de dados. O Microsoft SQL Server define um banco de dados como uma coleo de dados que tm um proprietrio comum e vrios bancos de dados costumam ser gerenciados por uma nica instncia do software de gerenciamento de banco de dados. O Microsoft Access coloca o banco de dados inteiro em um nico arquivo de dados, de modo que um banco de dados do Access pode ser definido como o arquivo que contm os dados.
Podemos concluir que os bancos de dados so utilizados para armazenar e manipular dados e que estes so organizados de forma que o usurio no se preocupe como os arquivos esto dispostos no sistema operacional, cabendo ao SGBD essa funo.
Nesta primeira aula, voc aprendeu que um sistema gerenciador de banco de dados (SGBD) consiste em uma coleo de dados inter-relacionados e em uma coleo de programas que acessam esses dados. O principal objetivo de um SGBD proporcionar um ambiente que seja eficiente na insero, atualizao e recuperao de dados no banco de dados. Bancos de dados se modificam com o passar do tempo, na medida em que informaes so inseridas e removidas. A instncia o valor das informaes de um banco, em um determinado instante, e esquema o projeto geral do banco de dados.
1. Analise alguns dos SGBDs existentes no mercado e identifique suas principais caractersticas. Verifique quais os recursos eles oferecem e em que diferem dos gerenciadores de arquivos. 2. Costuma-se dizer que a internet um grande banco de dados. Voc concorda com essa definio? Justifique baseado nos requisitos necessrios para a classificao de um banco de dados. 3. Entre os sistemas gerenciadores de bancos de dados disponveis no momento, podemos citar: a) Oracle, Microsoft SQL Server; MySql b) MySql, Microsoft Windows, Oracle c) Orkut, MySql, Microsoft Excel
377
4. A abstrao de dados importante em um banco de dados porque: a) todo usurio do banco de dados tem de conhecer sua implementao para poder us-lo; b) nem todo usurio do banco de dados precisa conhecer a implementao fsica dos arquivos de dados; c) a abstrao de dados a regra de escolha de qual banco de dados o melhor para cada caso.
O objetivo consolidar os conceitos apresentados nesta primeira aula. Na atividade um, espera-se que voc pesquise e reconhea, nos diferentes produtos disponveis no mercado, as caractersticas de sistemas gerenciadores de banco de dados. A resposta estar condicionada pela escolha dos SGBDs, sendo necessrio a consulta a manuais dos fabricantes ou em sitios dos produtos. A atividade dois traz um conceito errneo que largamente divulgado. Os dados armazenados na internet no tm relacionamento entre si e no se pode dizer que a internet um grande banco de dados. A internet um grande repositrio de dados. A atividade trs traz uma relao de vrios programas disponveis no mercado. A alternativa (a) a correta, pois apresenta somente sistemas gerenciadores de banco de dados. A alternativa (b) e (c) esto erradas, pois o programa Microsoft Windows um sistema operacional, o Orkut uma pgina da internet e o Microsoft Excel uma planilha eletrnica. A atividade quatro visa a descobrir qual a compreenso do aluno sobre o conceito de abstrao de dados. A alternativa correta a (b), pois temos diferentes tipos de usurios em um banco de dados. Por exemplo: cabe ao administrador do banco de dados implementar a estrutura fsica dos arquivos. Uma secretria no precisa saber o nome de uma tabela do banco de dados para poder inserir um novo cliente da empresa. Se voc acertou a resposta dessas atividades, atingiu os objetivos propostos para a aula: entender o que um banco de dados e as caractersticas de um sistema gerenciador de banco de dados; avaliar tecnicamente as propriedades dos bancos dos dados.
378
SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. 3. ed. So Paulo: Makron Books, 1999.
Aps voc ser apresentado aos conceitos fundamentais de bancos de dados, entraremos em um assunto relacionado representao da informao que est armazenada no banco de dados, ou seja, o modelo de dados.
Anotaes
379
380
Aula 2
Modelo Entidade Relacionamento
Toda generalizao perigosa. Inclusive esta. (Alexandre Dumas Filho)
Esperamos que, ao final desta aula, voc seja capaz de: identificar os principais componentes do modelo entidade relacionamento; modelar especificaes de requisitos.
Para que possamos armazenar nossos dados de forma eficiente, necessrio que utilizemos uma forma clara de representar o que queremos. Tal representao fundamental para que o nosso sistema saiba como tratar todas as informaes que vamos precisar. Para entendermos como representar necessrio conhecermos os conceitos fundamentais de banco dados.
Em 1976, Peter Chen apresentou o Modelo entidade relacionamento. A idia era criar uma metodologia que representasse os dados do mundo real por meio da definio de um conjunto de entidades e do relacionamento existente entre essas entidades. Chen criou com isso uma descrio abstrata, independente de implementao em banco de dados, dos dados que sero armazenados. Nesta aula veremos sobre como representar uma relao entre entidades e seus atributos.
381
conjunto de objetos da realidade modelada, sobre os quais se deseja manter informaes no banco de dados. Exemplos de entidade podem ser clientes, produtos, cursos, etc. Figura 1: Exemplo de uma entidade pessoa
Uma entidade tem caractersticas individuais definidas por meio de seus atributos. Uma Pessoa pode possuir os atributos Nome, CPF, Sexo. Cada vez que so atribudos valores para os atributos de um conjunto de entidades, tem-se a instanciao (ou exemplificao) de uma ocorrncia de uma entidade. A figura 2 exemplifica isso. Figura 2: Exemplo de entidade com seus atributos
A ocorrncia (ou instncia) de uma entidade um objeto particular; por exemplo, uma determinada pessoa: Joo. O relacionamento a associao entre entidades. Por exemplo, quais alunos esto associados matriculados em quais cursos. Um exemplo visto na figura 3. Figura 3: Relacionamento entre as entidades aluno e curso
A ocorrncia (ou instncia) de relacionamento so associaes particulares dentro de um conjunto. Por exemplo: um par especfico formado por uma determinada ocorrncia da entidade aluno e por uma determinada ocorrncia da entidade curso. A representao feita por um diagrama de ocorrncias.
382
Para fixar o contedo, vamos analisar um exemplo. Exemplo 1: um cliente realiza compra de determinados produtos. Esses produtos so fornecidos por certos distribuidores. Figura 5: Relacionamento entre as entidades cliente, curso e distribuidor
O auto-relacionamento o relacionamento entre ocorrncias de uma mesma entidade. O papel da entidade no relacionamento a funo que uma instncia da entidade cumpre dentro de uma instncia do relacionamento. Figura 6: Auto-relacionamento
O grau do relacionamento indica quantos conjuntos de entidades esto envolvidos naquele relacionamento. Os relacionamentos do exemplo um tm graus de relacionamento dois, indicando relacionamentos binrios. Um conjunto de relacionamentos pode ter associado vrios conjuntos de entidades, caracterizando relacionamentos ternrios (grau trs), relacionamentos quaternrios (grau quatro).
383
importante observar que um relacionamento com grau N > 2 s se justifica se no puder ser decomposto em relacionamentos com graus menores e ainda manter a semntica desejada. Conjuntos de relacionamentos tambm podem ter atributos. A cardinalidade (mnima, mxima) de relacionamento o nmero (mnimo, mximo) de ocorrncias de entidade associadas a uma ocorrncia da entidade em questo, por intermdio do relacionamento. Isso indica quantas ocorrncias de uma entidade podem estar associadas a uma determinada ocorrncia pelo relacionamento. No exemplo um, um produto pode ser comprado por vrios clientes e um cliente especfico deve ter comprado pelo menos um produto. Geralmente, so representados nos DER apenas as cardinalidades mximas. Um atributo um dado que associado a cada ocorrncia de uma entidade ou de um relacionamento. Exemplos de atributos podem ser nome da pessoa e o cdigo do departamento. Os atributos podem pertencer a uma entidade ou a um relacionamento. Um atributo que tem um nico valor denominado de atributo monovalorado. Por exemplo: os atributos RG, altura e sexo tm apenas um valor para uma entidade particular pessoa. O atributo multivalorado tem mais de um valor para cada entidade que caracteriza, como no caso do telefone, que pode ter vrios valores para uma mesma entidade. O atributo composto aquele atributo que tem vrios subcampos, como, por exemplo, endereo, que poderia ser escrito como rua, nmero, CEP e cidade. Quando o valor de um atributo obtido por meio de valores de outros atributos, esse atributo denominado atributo derivado. Um exemplo de atributo derivado o atributo salrio, que pode ser obtido pelos valores dos atributos salrio/hora e horas-trabalhadas/ms. Cada entidade deve ter um identificador, que o conjunto de um ou mais atributos, cujos valores servem para distinguir uma ocorrncia da entidade das demais ocorrncias da mesma entidade. O atributo identificador pode ser chamado, tambm, de chave. Uma chave deve ser mnima, no sentido de que se a chave for composta, nenhum atributo que a compe poder ser retirado, e, ainda sim, a composio resultante continua sendo chave. O relacionamento pode ter identificador, se houver a necessidade de indicar que uma ocorrncia de relacionamento diferencia-se das demais ocorrncias do mesmo relacionamento pelas ocorrncias das entidades que dela participam. Por exemplo: para cada relacionamento entre mdico e paciente, o par (mdico, paciente) h, no mximo, um relacionamento de consulta. Uma entidade fraca corresponde a um conjunto que, no contexto da modelagem em que se encontra, no tem identificao prpria. Um exemplo disso um dependente que no pode existir sem uma entidade pessoa associada. A entidade fraca denotada por um retngulo duplo.
384
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 , na realidade, um intrigante exerccio de simulao de um pedao do universo da empresa. Como em um brinquedo de crianas, dispomos de um conjunto de estruturas, smbolos, caixas e setas que, montados, formam uma linguagem reconhecida e digervel pelo computador. Essa simulao visa a transformar a realidade dos dados e processos da empresa em losangos e retngulos que ilustram as linguagens grficas disponveis nas ferramentas e metodologias de hoje. A essa tcnica, de escultura quase semntica, chamamos de modelagem de dados.
Podemos concluir que o modelo entidade relacionamento representa o mundo real dentro de um banco de dados, tendo como base as entidades, os atributos e a forma de represent-los graficamente utilizando-se de cardinalidade.
O modelo de dados entidade relacionamento baseia-se na percepo de um mundo real constitudo de um conjunto de objetos bsicos chamados de entidades e de relacionamentos entre esses objetos. Ele foi desenvolvido a fim de facilitar o projeto do banco de dados, permitir a especializao de um esquema representando a estrutura lgica global do banco de dados.
1. Suponha que voc tenha projetado um diagrama entidade relacionamento em que a mesma entidade aparece diversas vezes. Isso seria considerado uma boa tcnica? 2. Se um professor pode lecionar vrias disciplinas e uma disciplina pode ser lecionada por apenas um professor, esse um exemplo de que tipo de relacionamento? a) um-para-um b) um-para-muitos
385
c)
muitos-para-um
d) muitos-para-muitos e) recursivo 3. Existem alguns casos especficos em que o modelo entidade relacionamento no consegue cobrir a semntica envolvida na descrio de um modelo. Voc consegue citar alguns exemplos? 4. Qual o exemplo de um relacionamento recursivo? a) Um funcionrio que gerencia um departamento. b) Uma disciplina que pr-requisito de outra disciplina. c) Um funcionrio que tem muitos dependentes.
A atividade um objetiva relacionar o conceito de modelagem a um caso prtico. A resposta correta seria algo que conduzisse reflexo sobre a no validade de duplicidade de entidades. Na modelagem, cada entidade caracterizada pelos seus atributos. A duplicidade de uma entidade mostra que a modelagem no foi bem feita. A atividade dois explora o conceito de cardinalidades. Para se definir a cardinalidade, deve-se quantificar, para uma instncia de uma entidade, a quantidade de instncias correspondentes da outra entidade que faz parte do relacionamento. A resposta correta a letra (b), pois se pensarmos em um professor especfico, por exemplo, Joo, ele pode ministrar as disciplinas Algoritmos, Linguagem de Programao e Banco de dados. Se analisarmos pelo lado da entidade disciplina, a Matemtica s ter um nico professor, o Joo, em um determinado momento. A atividade trs explora a compreenso da aplicao da metodologia na representao dos diversos modelos que existem no nosso mundo real. Alguns sistemas so mais complexos do que outros e essa atividade promove essa discusso. No existe uma resposta previamente correta, pois o caminho para se chegar soluo que vai definir a resposta. A atividade quatro est baseada no conceito de relacionamento recursivo ou auto-relacionamento. Por definio, esse tipo de relacionamento tem grau dois, em que a mesma entidade participa as duas vezes. Assim, a resposta correta alternativa (b). A alternativa (c) est errada, pois entende-se que a entidade dependente tem estrutura diferente da entidade funcionrio e a alternativa (a) tambm est incorreta porque a entidade funcionrio tem estrutura diferente da entidade departamento.
386
Se voc acertou a resposta dessas atividades, atingiu os objetivos propostos para a aula: identificar os principais componentes do modelo entidade relacionamento; modelar especificaes de requisitos.
Aps aprender a modelar os dados do seu domnio da aplicao, voc est pronto para implement-los em um banco de dados. Para isso, necessrio entender os modelos disponveis e como eles esto definidos. O modelo relacional representa o banco de dados como uma coleo de tabelas e o principal modelo utilizado.
Anotaes
387
388
Aula 3
Modelo Relacional
Entre a idia 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 restries permitem manter a integridade do banco de dados.
Nosso assunto dessa aula tem sido amplamente apresentado e discutido nas ltimas dcadas, 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, contedos presentes na aula dois deste caderno.
De uma perspectiva histrica, o modelo de dados relacional o que mais auxiliou na popularizao e nos avanos em banco de dados. Ele tem suas origens em 1970, apresentado por Codd suas caractersticas mais marcantes so 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 coleo de relaes ou tabelas e o modelo mais utilizado comercialmente. Nesta aula veremos como os dados so armazenados, ou seja, organizados e como podem ser relacionados com outros dados.
389
NOME
Joo Tiago Pedro
DATA_NASCIMENTO
25/05/80 01/01/76 03/12/81
CURSO
Biologia Matemtica Matemtica
Considerando-se as instncias da relao Alunos, identifica-se quatro atributos que so: matrcula, nome, data_nascimento e curso. Esses atributos, juntos, formam uma relao de grau quatro, composta de trs tuplas. Para identificar uma tupla dentro de uma relao, necessrio o estabelecimento de um ou mais campos como chave dessa relao. No exemplo anterior, o atributo matrcula identifica univocamente uma tupla e pode ser designado como chave da relao. Um esquema de relao R denotado por R(A1 A2 ... An ), em que R representa o nome da relao e (A1 A2 ... An) a lista dos atributos que compem essa relao. No nosso exemplo, a relao alunos tem o esquema alunos (matrcula, nome, data_nascimento, curso). Para cada atributo Ai, existe um conjunto Di denominado domnio de Ai. O domnio determina o tipo e a faixa de valores que um atributo pode assumir. Por exemplo: para o atributo curso, o domnio dados pelos cursos oferecidos pela instituio na qual o aluno est matriculado. Uma tupla identificada por uma chave. A superchave de uma relao um subconjunto de atributos de tuplas, nas quais no existem duas tuplas com os mesmos valores para todos os atributos desse subconjunto. A chave da relao o menor desses subconjuntos que satisfaa essa propriedade, ou seja, uma chave no pode ter nenhum de seus atributos removidos e ainda continuar sendo uma chave. Considerando a relao alunos, {matrcula} uma chave (e uma superchave), enquanto {matrcula, curso} uma superchave, mas no chave.
390
No caso do esquema de relao 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 relao sublinhando-os. Quando um esquema da relao tem muitas chaves candidatas, a escolha de uma delas para ser chave principal feita de forma arbitrria; entretanto, usualmente, melhor escolher a chave principal com um nico atributo ou um pequeno nmero de atributos.
Saiba mais
391
Fique atento! O modelo relacional o mais predominante de todos os modelos de bancos de dados nos sistemas modernos de negcios. Alm disso, outros motivos so: facilidade de definio, manuteno e manipulao de estruturas de armazenamento de dados; os dados so recuperados por meio de consultas simples; existem padres ANSI e ISO; h muitas opes de fornecedores; a converso entre implementaes dos fabricantes relativamente fcil; SGBD relacionais so produtos maduros e estveis.
Podemos concluir que o modelo relacional ajuda a manter a ordem dos dados em um banco de dados. Isso se d atravs de regras pr-estabelecidas como chaves e integridade referencial.
O modelo relacional representa os dados da base de dados como uma coleo de relaes (tabelas, arquivos de registros). Na sua terminologia, toda linha chamada de tupla, toda coluna de atributo, a tabela de relao e o tipo de dado que especificam o tipo de valor que pode aparecer em uma coluna chamado de domnio. Assim uma relao esquema R um conjunto de atributos (Ai) em que cada um indica o nome do papel de algum domnio D (D = domnio de Ai) na relao esquema R. Uma relao esquema utilizada para descrever uma relao, e R seu nome. O grau de uma relao o nmero de atributos de R. Uma relao r (ou instncia de relao) da relao esquema R um conjunto de tuplas. Pela definio, todos os elementos de um conjunto de tuplas so distintos significando que nenhuma tupla pode ter a mesma combinao de valores para todos os seus atributos. Normalmente, existem subconjuntos de atributos de uma relao esquema R que garantem que nenhuma tupla de uma relao tenha a mesma combinao de atributos. Esse subconjunto denominado super-chave da relao esquema R.
392
2. Baseando-se no conceito de atributo, um tipo de dado: a) restringe os dados que podem ser armazenados em um atributo; b) ajuda o SGBD a armazenar os dados com eficincia; c) fornece um conjunto de comportamentos para uma coluna que ajuda o usurio do banco de dados; garante que duas linhas de uma tabela no tenham valores duplicados.
3. Uma restrio de integridade referencial definida quando a) as duas tabelas relacionadas devem ter colunas de chaves primrias e chaves estrangeiras definidas com o mesmo nome. b) garante que a chave primria no tenha valores duplicados. c) as duas tabelas relacionadas devem ter colunas de chaves primrias e chaves estrangeiras definidas com o mesmo domnio de dados.
4. O modelo objeto-relacional uma extenso do modelo relacional, permitindo o suporte a determinados paradigmas da orientao a objetos em um ncleo relacional. Voc consegue identificar nas aplicaes, quais as extenses feitas nos modelos relacionais?
O objetivo analisar as propriedades do modelo relacional. A atividade um direciona voc para o criador do modelo relacional. Em seu trabalho, Codd relaciona as leis que ele aplicou na definio do modelo relacional. interessante que voc estude as leis e faa comparaes com outros modelos de dados. A atividade dois visa a fortalecer o conceito de atributo de uma entidade. As alternativas a, b e d esto corretas, pois a definio de um tipo de dados traz, implicitamente, o domnio a que esse tipo pertence. O que garante a no duplicidade a definio de uma restrio sobre o campo, bem como o comportamento definido por meio um conjunto de regras, independentes da escolha do tipo de dado. A atividade trs fixa o conceito de chave estrangeira, em que devemos, por meio do relacionamento existente entre as tabelas garantir a integridade dos dados. A alternativa correta a (c), pois, mesmo que dois campos tenham o mesmo nome, eles no tm a obrigatoriedade de ser iguais em tipo e domnio. aconselhado que os nomes sejam iguais nas duas tabelas, para facilitar o entendimento do modelo, mas isso no uma obrigatoriedade. A atividade quatro promove uma discusso sobre extenses ao modelo estudado. A resposta deve considerar que, na poca que foi proposto o modelo
393
relacional, os bancos de dados manipulavam, basicamente, dados numricos e textuais. Hoje temos outros tipos mais complexos, como imagens, sons, udio e aplicaes, que exigem conceitos de orientao a objetos como herana e tipos abstratos de dados. Se voc acertou a resposta dessas atividades, atingiu os objetivos propostos para a aula: reconhecer a estrutura do modelo relacional; compreender como as restries permitem manter a integridade do banco de dados.
As discusses anteriores sobre o modelo relacional contemplaram apenas os aspectos estruturais. Agora, a ateno ser voltada para a lgebra relacional, que uma coleo de operaes que so utilizadas para manipular relaes. Essas operaes so usadas para selecionar tuplas de uma determinada relao ou para combinar tuplas relacionadas a diversas relaes, com o propsito de especificar uma consulta sobre a base de dados.
Anotaes
394
Aula 4
lgebra Relacional
Faa as coisas o mais simples que voc puder, porm no faa somente as mais simples. (Einsten)
Esperamos que, ao final desta aula, voc seja capaz de: compreender sentenas de consulta aos dados de relaes usando a linguagem da lgebra relacional; entender que existem formas alternativas de consulta a relaes, trabalhando com conceitos como teoria dos conjuntos matemticos.
Para que se possa consultar uma determinada informao, necessrio saber qual esquema adotado para representar e armazenar nossos dados. fundamental, para o entendimento desta aula, que voc j compreenda os conceitos expostos na aula trs. importante conhecer os conceitos de relaes, atributos e tuplas para continuarmos nosso aprendizado.
Podemos definir uma linguagem de consultas como a linguagem utilizada pelo usurio para requisitar dados do banco de dados. Tipicamente, as linguagens de consulta so de alto nvel, ou seja, tm um poder maior de abstrao. Em uma linguagem de consultas procedural, o usurio indica a seqncia de operaes que devem ser executadas no banco de dados para se obter os dados desejados. Nas linguagens de consultas no-procedurais, o usurio obtm os dados descrevendo quais so os dados desejados. Nesta aula veremos como podemos utilizar as diversas funes dentro da lgebra para compreendermos melhor a linguagem de consulta SQL.
395
A lgebra relacional uma linguagem de consultas procedural e consiste em um conjunto de operaes que manipulam uma ou duas relaes e produzem uma nova relao. Podemos dividir suas operaes em dois grupos: a) operaes da teoria matemtica dos conjuntos: unio, interseo, diferena e produto cartesiano; b) operaes desenvolvidas especificamente para bancos de dados relacionais: seleo, projeo, juno e funes agregadas. A relao Empregado (a seguir) servir a base para exemplificarmos algumas de suas operaes. Tabela 1: Empregado NOME Joo Francisco Alice Joana Rodolfo RG
123456789 333445555 999887777 987654321 666884444
RG SUPER
333445555 888665555 987654321 888665555 333445555
DEPARTAMENTO
RH RH CPD CPD RH
Observe que a relao resultante da operao de seleo tem os mesmos atributos da relao especificada em <nome da relao>. Exemplo 2: Selecionar os empregados que trabalham no departamento Cpd e recebem mais de R$ 4000,00 por ano, ou trabalham no departamento Rh e recebem pelo menos $ 4000,00.
396
RG SUPER
888665555 888665555
DEPARTAMENTO
RH CPD
SALRIO
3000 4000 2500 4300 3800
SOBRENOME
Silva Souza Nogueira
SALRIO
3000 4000 3800
397
Outra alternativa criarmos relaes resultantes intermedirias, nomeando cada uma delas. DEP_EMP= NROD=Cpd(EMPREGADO) RESULT NOME, SALARIO (DEP_EMP)
S ATRIB2
Z1 Z2
398
RXS A1
X1 X1 X2 X2
C1
Z1 Z2 Z1 Z2
Fique atento! A lgebra relacional uma linguagem de consulta a banco de dados relacionais, desenvolvida por Codd na dcada de 1970. Foi uma das primeiras linguagens a serem desenvolvidas, mas a popularizao dos SGBDR fez com que surgissem novas linguagens consultas de mais alto nvel, como a SQL. Atualmente, a lgebra relacional apresentada em grande parte dos cursos somente como um conjunto de operadores que podem ser mapeados para outras linguagens de consulta. Existem vantagens em se utilizar a lgebra relacional como linguagem de consulta, uma vez que ela uma linguagem compacta, independente de plataforma, conceitualmente bem definida e com alto poder de expresso. Alm dessas caractersticas, a lgebra relacional a base formal dos SGBDs.
Conclumos que a lgebra utilizada para compreendermos como as funes que manipulam os dados funcionam, atravs de suas operaes.
A lgebra relacional uma coleo de operaes utilizadas para manipular relaes. Essas operaes so usadas para selecionar tuplas de uma determinada relao ou para combinar tuplas relacionadas a diversas relaes, com o propsito de especificar uma consulta sobre a base de dados. As operaes da lgebra relacional so normalmente divididas em dois grupos. O primeiro deles inclui um conjunto de operaes da teoria de conjuntos. As operaes so UNION, INTERSECTION, DIFFERENCE e
399
CARTESIAN PRODUCT. O segundo grupo consiste de operaes desenvolvidas especificamente para bases de dados relacionais, tais como: Select, Project e Join entre outras.
1. Compare a lgebra relacional e a teoria dos conjuntos matemtica. Em que elas se assemelham? Em que diferem? 2. Discuta algumas das consultas em que seja necessrio renomear atributos a fim de especificar consultas no ambguas. Para as questes 3 e 4, considere a relao cliente como definida: Cliente (cpf, nome) 3. A consulta que retorna relao R, composta com o nome de todos os clientes : a) cliente = b) R = c)
(nome=R) (nome) (nome)
(R)
(cliente)
cliente
4. O resultado da sentenas R = (cpf= 111)(cliente) : a) criao da relao R com o cpf de todos os clientes; b) criao da relao R com todos os dados do cliente que tem cpf = 111; c) criao da relao R com o nome do cliente que tem cpf = 111.
O objetivo a fixao dos operadores da lgebra relacional. Para isso, a atividade um promove um comparativo entre a teoria dos conjuntos matemtica e o conceito do modelo relacional. A discusso deve explorar o princpio que toda relao um conjunto de atributos relacionados em uma entidade, vlido, portando, a aplicao das teorias, envolvendo operaes sobre conjuntos. A atividade dois visa a discutir os conflitos que ocorrem quando necessrio manipular relaes que tm atributos com os mesmos nomes. o caso da relao pessoa, com os atributos cpf e nome, e da relao cidade, com os atributos nome e uf. A atividade trs fixa o conceito do operador de projeo, mostrando diferentes sentenas em lgebra relacional. Na alternativa (b), a sintaxe est aplicada
400
corretamente. A alternativa (a) apresenta uma inverso dos nomes das relaes e a alternativa (c) traz o operador de seleo. A atividade quatro fixa o conceito do operador de seleo, por meio da escolha entre diferentes sentenas. A alternativa (b) traz a sintaxe corretamente aplicada. As alternativas (a) e (c) confundem a seleo com projeo. Se voc acertou a resposta dessas atividades, atingiu os objetivos propostos para a aula: compreender sentenas de consulta aos dados de relaes usando a linguagem da lgebra relacional; entender que existem formas alternativas de consulta a relaes, trabalhando com conceitos como teoria dos conjuntos matemticos.
A lgebra relacional proporciona uma linguagem concisa para representar consultas. Bancos de dados comerciais requerem uma linguagem de consulta mais amigvel. Na prxima aula, estudaremos a SQL, que influenciou praticamente todos os bancos de dados utilizados atualmente.
Anotaes
401
402
Aula 5
SQL
Esperamos que, ao final desta aula, voc seja capaz de: escrever consultas em SQL; entender como a SQL se divide.
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. Para isso, fundamental que saibamos que ele organiza seus dados na forma de tabelas relacionadas, ou no, entre si. Os conceitos do modelo de dados relacional, estudados na aula trs deste caderno, so fundamentais para o entendimento desta aula.
Finalmente, chegamos SQL, que representa o ltimo e grande assunto deste curso. O material foi elaborado com base nas discusses do Grupo de Banco de Dados da Universidade Federal de So Carlos, sob a coordenao do professor Dr. Mauro Biajiz. Desenvolvida e implementada pelo Laboratrio de Pesquisas da IBM, entre os anos de 1964 e 1969, a Linguagem SQL (Structured Query Language) foi criada como uma forma de interface entre os usurios e o primeiro Sistema de Gerenciamento de Bancos de Dados Relacional denominado System R. a mais conhecida linguagem de manipulao de bancos de dados relacionais, devido sua simplicidade e ao grande poder de consulta, sendo adotada por diversos SGBDs Relacionais existentes comercialmente. Nesta aula veremos como cada comando SQL funciona e como pode ser empregado.
403
404
tidas em um plano de acesso na hora da preparao do programa. Essa sentena SQL deve ser conhecida, antes de o seu programa ser rodado, e os objetos de banco de dados tm de existir na hora da pr-compilao dessas sentenas SQL estticas. Pode-se pensar na SQL esttica como sendo uma forma compilada da linguagem SQL, contendo como caracterstica, melhoria do desempenho. Por outro lado, as sentenas SQL dinmicas so criadas e emitidas em tempo real, oferecendo flexibilidade mxima em troca da velocidade de execuo. Pode-se pensar na SQL dinmica em tempo real, tendo-se de repetir o processo toda vez que a mesma sentena for executada novamente. Um dos aspectos que pode ser usado para comparao o fato da SQL esttica ser usada para a escrita de programas de transaes altamente otimizadas, e a SQL dinmica ser mais apropriada para a escrita de utilitrios para programao de bancos de dados em geral e para ferramentas frontend com GUI (Graphics User Interface Interface Grfica do Usurio) que necessitam criar consultas ad hoc. Independente da verso, os comandos da SQL podem ser divididos em trs conjuntos: Linguagem de Definio de Dados (DDL): inclui comandos para definir, alterar e remover tabelas e ndices; Linguagem de Manipulao de Dados (DML): inclui comandos para inserir, remover, atualizar e consultar os dados armazenados nas tabelas; Linguagem de Controle de Dados (DCL): inclui comandos para se trabalhar em ambiente multi-usurio, permitindo estabelecer nveis de segurana e manipular transaes.
405
5.3 Operadores
LGICOS
AND OR NOT + * /
ARITMTICOS
< <= > >= <> =
RELACIONAIS
LIKE, BETWEEN
CONJUNTURAIS
=ANY <ANY >ANY >=ANY <=ANY <>ANY <ALL >ALL <>ALL EXISTS NOT EXISTS IN NOT IN
5.4 Funes
AVG obtm o valor mdio de uma coluna; COUNT obtm a soma da quantidade de linhas analisadas; MAX obtm o maior valor de uma coluna; MIN obtm o menor valor de uma coluna; SUM obtm a soma de valores de uma coluna; UPPER obtm o uppercase do valor.
406
Considere que o seguinte esquema relacional foi desenvolvido para suprir as necessidades dos usurios: PEA FORNECEDOR PROJETO FORNECE_PARA (PeNro, (FNro, (PNro, (PeNro, PeNome, FNome, PNome, FNro, PePreco, FCidade, PDuracao, PNro, PeCor) FCateg) PCusto) Quant)
Considere tambm as tabelas a seguir, que mostram instncias do banco de dados em um determinado instante. Tabela 1: Pea PeNro
PE1 PE2 PE3 PE4 PE5 PE6
PeNome
Cinto Volante Lanterna Limpador Painel Pra-brisa
PePreco (dlar)
22 18 14 09 43 56
PeCor
Azul Vermelho Preto Amarelo Vermelho -----------
FNome
Plastec C&M Kirurgic Pilotos Equipament
FCidade
Campinas So Paulo Campinas Piracicaba So Carlos
FCateg
B D A A C
PNome
Detroit PEGASUS Alfa SEA PaRAso
PDuracao (ms)
5 3 2 3 1
PCusto (dlar)
43.000 37.000 26.700 21.200 17.000
FNro
F5 F2 F3 F4
PNro
P4 P2 P4 P5
Quant
5 1 2 3
PE4
407
PeNro
PE5 PE2 PE4
FNro
F1 F2 F3
PNro
P1 P3 P5
Quant
1 1 2
408
Remover um ndice
409
410
b) Pesquisando dados em tabelas O comando SELECT ... FROM ... WHERE ... possibilita consultar uma ou mais tabelas de acordo com critrios estabelecidos.
Observaes: Esse comando se tornou o mais importante da linguagem SQL devido ao seu poder de consulta. A possibilidade de utilizao das operaes relacionais (unio, diferena, interseo e obviamente seleo), com extrema simplicidade na manipulao das tabelas, despertou o interesse dos pesquisadores e projetistas de gerenciadores de bancos de dados, de tal modo que diversos ambientes e linguagens de programao esto embutindo esse comando (Select-From-Where) em suas bibliotecas de operaes e funes.
411
Exemplo 2 (Where): obtenha o nome e cdigo dos fornecedores de Campinas. SELECT WHERE FNome, FNro FCidade = Campinas
Fnome Plastec Kirurgic FNro F1 F3
FROM Fornecedor
Exemplo 3 (Operador Aritmtico): obtenha o nome e a durao em dias de cada projeto. SELECT FROMProjeto PNome, (PDuracao*30) as_Dur_Dias Pnome
Detroit Pegasus Alfa Sea Paraso Dur_Dias 150 90 60 90 30
Exemplo 4 (Operador Relacional): obtenha o nome dos projetos de custo menor que $28000. SELECT FROMProjeto WHERE PCusto < 28000 PNome
PNome Alfa Sea Paraiso
Exemplo 5 (Operador Lgico): obtenha os nomes das peas de cor vermelha e com preo maior que $25. SELECT FROMPeca WHERE AND (PeCor = Vermelho PePreco > 25) PNome
PeNome Painel
Exemplo 6 (uso explcito das relaes): obtenha o cdigo dos fornecedores para o projeto P5. SELECT WHERE Fornece_para.FNro Fornece_para.PNro = P5 FROMFornece_para
FNo F4 F3
412
Exemplo 7 (Variveis): obtenha o cdigo dos fornecedores concorrentes entre si. SELECT WHERE AND X.FNro, Y.FNro (X.PeNro = Y.PeNro X.FNro <> Y.FNro) FROMFornece_para X, Fornece_para Y
X.FNro F4 F3 Y.FNro F3 F4
Exemplo 8 (Variveis): obtenha o cdigo das peas de mesma cor. SELECT WHERE AND c) Operador UPPER O operador UPPER serve para colocar em maiscula todas as letras de uma determinada coluna. Exemplo 9 (Operador Relacional): obtenha a durao e o custo do projeto de nome Pegasus. SELECT FROMProjeto WHERE Utilizando UPPER: SELECT FROMProjeto WHERE Pnome = UPPER(Pegasus) PDuracao,PCusto
PDuracao 3 PCusto 37000
FROMPeca X, Peca Y
PDuracao --------
PCusto --------
d) Operador BETWEEN ... AND ... O operador BETWEEN... AND... testa os valores da coluna e recupera os valores que esto entre um valor mnimo e um valor mximo, inclusive especificados no BETWEEN. Exemplo 10 (Between): obtenha o nome dos projetos com preo entre $20000 e $30000. SELECT FROMProjeto WHERE PCusto BETWEEN 20000 AND 30000 PNome
PNome Alfa Sea
413
e) Operador IN O operador IN testa os valores da coluna e recupera somente os valores que esto na lista de valores, especificados pelo operador IN. Exemplo 11 (In): obtenha, em ordem crescente de preo, o nome das peas de cor vermelha ou amarela e com preo de $09, $ 18, $ 22 , $40 ou $ 90. SELECT FROMPeca WHERE OR AND ( (PeCor = Vermelho PeCor = Amarelo) PePreco IN (09, 18, 22, 40, 90) ) PeNome
PeNome Limpador Volante
Observao: caso forem usados caracteres ou data na lista, especific-los entre aspas simples. f) Operador LIKE O operador LIKE permite recuperar linha da tabela sem saber exatamente o valor que est sendo procurado, utilizando para isso os smbolos (%) e ( _ ). O smbolo de sublinhado ( _ ) usado para representar um nico caractere. O smbolo de percentagem (%) usado para representar uma cadeia de caracteres de qualquer tamanho (inclusive zero). Exemplo 12 (Like): obtenha o nome dos fornecedores residentes em cidades iniciadas com a letra S. SELECT WHERE FNome FCidade LIKE S% FROMFornecedor
FNome C&M Equipament
Observao: o operador LIKE s pode ser usado com cadeia de caracteres ou com dados grficos, e no com dados numricos. O operador IS NULL testa os valores da coluna e recupera somente as linhas da tabela que possurem o valor null. Exemplo 13 (IS NULL): obtenha o nome das peas que no tm cor. SELECT FROMPeca WHERE PeCor IS NULL; Utilizando a negao (NOT) Os operadores BETWEEN... AND..., IN, LIKE, e IS NULL podem ser combinados com o operador de negao NOT. PeNome
PeNome Para-brisa
414
Significado NO ENTRE DOIS VALORES ESPECIFICADOS NO ENTRE UMA LISTA DE VALORES NO ENTRE UM PADRO ESPECIFICADO NO IGUAL AO VALOR NULL
Exemplo 14 (Not): obtenha o nome das peas cujo preo no $ 09, $14, $60. SELECT FROMPeca WHERE g) Clusula DISTINCT A clusula DISTINCT utilizada para eliminar os valores duplicados na sada (no resultado). Exemplo 15 (Distinct): obtenha os cdigo de todas as peas fornecidas. SELECT DISTINCT PeNro FROM Fornece_para
PeNome PE1 PE2 PE3 PE4 PE5
PeNome
h) Clusula ORDER BY A clusula ORDER BY utilizada para ordenar (classificar) as linhas da tabela. A ordem do resultado pode aparecer em ordem decrescente (DESC) ou ascendente (ASC) que default. A clusula ORDER BY sempre deve aparecer por ltimo no comando SELECT. Exemplo 16 (Order by): obtenha, em ordem decrescente de preo, os nomes das peas de cor vermelha e com preo maior que $ 15. SELECT FROMPeca WHERE AND ORDER BY (PeCor = Vermelho PePreco > 15) PePreco DESC PeNome
PeNome Painel Volante
415
i)
Clusula GROUP BY A clusula GROUP BY referencia uma coluna especificada da tabela relacionada na clusula FROM e agrupa as linhas com base nos valores iguais dessa coluna. O resultado da clusula GROUP BY particiona a tabela em um conjunto de grupos, no efetuando qualquer tipo de ordenao. Exemplo 17 (Group By): obtenha a quantidade de cada pea utilizada em todos os projetos. SELECT GROUP BY PeNro, SUM (Quant) PeNro FROMFornece_para Observao: a clusula WHERE s pode ser usada em funes de grupos em casos especiais.
PeNro PE1 PE2 PE3 PE4 PE5 5 2 2 5 1
416
A clusula HAVING usada para especificar a qualidade que um grupo deve ter para ser includo no resultado. Ela efetua para os grupos a mesma funo que a clusula WHERE efetua para as linhas. A clusula HAVING sempre utilizada junto com a clusula GROUP BY. O HAVING especificado sempre aps o GROUP BY. Exemplo 18 (Having): obtenha os cdigos das peas que so utilizadas em uma quantidade inferior a cinco unidades na somatria de todos os projetos. SELECT GROUP BY HAVING JOINs Exemplo 19 (Join): obtenha o nome das peas utilizadas no projeto P4. SELECT WHERE AND Peca.PeNome (Fornece_para.PNro = P4 Fornece_para.PeNro = Peca.PeNro) FROMPeca, Fornece_para
PeNome Cinto Lanterna
FROMFornece_para
2 2 1
Exemplo 20 (Natural Join): obtenha o nome das peas fornecidas que tenham o preo maior que $20. SELECT WHERE
PE1 PE2 PE2 PE3 PE4 PE4 PE5 Cinto Volante Volante Lanterna Limpador Limpador Painel
Exemplo 21 (Equi Join): obtenha o nome das peas fornecidas que no so vermelhas e as suas cores. SELECT WHERE DISTINCT PeNome, PeCor PeCor <> Vermelho FROM(Peca JOIN Fornece_para ON PeNro = PeNro)
417
PeCor
Azul Vermelho Vermelho Preto Amarelo Amarelo Vermelho
Exemplo 22 (Outer Join): obtenha informaes sobre todas as peas. SELECT * FROM (Peca LEFT OUTER JOIN Fornece_para ON PeNro = PeNro) PeNro PeNome PePreo
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
Saiba mais
Podemos concluir que a linguagem de consulta SQL utilizada para manipulao dos dados em uma base de dados, podendo fazer vrias formas de combinao de consultas, resultando em informaes teis para serem utilizadas para os mais diversos fins.
A SQL uma linguagem que foi padronizada para uso em banco de dados. Essa linguagem inclui instrues para definio dos dados, manipulao dos dados e para controle. Nesta aula, enfocamos parte da manipulao dos dados, envolvendo a insero, alterao, remoo e consulta aos dados, alm da definio das estruturas da tabelas.
418
1. Obtenha o nome dos projetos com durao entre trs e cinco inclusive e que tem um preo menor que $40.000. 2. Explique como a padronizao de uma linguagem de consulta pode auxiliar o projetista do banco de dados. 3. A funo de grupo COUNT, usada para retornar: a) o valor do menor elemento de uma coluna; b) a somatria dos valores de uma coluna; c) a quantidade de elementos de uma coluna.
4. Um SELECT sem o termo WHERE: a) retorna uma mensagem de erro; b) seleciona todas as linhas de uma tabela; c) seleciona todas as colunas de uma tabela.
A atividade um verifica se voc aprendeu a utilizar os comandos SQL de seleo. A resposta correta : select Pnome from Projeto where PDurao >= 3 and pDuracao <= 5 and PCusto < 40000. A atividade dois provoca uma discusso a respeito de responsabilidades na diviso das tarefas de um banco de dados, entre o DBA, o programador da aplicao e o projetista do banco de dados. A atividade trs provoca voc a questionar o uso da funo de grupo COUNT. A alternativa correta (c), pois essa funo usada para contar o nmero de ocorrncias de uma coluna. A alternativa (a) refere-se funo MIN, e a alternativa (b) refere-se a funo SUM. A atividade quatro explora a sintaxe do comando SELECT. A alternativa correta a letra (b), pois a clusula WHERE filtra as linhas por algum critrio. A alternativa (a) est incorreta porque a clusula WHERE opcional para o comando, e a alternativa (c) cita as colunas, que nesse comando so referenciadas aps a palavra SELECT. Se voc acertou a resposta dessas atividades, atingiu os objetivos propostos para a aula: escrever consultas em SQL; entender como a SQL se divide.
419
Explora como criar consultas dentro de outras consultas, um recurso interessante para poder quebrar consultas complexas em consultas menores.
Anotaes
420
Aula 6
SQL: subconsultas
Esperamos que, ao final desta aula, voc seja capaz de: escrever subconsultas eficientes em SQL; entender o comportamento de consultas aninhadas.
Nosso assunto uma continuidade da aula anterior, permitindo uma maior flexibilidade para alguns casos especficos. Para o entendimento desta aula, imprescindvel uma introduo linguagem SQL, que abordamos na aula cinco, e o conhecimento do comando Select, contedo presente na aula quatro deste caderno.
Um recurso muito eficaz do SQL a subconsulta (ou subseleo), que, como o nome diz, se refere a um comando SELECT que contm um comando SELECT subordinado. Essa pode ser uma maneira flexvel de selecionar os dados. Nesta aula veremos como as subconsultas podem ajudar a concentrar melhor as informaes para um determinado fim.
421
PeNro PE4
Exemplo 2 (SubSelect): obtenha o nome das peas fornecidas pelos fornecedores F4 e F3. SELECT FROM Peca WHERE SELECT FROM WHERE SELECT FROM WHERE Peca.PeNro IN ( Fornece_para.PeNro Fornece_para Fornece_para.FNro = F4) Fornece_para.PeNro Fornece_para Fornece_para.FNro = F3)
PeNro PE4
Peca.PeNome
PeNome Limpador
AND Peca.PeNro IN (
PeNro PE3 PE4
Exemplo 3 (SubSelect): obtenha o nome das peas utilizadas nos projetos com durao maior que trs meses. SELECT FROMPeca WHERE Peca.PeNro IN ( SELECT FROM WHERE Fornece_para.PeNro Fornece_para Fornece_para.PNro IN( SELECT WHERE Projeto.PNro Projeto.PDurao > 3) ) FROMProjeto
PNro P1 PeNro PE5
Peca.PeNome
PeNome Painel
Exemplo 4 (Exists): obtenha os nomes dos fornecedores que fornecem a pea PE2. SELECT Fornecedor.FNome FROM Fornecedor WHERE EXISTS (
FNome C&M
422
WHERE Peca.PeNro IN (
423
Obs.: quando a ANY utilizado, freqentemente a clusula DISTINCT utilizada para prevenir que a mesma linha seja selecionada vrias vezes. c) ALL Compara um valor com todos os valores da lista de valores retornados pela subquery. Exemplo 6 (All): obtenha o nome das peas no fornecidas por fornecedores de categoria A. SELECT PeNome FROM Peca WHERE PeNro IN ( SELECT FROM WHERE Fornece_para FNro <>ALL ( SELECT WHERE d) Operador NOT O operador NOT tambm pode ser utilizado com os operadores IN, ALL e ANY. e) Utilizao do ORDER BY No possvel utilizar o ORDER BY em um SELECT interno, a regra utilizar somente um ORDER BY em uma subquery e este deve ser o ltimo comando do SELECT, ou seja, no SELECT mais externo. Aninhamento de subqueries Tambm possvel aninhar (encadear) vrias queries uma dentro da outra, no existindo limites. f) Clusula HAVING com subqueries aninhadas A clusula WHERE refere-se a uma linha da tabela, e o HAVING, a um grupo de linhas especificadas na clusula GROUP BY. 6.2.1 OPERADORES SET g) UNION A unio de duas relaes o conjunto de todas as linhas que esto em uma ou outra relao, ignorando as duplicada, ou seja, retorna a unio de dois SELECTs, ignorando as linhas duplicadas. FNro FROMFornecedor FCateg = A ) )
PeNome Cinto Volante Painel
DISTINCT PeNro
424
Exemplo 7 (Union): obtenha os cdigos das peas com preo menor que $ 20 ou que tenham a cor vermelha. SELECT FROM Peca WHERE UNION SELECT FROM Peca WHERE h) INTERSECT A interseo o conjunto de todas as linhas que esto simultaneamente em ambas as relaes, ou seja, retorna a interseo de dois SELECTs. Exemplo 8 (Intersect): obtenha os cdigos das peas com preo menor que $ 20 e que tenham a cor vermelha. SELECT FROMPeca WHERE INTERSECT SELECT FROMPeca WHERE i) MINUS A diferena o conjunto de todas as linhas que esto em apenas uma das relaes, ou seja, retornam a subtrao de dois SELECTs. Exemplo 9 (Minus): obtenha os cdigos das peas com preo menor que $ 20 e que no tenham a cor vermelha. SELECT FROMPeca WHERE MINUS SELECT FROMPeca WHERE PeCor = Vermelho PeNro PePreco < 20 PeNro
PeNro PE2 PE3 PE4 PeNro PE2 PE5 PeNro PE3 PE4
PeNro PE2
425
Saiba mais
Fique atento! Regras para utilizar UNION, INTERSECT e MINUS a) b) c) d) e) f) g) h) i) A clusula SELECT deve selecionar o mesmo nmero de colunas. As colunas correspondentes devem ter o mesmo tipo de dado. As linhas duplicadas so automaticamente eliminados. Os nomes das colunas do primeiro SELECT que aparecem no resultado. A clusula ORDER BY deve aparecer no final do comando. A clusula ORDER BY somente pode ser usada indicando o nmero da coluna. Os operadores UNION, ITERSECT e MINUS podem ser utilizados em subqueries. As colunas SELECTs so executadas de cima para baixo. Vrios SET OPERATORS podem ser utilizados. Para indicar a seqncia de execuo deve-se utilizar-se parntese.
Conclumos que as subconsultas ajudam a refinar a informao que se dejesa retirar de uma base de dados.
Nesta aula, voc aprendeu a escrever subconsultas, permitindo a quebra de uma consulta complexa em consultas mais simples.
Considerando o exemplo da aula passada, escreva as consultas dos nmeros: 1. Quais os nomes das peas com preo maior que $ 20 e que so fornecidas por empresas de So Paulo. 2. Obtenha o nome das peas utilizadas no projeto 3.
426
3. Uma subseleo: a) cria uma nova tabela em disco; b) uma funo de clculo de valores; c) permite ao comando de seleo ser decomposto em consultas mais simples.
4. Uma consulta pode ter quantas subconsultas? a) uma b) trs c) no tem um limite definido
As atividades um e dois visam fixao do conceito de subconsultas por meio de escrita de comandos de consulta ao banco de dados. A atividade um tem resposta: select peca.PeNome from peca where peca.PePreco > 20 and PeNro in (select fornece_para.PeNro from fornece_para, fornecedor where fornecedor.FCidade = Sao Paulo and fornece_para.FNro = fornecedor.FNro) A atividade dois tem como resposta: select peca.PeNome from peca where peca.PeNro in (select PeNro from Projeto where pNro = 3) A atividade trs explora o conceito de subconsulta, pedindo que voc interprete o seu uso. A alternativa correta (c). As alternativas (a) e (b) trazem definies que no so pertinentes. A atividade quatro trata do aninhamento de consultas. A priori, o nmero de subconsultas ilimitado. A alternativa (c) traz essa resposta.
427
Se voc acertou a resposta dessas atividades, atingiu os objetivos propostos para a aula: escrever subconsultas eficientes em SQL; entender o comportamento de consultas aninhadas.
Os comandos DCL tm a funo de controlar o acesso ao banco de dados e suas transaes. Na prxima aula, veremos como utilizar esses comandos.
Anotaes
428
Aula 7
Linguagem de Controle de Dados
Esperamos que, ao final desta aula, voc seja capaz de: definir os privilgios que cada usurio ter no banco de dados; controlar as transaes do banco de dados.
O assunto desta aula fecha uma trilogia sobre a linguagem SQL, iniciada com os comandos de definio de dados e os comandos de manipulao de dados. Alm disso, outro conhecimento prvio que se faz necessrio a forma como o banco de dados interage com seus usurios e com os programas que podem estar armazenados em sua estrutura. interessante que voc tenha fixado os conceitos da aula um, bem como os comandos da linguagem SQL, apresentados nas aulas cinco e seis deste caderno.
Freqentemente associa-se a DCL s funes responsveis pela administrao dos usurios, dos grupos e das permisses. Alm dessas funes, a DCL responsvel pelo controle das transaes do banco de dados. Nesta aula veremos como cada usurio pode ter acesso diferente base de dados para obter uma segurana nas informaes guardadas.
7.1 Privilgios
Estabelecer os privilgios dos usurios comuns.
429
430
431
7.5 Transaes
Definir os atributos de uma transao.
Observaes: READ WRITE/READ ONLY: define o motivo do acesso; WAIT/NO WAIT: espera ou no em uma fila at o trmino das transaes concorrentes; ISOLATION LEVEL: determina como a transao age em relao as transaes concorrentes; SNAPSHOT: a transao retm uma viso esttica do BD; TABLE STABILITY: no pode escrever sobre esta viso;
432
READ COMMITED: a transao retm uma viso no esttica do BD; NO RECORD_VERSION: viso alterada apenas quando a ltima transao terminar; RECORD_VERSION: viso alterada em cada transao encerrada; RESERVING: reservar previamente as tabelas para evitar o deadlock. Efetivar as operaes de uma transao gravando as alteraes em disco.
7.6 Cursores
Definir um cursor (tipo de varivel especial que indica a tupla corrente). No incio de todo comando SQL, o cursor se posiciona antes da primeira tupla.
433
Observaes: ABSOLUTE i: posiciona na i-sima tupla da relao; RELATIVE i: posiciona i posies adiante da tupla corrente (indicada pelo cursor).
434
Definir um procedimento.
Remover um procedimento que no internamente utilizado por outro (somente pelo criador do procedimento ou pelo DBA).
435
Observaes: ACTIVE: (Default) especifica que a ao do trigger tem efeito; INACTIVE: especifica que a ao do trigger no tem efeito; BEFORE: especifica que o trigger executado antes da operao associada; AFTER: especifica que o trigger executado depois da operao associada; DELETE\INSERT\UPDATE: especifica a operao que causa a execuo do trigger; POSITION nmero: especifica a ordem de execuo de triggers sobre a mesma ao e sobre as mesmas tabelas ou vises. O nmero deve variar entre 0 e 32767, inclusive;
436
O menor nmero executa primeiro. Default: 0 = primeiro trigger a executar. Triggers com os mesmos nmeros so executados em ordem randmica.
Observaes: NEW.coluna: novo valor da coluna em uma operao de INSERT ou UPDATE; OLD.coluna: velho valor da coluna antes da operao de UPDATE ou DELETE. Remover um trigger que no est sendo utilizado (somente pelo criador do procedimento ou pelo DBA).
Alterar um trigger.
437
Saiba mais
Fique atento! O controle de transaes parte fundamental para a garantia da consistncia dos dados do banco de dados. Conclumos que o controle de dados fornece uma maior segurana das informaes que so acessadas, controlando o que cada usurio ir acessar com o tipo de permisso destinado a ele, alm de controlar as transaes que ocorrem no banco de dados.
438
Nesta aula, voc aprendeu a atribuir e revogar privilgios dos usurios, a definir o incio e o final das transaes e proceder a recuperao em caso de falha. Alm disso, aprendeu a escrever rotinas de cdigo que ficam armazenadas no sistema gerenciador do banco de dados, bem como rotinas que tem ativao automtica.
1. Analise o funcionamento dirio de um banco de dados de algum empreendimento comercial. Quais e para qual finalidade voc usaria os procedimentos armazenados e os gatilhos? Cite exemplos. 2. Como voc atribuiria para um usurio chamado MARCOS o acesso somente de leitura da tabela empregados de um determinado esquema de banco de dados? 3. Um privilgio, em banco de dados, pode ser entendido como: a) um comando b) uma permisso de acesso c) uma tabela
4. Podemos criar programas que ficam armazenados dentro do banco de dados. Para isso, 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 um espera que voc relacione os conceitos de rotinas armazenadas uma aplicao real. A atividade dois visa compreenso de como podemos atribuir permisses de acesso a um determinado usurio. Na linguagem SQL, isso feito pelo comando GRANT. A resposta correta para esta questo : grant select on Empregados to Marcos. A atividade trs objetiva a fixar o conceito de privilgio em um banco de dados. Quando se controla a segurana em banco de dados, uma dos
439
mecanismos de que dispomos permitir que o usurio tenha acesso somente a determinados dados e funes do banco de dados. Para isso, usamos uma poltica de concesso de privilgios, que tem como significado a concesso de permisso de acessos. A alternativa correta, portanto, (b). A atividade quatro explora o conceito de procedimento armazenado. Em SQL, podemos definir rotinas que devem ser executadas. Para isso, usamos o comando CREATE PROCEDURE. A alternativa (c) est correta e as alternativas (a) e (b) apresentam sintaxes inexistentes no SQL. Se voc acertou a resposta dessas atividades, atingiu os objetivos propostos para a aula: definir os privilgios que cada usurio ter no banco de dados; controlar as transaes do banco de dados.
Anotaes
440