Você está na página 1de 75

EQUIPE UNITINS Organizao de Contedos Acadmicos Eduardo Leal Coordenao Editorial Maria Lourdes F. G.

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

371

aula 1 Banco de dados

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.

1.1 Iniciando em Banco de Dados


Um banco de dados uma coleo armazenada de dados inter-relacionados, que so gerenciados como uma nica unidade. Um arquivo uma coleo de

unitins anlise e desenvolvimento de sistemas 2 PeRodo

373

aula 1 Banco de dados

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.

1.2 Sistema Gerenciador de Banco de Dados


Korth e Sudarshan (1999, p. 1) afirma que Um Sistema Gerenciador de Banco de Dados (SGBD) constitudo por um conjunto de dados associado a um conjunto de programas para acesso a esses dados. O SGBD fornece todos os servios bsicos necessrios para organizar e manter o banco de dados. Existem algumas regras bsicas para que um sistema que manipule dados seja considerado como um SGBD. Essas regras so a autoconteno, a independncia dos dados, abstrao dos dados, vises, controle de transaes e o controle de concorrncia. A autoconteno indica que o banco de dados, alm dos prprios dados, deve tambm armazenar os metadados. Um metadado a descrio dos dados armazenados, seus relacionamentos e formas de acesso. A independncia dos dados representa a independncia entre as aplicaes e as mudanas decorrentes na estrutura de armazenamento ou na estratgia de acesso aos dados. A abstrao dos dados a representao conceitual dos dados, sem incluir detalhes sobre sua forma de armazenamento real. O modelo de dados um

374

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 1 Banco de dados

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.

1.3 Nveis de Abstrao de Dados


Os bancos de dados tm a capacidade de apresentar a seus usurios modos de exibio distintos sobre o conjunto de dados armazenados. Isso chamado de modos de exibio do usurio. Um usurio considerado como qualquer pessoa, ou aplicativo, que acessa o banco de dados para armazenar e/ou recuperar dados. A figura um apresenta as camadas de abstrao de um banco de dados. Figura 1: Camadas de Abstrao do Banco de Dados

unitins anlise e desenvolvimento de sistemas 2 PeRodo

375

aula 1 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 1 Banco de dados

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

377

aula 1 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 1 Banco de dados

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

379

aula 1 Banco de dados

380

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 2 Banco de dados

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.

2.1 Conceitos e representao


Uma entidade representa a caracterizao de um elemento do mundo real, como uma pessoa, por exemplo. Uma entidade representada por um retngulo, como ilustrado na figura um. Uma entidade pode ser vista como um

unitins anlise e desenvolvimento de sistemas 2 PeRodo

381

aula 2 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 2 Banco de dados

Figura 4: Diagrama de ocorrncias

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).

unitins anlise e desenvolvimento de sistemas 2 PeRodo

383

aula 2 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

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 , 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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

385

aula 2 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 2 Banco de dados

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

387

aula 2 Banco de dados

388

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 3 Banco de dados

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

389

aula 3 Banco de dados

3.1 Modelo Relacional


A estrutura de um banco de dados relacional consiste em uma coleo de tabelas, cada uma das quais com um nome nico. No modelo relacional, podemos ver os dados como armazenados em tabelas, chamadas de relaes. Uma linha em uma relao representa uma instncia 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 domnio de valores possveis. O grau de uma relao o nmero de atributos que essa relao tem. Para auxiliar nos conceitos, vamos utilizar uma Relao Alunos, exemplificada a seguir. Quadro 1: Relao alunos MATRCULA
100 200 201

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 3 Banco de dados

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.

3.2 Esquemas de Banco de Dados Relacional e Restries de Integridade


Um esquema de banco de dados relacional um conjunto de esquemas de relao e um conjunto de restries de integridade. As restries de integridade so regras que devem ser sempre satisfeitas, em quaisquer das relaes do banco de dados. As principais regras so unicidade de chave, integridade da entidade e integridade referencial. A unicidade de chave uma restrio que protege a duplicidade da chave candidata, no permitindo que ela possa ter o mesmo valor em duas tuplas distintas da mesma relao. A restrio de integridade da entidade no permite que a chave primria aceite o valor nulo em nenhuma tupla da relao e a restrio de integridade referencial refere-se ao conceito de chave estrangeira, sendo usada para manter a consistncia entre tuplas de duas relaes relacionadas entre si. Por exemplo: supomos que existam duas relaes (alunos e cursos) e um relacionamento entre elas. O atributo curso da relao aluno s pode assumir um valor que exista na relao curso. Essa referncia realizada por intermdio da utilizao das chaves (estrangeira na relao alunos e primria na relao cursos). As restries de integridade semntica so especificadas nas regras de negcio que acompanham o banco de dados. Um exemplo pode ser que o salrio de um empregado no possa ser maior do que o salrio do seu gerente. Porm nem todos os SGBDs relacionais oferecem mecanismos para a especificao dessas restries. Sempre que operaes de atualizao (inserir, deletar, modificar) so aplicadas, deve-se verificar as restries de integridade (chave, entidade e referencial.

Saiba mais

unitins anlise e desenvolvimento de sistemas 2 PeRodo

391

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 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.

1. Pesquise as 12 leis de Codd. Tente relacionar a cada lei um exemplo prtico.

392

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 3 Banco de dados

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.

d) pode ser selecionado com base nas regras de um atributo; e)

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

393

aula 3 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 4 Banco de dados

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

395

aula 4 Banco de dados

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

ADMISSO SEXO SALRIO


09.01.55 08.12.45 18.03.75 20.06.31 15.09.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.1 A operao SELEO (SELECT)


A operao seleo, representada pela letra , seleciona um subconjunto de tuplas que satisfaa uma determinada condio de seleo. Sintaxe:

Exemplo 1: Selecione os empregados que trabalham no departamento CPD.

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 4 Banco de dados

O resultado mostrado na tabela a seguir: NOME RG ADMISSO SEXO SALRIO


08.12.45 20.06.31 M F 4000 4300

RG SUPER
888665555 888665555

DEPARTAMENTO
RH CPD

Francisco 333445555 987654321 Joana

4.2 A Operao PROJEO (PROJECT)


A operao PROJEO seleciona determinadas colunas da relao. Sintaxe:

Exemplo 3: Liste o nome e o salrio de cada empregado.

O resultado mostrado na tabela a seguir: NOME


Joo Francisco Alice Joana Rodolfo

SALRIO
3000 4000 2500 4300 3800

4.3 Aninhando Operaes


As operaes podem ser aninhadas, usando uma nica expresso da lgebra relacional. Exemplo 4: Selecionar o nome e o salrio de todos os empregados que trabalham no departamento, cujo cdigo Cpd:

O resultado mostrado na tabela a seguir: NOME


Joo Francisco Rodolfo

SOBRENOME
Silva Souza Nogueira

SALRIO
3000 4000 3800

unitins anlise e desenvolvimento de sistemas 2 PeRodo

397

aula 4 Banco de dados

Outra alternativa criarmos relaes resultantes intermedirias, nomeando cada uma delas. DEP_EMP= NROD=Cpd(EMPREGADO) RESULT NOME, SALARIO (DEP_EMP)

4.4 A Operao Unio (UNION)


denotada por R S e tem como resultado uma relao que inclui todas as tuplas que esto em R ou em S ou em ambas. As tuplas duplicadas so eliminadas.

4.5 A operao Interseo (INTERSECTION)


denotada por R S e tem como resultado uma relao que inclui todas as tuplas que esto em ambas R e S. As operaes unio e interseo apresentam as seguintes propriedades: a) so comutativas, ou seja, R S = S R e R S = S R; b) so aplicadas a qualquer nmero de relaes; c) so associativas, ou seja, R (S T) = (R S) T e R (S T) = (R S) T.

4.6 A operao Diferena (DIFFERENCE)


denotada por R S e tem como resultado uma relao que inclui todas as tuplas que esto em R, mas no esto em S. A operao diferena no comutativa. Observe que, em geral, R-S <> S-R.

4.7 A operao Produto Cartesiano


denotada por R X S e tem como resultado a combinao de tuplas de duas relaes R e S, resultando em uma relao que tem uma tupla para cada combinao de tuplas uma de R e outra de S. Exemplo: R ATRIB1
X1 X2

S ATRIB2
Z1 Z2

398

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 4 Banco de dados

RXS A1
X1 X1 X2 X2

C1
Z1 Z2 Z1 Z2

4.8 A operao Juno (JOIN)


denotada por |X| e utilizada para combinar tuplas de duas relaes, por meio de um ou mais atributos comuns s duas relaes. A relao resultante contm as colunas das duas tabelas que participaram da juno.

4.9 Funes Agregadas


So funes matemticas sobre colees de valores do banco de dados, como soma, mdia, mximo, mnimo e contagem (de tuplas).

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

399

aula 4 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 4 Banco de dados

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

401

aula 4 Banco de dados

402

2 PeRodo anlise e desenvolvimento de sistemas unitins

Aula 5
SQL

aula 5 Banco de dados

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

403

aula 5 Banco de dados

5.1 Padronizao de SQL


Diversas tentativas de padronizao da SQL foram realizadas, de modo a criar um conjunto de comandos e operandos de uso comum, entre os diversos ambientes, possibilitando maior interao entre usurios e os dados. Os comandos de manipulao de dados podem ser diretamente utilizadas por meio de um ambiente interativo ou indiretamente como uma sub-linguagem embutida (Embedded SQL) em linguagens de aplicao (ou linguagens hospedeiras) como Cobol (ISO 1989 de 1985), Fortran (ISO 1539 de 1980), C (ISO/IEC 9899 International Organization for Standardization / International Electrotechnical Commission), Ada, PL/1 (ISO/IEC 6160 de 1979), Pascal (ISO/IEC 10206 de 1990) e MUMPS. Existem diversas vrias verses da SQL: SQL89 (ou SQL1), que compreendeu uma interseco das implementaes SQL da poca, o que facilitou uma conformidade dos produtos existentes para com ela, SQL92 que compreendeu a norma ISO SQL92 (ou SQL2), definida em 1992, sendo pelo menos cinco vezes mais extensa do que a SQL89. Essa verso tinha alguns conceitos e comandos considerados novos. Entre eles esto: agentes SQL: definidos como programas ou usurios interativos que produzem sentenas em SQL; conexes cliente/servidor SQL: para poder executar quaisquer operaes com bancos de dados, um agente SQL tem de solicitar o cdigo cliente SQL para o CONNECT (conectar-se) com algum servidor SQL. dado suporte a conexes simultneas (ou sesses), mas apenas uma pode estar ativa em um determinado momento; suporte para SQL embutida em novas linguagens; suporte para novos tipos de dados blobs, varchar, date, time e timestamp; suporte para tabelas temporrias; suporte para operadores de juno incluindo-se juno interna, externa, juno cruzada e juno de unio. A verso mais atual da linguagem denominada SQL3 e tem como caractersticas mais importantes as funes SQL objeto, incluindo encapsulamento, mtodos, tipos de dados definidos pelo usurio e herana. A linguagem SQL pode ser vista como o middleware entre o cliente e o SGBD Server, e a forma como as sentenas SQL so estruturadas pode ser classificada como sentenas estticas ou sentenas dinmicas. As sentenas SQL estticas so definidas por meio do seu cdigo e conver-

404

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 5 Banco de dados

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.

5.2 Tipos de Dados


Os tipos de dados mais usuais so: INTEGER ou INT (-32768 a 32767); SMALLINT (0 a 65535); FLOAT (-2147483648 a 2147483647); REAL (1.17E-38 a 3.4E+38); DOUBLE PRECISION (2.2E-308 a 1.7E+308); DECIMAL (i,j) em que i o total de casas decimais, e j o total de casas decimais depois do ponto (at 18); CHAR (n) em que n a quantidade fixa de caracteres (at 60000); VARCHAR (n) onde n a quantidade mxima de caracteres (at 60000); BIT(n) em que n a quantidade fixa de bits; BIT VARYING(n) em que n a quantidade mxima de bits; DATE que so dez posies no formato aaaa-mm-dd; TIME que so oito posies no formato hh:mm:ss; TIME(i) em que i uma frao de segundo (ex.: 67 centsimos de segundo); e TIMESTAMP. Podem-se encontrar outros tipos reconhecidos pelos compiladores.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

405

aula 5 Banco de dados

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.

5.5 Estudo de Caso


Para ilustrar o assunto abordado em sees posteriores, ser adotado o seguinte exemplo: suponha que a empresa construtora necessita armazenar, em seu banco de dados, informaes sobre as peas que utiliza em cada projeto de veculo e os fornecedores dessas peas. O banco de dados deve ser capaz de oferecer respostas precisas sobre as peas, fornecedores e projetos realizados, bem como associaes entre esses elementos, ou seja, a quantidade de peas fornecidas por uma determinada empresa e utilizadas em um projeto. As PEAS so identificadas por um nmero, sendo utilizada a cor das gavetas onde esto colocadas as peas para uma localizao visual mais rpida por parte dos funcionrios. Para a especificao das compras, so necessrios o nome e o preo atual de cada pea. Para a emisso correta das notas de compra e dos pagamentos, necessrio o nome dos FORNECEDORES, bem como a cidade e um nmero de identificao. A categoria de cada fornecedor utilizada para indicar a qualidade de seus produtos e servios. Os PROJETOS de veculos tm um nome, nmero de identificao, a durao para a montagem do veculo e o custo de cada veculo (incluindo peas e servios).

406

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 5 Banco de dados

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 -----------

Tabela 2: Fornecedor FNro


F1 F2 F3 F4 F5

FNome
Plastec C&M Kirurgic Pilotos Equipament

FCidade
Campinas So Paulo Campinas Piracicaba So Carlos

FCateg
B D A A C

Tabela 3: Projeto PNro


P1 P2 P3 P4 P5

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

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 anlise e desenvolvimento de sistemas 2 PeRodo

407

aula 5 Banco de dados

PeNro
PE5 PE2 PE4

FNro
F1 F2 F3

PNro
P1 P3 P5

Quant
1 1 2

5.6 Linguagem de Definio de Dados (DDL)


Criar uma tabela e definir suas colunas.

408

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 5 Banco de dados

Alterar uma tabela existente.

Remover uma tabela e todas as suas tabelas de ndices.

Criar um ndice para uma tabela.

Remover um ndice

unitins anlise e desenvolvimento de sistemas 2 PeRodo

409

aula 5 Banco de dados

5.7 Linguagem de Manipulao de Dados (DML)


a) Atualizao do Banco de Dados Incluso de dados em uma tabela.

Atualizar os dados de uma tabela.

Remover os dados de uma tabela.

410

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 5 Banco de dados

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

411

aula 5 Banco de dados

Exemplo 1: Obtenha os nomes de todas as peas. SELECT FROMPeca PeNome


PeNome Cinto Volante Lanterna Limpador Painel

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 5 Banco de dados

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

X.PeNro, Y.PeNro (X.PeNro = Y.PeNro X.PeNro <> Y.PeNro )

FROMPeca X, Peca Y

X.PeNro PE2 PE5

Y.PeNro PE5 PE2

PDuracao,PCusto PNome = Pegasus

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

413

aula 5 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 5 Banco de dados

Operador NOT BETWEEN NOT IN NOT LIKE IS NOT NULL

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

PePreco NOT IN (09,14,60)

PeNome Cinto Volante Painel

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

415

aula 5 Banco de dados

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

5.8 Funes para manipular grupos


As funes de grupos servem para manipular um conjunto de linhas (ROWS) da tabela. Retornam um resultado baseado em um grupo de linhas (ROWS). Por padro todas as linhas (ROWS) da tabela so tratadas com um grupo. A clusula GROUP BY usada para dividir as linhas da tabela em grupos menores.

5.9 Funes de grupo


a) AVG: retorna a mdia dos valores da coluna, ignorando valores nulos. b) COUNT: retorna o nmero de ocorrncias da expresso, ou coluna. Usando *, retorna todas as ocorrncias das linhas incluindo, duplicadas e nulas. c) SUM: retorna a soma dos valores da coluna, ignorando valores nulos. d) MAX: retorna o valor mximo de uma coluna. e) MIN: retorna o valor mnimo de uma coluna. 5.9.1 Clusula HAVING A clusula HAVING especifica uma restrio sobre a tabela agrupada, que resultou de uma clusula GROUP BY, anterior, e elimina os grupos que no satisfazem a condio estabelecida.

416

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 5 Banco de dados

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

PeNro, SUM (Quant) PeNro SUM (Quant) < 5

FROMFornece_para

PeNro PE2 PE3 PE5

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

DISTINCT PeNome PePreco > 20 PeCor


Azul Vermelho Vermelho Preto Amarelo Amarelo Vermelho

FROM(Peca NATURAL JOIN Fornece_para) PeNro PeNome PePreo


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 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)

unitins anlise e desenvolvimento de sistemas 2 PeRodo

417

aula 5 Banco de dados

PeNro PeNome PePreo


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 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

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 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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 5 Banco de dados

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

419

aula 5 Banco de dados

Explora como criar consultas dentro de outras consultas, um recurso interessante para poder quebrar consultas complexas em consultas menores.

Anotaes

420

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 6 Banco de dados

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.

6.1 Subconsultas (subqueries)


Uma subconsulta uma clusula SELECT aninhada com outra clusula SELECT e que retorna um resultado intermedirio. Exemplo 1 (SubSelect): obtenha o nome das peas utilizadas no projeto P5. SELECT FROM Peca WHERE Peca.PeNro IN ( SELECT DISTINCT Peca.PeNome
PeNome Limpador

unitins anlise e desenvolvimento de sistemas 2 PeRodo

421

aula 6 Banco de dados

Fornece_para.PeNro FROM Fornece_para WHERE Fornece_para.PNro = P5)

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 6 Banco de dados

SELECT FROM WHERE AND

* Fornece_para (Fornece_para.FNro = Fornecedor.FNro Fornece_para.PeNro = PE2) )

6.2 Como as Subqueries Aninhadas so Processadas


Uma subquery composta por duas clusulas SELECT, o SELECT principal e SELECT interno. O comando SELECT interno executado primeiro, produzindo um resultado. No exemplo anterior, o resultado 800. O SELECT principal processado usando o valor retornado pelo SELECT interno. Obs.: a) sempre que o SELECT interno retorna uma linha da tabela podem ser utilizadas os operadores =, !=, <, <=, >, >=. Obs.: b) Sempre que aparecer uma SUBQUERY, em que, no resultado retornam mais de uma linha da tabela, se utiliza o operador IN. a) Operadores ANY E ALL Os operadores ANY e ALL so utilizados para subqueries que retornam mais de uma linha da tabela, e requerem o uso dos operadores igual (=), menor (>), maior (<), menor ou igual (>=), maior ou igual (<=) ou diferente (!=), aplicado ao resultado de uma subconsulta. b) ANY Compara um valor com cada valor da lista de valores que foi retornado pela subquery. Exemplo 5 (Any): obtenha o nome das peas fornecidas por algum fornecedor de Piracicaba. SELECT FROM Peca.PeNome Peca SELECT FROM WHERE PeNro Fornece_para FNro = ANY ( SELECT WHERE FNro FCidade = Piracicaba) ) FROMFornecedor
PeNro PE4 FNro F4 PeNome Limpador

WHERE Peca.PeNro IN (

unitins anlise e desenvolvimento de sistemas 2 PeRodo

423

aula 6 Banco de dados

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

PeNro PE1 PE2 PE5 FNro F3 F4

424

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 6 Banco de dados

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 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 anlise e desenvolvimento de sistemas 2 PeRodo

425

aula 6 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 6 Banco de dados

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

427

aula 6 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 7 Banco de dados

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

429

aula 7 Banco de dados

Revoga os privilgios de qualquer usurio comum.

7.2 Travamentos de Tabelas (Lock)


Estabelecer uma restrio momentnea de acesso a uma tabela.

7.3 Execuo de um Comando SQL


Indicar o incio de um comando SQL.

430

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 7 Banco de dados

Indicar o fim de um comando SQL.

7.4 Bloco de Comando


Indicar o incio e o final de um conjunto de comandos SQL.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

431

aula 7 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 7 Banco de dados

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.

Rejeitar as operaes de uma transao invalidando todas as alteraes executadas.

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.

Estabelecer o incio de uso de um cursor.

Estabelecer o fim de uso de um cursor.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

433

aula 7 Banco de dados

Realizar um avano seqencial em uma relao.

Observaes: ABSOLUTE i: posiciona na i-sima tupla da relao; RELATIVE i: posiciona i posies adiante da tupla corrente (indicada pelo cursor).

434

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 7 Banco de dados

7.7 Procedimentos Armazenados (Stored Procedures)


Executar um procedimento.

Definir um procedimento.

Remover um procedimento que no internamente utilizado por outro (somente pelo criador do procedimento ou pelo DBA).

unitins anlise e desenvolvimento de sistemas 2 PeRodo

435

aula 7 Banco de dados

Visualizar as dependncias de um procedimento.

7.8 TRIGGERS (armazenados junto ao Esquema).


Definir um trigger.

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 7 Banco de dados

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.

unitins anlise e desenvolvimento de sistemas 2 PeRodo

437

aula 7 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

aula 7 Banco de dados

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

unitins anlise e desenvolvimento de sistemas 2 PeRodo

439

aula 7 Banco de dados

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

2 PeRodo anlise e desenvolvimento de sistemas unitins

Você também pode gostar