Sei sulla pagina 1di 148

UNIVERSIDADE DO OESTE DE SANTA CATARINA UNOESC CAMPUS DE SO MIGUEL DO OESTE

APOSTILA DE BANCO DE DADOS


Autoria: Prof. Esp. Roberson Junior Fernandes Alves Home-page: http://www.unoescsmo.edu.br/~roberson

So Miguel do Oeste(SC), 2010. 1

SUMRIO
1.INTRODUO.................................................................................................................................3 2.SISTEMAS BASEADOS EM ARQUIVOS.....................................................................................3 3.BANCO DE DADOS........................................................................................................................5 3.1.SISTEMA GERENCIADOR DE BANCO DE DADOS(SGBD).............................................7 3.2.MODELOS LGICOS DE BANCO DE DADOS.................................................................11 3.3.GERENCIAMENTO DE TRANSAES..............................................................................13 3.4.VISO GERAL DA ESTRUTURA DO SISTEMA DE BANCO DE DADOS.....................14 4.CONCEPO DE SISTEMAS DE INFORMAO....................................................................15 4.1.MODELAGEM DE DADOS E INFORMAO...................................................................17 4.2.METODOLOGIA DE MODELAGEM...................................................................................18 4.3.MODELO RELACIONAL......................................................................................................27 4.4.SGBD RELACIONAL............................................................................................................33 4.5.TRANSFORMAO DO MODELO CONCEITUAL EM MODELO RELACIONAL.......34 4.6.NORMALIZAO.................................................................................................................40 4.7.FORMAS NORMAIS..............................................................................................................43 5.CLCULO RELACIONAL............................................................................................................46 6.LGEBRA RELACIONAL............................................................................................................46 6.1.OPERAO DE PROJEO(UNRIA)..............................................................................51 6.2.OPERAO DE SELEO(UNRIA)................................................................................53 6.3.PRODUTO CARTESIANO(BINRIA).................................................................................57 6.4.OPERAO DE RENOMEAR..............................................................................................60 6.5.OPERAO DE UNIO(BINRIA)....................................................................................61 6.6.OPERAO DE INTERSEO(BINRIA)........................................................................64 6.7.OPERAO DE DIFERENA(BINRIA)...........................................................................65 6.8.OPERAO DE JUNO(BINRIA).................................................................................67 6.9.OPERAO DE DIVISO(BINRIA).................................................................................69 7. SQL STRUCTURED QUERY LANGUAGE.............................................................................71 7.1.DML (Data Manipulation Language/Linguagem de Manipulao de Dados)........................75 7.2.DDL (Data Definition Language/Linguagem de Definio de Dados)...................................90 7.3.DCL (Data Control Language/Linguagem de Controle de Dados).........................................98 7.4.TML (Transaction Manipulation Language/Linguagem de Manipulao de Transaes)....102 8.BACKUP E RESTORE.................................................................................................................104 9.ESTUDOS DE CASO PARA MODELAGEM.............................................................................106 10.LISTA DE EXERCCIOS TEORIA RELACIONAL...............................................................129 11.LISTA DE EXERCCIOS LGEBRA RELACIONAL..........................................................132 12.LISTA DE EXERCCIOS - SQL.................................................................................................136 13.REFERNCIAS..........................................................................................................................143

1.INTRODUO
Na dcada de 90 as organizaes do-se conta que a Informao um recurso organizacional. No entanto, o valor da informao depende de sua correo e disponibilidade, apenas possvel com uma gesto adequada. Conforme Toffler e Toffler(1994, p. 51) o valor real de companhias como a Compaq ou a Kodak, a Hitachi ou a Siemens, depende mais das ideias, percepes e informaes contidas nas cabeas de seus empregados, e nos banco de dados e patentes que estas companhias controlam, do que nos caminhes, linhas de montagem ou outros ativos fsicos. [...] o prprio capital est cada vez mais baseado em intangveis. As tecnologias de banco de dados so uma ferramenta essencial gesto eficaz do recurso chamado INFORMAO. Dados versus Informao: entendendo as diferenas.

Dados representam fatos do mundo real. Valor de um campo armazenado, Exemplo: nome, endereo, telefone, e-mail.

matria-prima para obteno de informao;


A Informao resulta do processamento dos dados, apresentados de forma a Exemplo: um contato de uma pessoa em uma agenda.

permitir interpretao e a fundamentar decises;

2.SISTEMAS BASEADOS EM ARQUIVOS


Os primeiros modelos de sistemas, predecessores dos bancos de dados, trabalhavam sobre uma estrutura baseada em arquivos. Em sistemas baseados em arquivos existem vrios programas acessando vrios arquivos de dados diferentes. Cada programa responsvel por alguma tarefa especfica destinada ao usurio final, alm disso cada programa define e gerencia seus prprios dados(CONNOLLY; BEGG, 2005). Nesta estrutura no havia um software que gerenciava de forma centralizada o acesso e o tratamento dos dados, por isso estas implementaes era feitas em cada programa separadamente a critrio do programador. Alguns dos principais conceitos relacionados a ambientes baseados em arquivos so apresentados no quadro 1: Conceito Arquivo Registro Campo Arquivo de dados O mesmo que linha ou tupla O mesmo que coluna ou atributo Descrio

Quadro 1 Conceitos do ambiente baseado em arquivos.

Fonte: Adaptado de Connolly e Begg(2005).

Um arquivo nesta estrutura uma composio de registros que armazenam dados. Cada registro possui um conjunto de campos, conectados logicamente. A figura 1, a seguir, representa de forma geral o funcionamento de sistemas baseados em arquivos: USURIOS PROGRAMAS ARQUIVOS Registro Programa 1 A D Programa 2
Sort

B F H E B

C G

D H

E D

Campo

G H

H J

Programa 3 A
Figura 1 Funcionamento de um sistema baseado em arquivos.

Os problemas mais srios apresentados pelos sistemas baseados em arquivos eram:

Redundncia e inconsistncia de dados: Redundncia a caracterstica onde

um elemento de informao aparece duplicado em diversos lugares. Por exemplo, um cliente de uma empresa pode estar cadastrado tanto na base de dados do departamento de crdito assim como no departamento de contabilidade. Esta redundncia pode causar a inconsistncia, visto que as informaes podem ser diferentes para o mesmo cliente;

Dificuldade no acesso aos dados: Suponha que um diretor necessite encontrar

os clientes que residem em uma rea da cidade onde o CEP seja 12133-433. Se este mdulo do sistema de informao no estiver implementado, o diretor ter duas opes: ele pega a lista de clientes e extrai a informao necessria, ou pede para o departamento de informtica implementar a rotina necessria para obteno do relatrio;

Isolamento de dados: Uma vez que os dados esto espalhados em diversos

arquivos e podem ter formatos diferentes, difcil escrever novos programas/aplicativos para recuperar os dados adequados;

Anomalia de acesso concorrente: Evitar problemas relacionados a acessos

concorrentes em um determinado dado. Por exemplo, se duas pessoas sacarem dinheiro

de uma conta ao mesmo tempo, o resultado das operaes concorrentes podem deixar um saldo inconsistente. Considere uma conta com a quantia de R$ 400 e dois saques simultneo de R$ 100 e R$ 50. Se houver problema de acesso concorrente, a conta pode ficar com valores de R$ 300 ou de R$ 350 ao invs de R$ 250;

Segurana: Cada usurio do sistema poder ter acesso aos dados relativos a Problemas de Integridade: Os valores armazenados devem satisfazer certos

sua funo. Por exemplo, um caixa no pode ver dados pertencentes a diretoria;

tipos de restries de consistncia. Por exemplo, um filho de um funcionrio no pode ser cadastrado sem que o pai trabalhe na empresa. Como evoluo e para resolver a maior parte destes problemas surgem os bancos de dados.

3.BANCO DE DADOS
Os bancos de dados j so parte essencial da sociedade moderna. Em algum momento em nossas atividades dirias nos deparamos com situaes que necessitam de alguma interao com um banco de dados. Como exemplos pode-se citar: quando realizamos o emprstimo de um livro na biblioteca, quando realizamos uma reserva em um hotel, transaes bancrias como saques ou depsitos ou mesmo realizar uma compra em uma loja. Estes so alguns exemplos de aplicaes que podem ser consideradas tradicionais, onde a maior parte das informaes se apresenta, ou em forma de nmeros ou em forma textual. Com a constante evoluo tecnolgica novas e interessantes reas de aplicao tem surgido para banco de dados, como: no armazenamento de imagens, vdeos, sons; informaes geogrficas como mapas ou imagens de satlite; entre outras. Buscando definir o conceito de banco de dados, dentre as diversas existentes, pode se dizer que um conjunto integrado de dados e/ou elementos de informao que sero compartilhados, e utilizados concorrentemente por mltiplos usurios e/ou programas, para mltiplos objetivos, e com diferentes perspectivas. Outra definio interessante, conforme Connolly e Begg(2005), coleo de dados logicamente relacionados com sua respectiva descrio, desenhados para atender as necessidades da organizao. Uma das grandes novidades trazida pela tecnologia de Banco de Dados o que chamamos de: Data Independence ou Independncia entre Dados e Programas. Para entender melhor vamos conhecer alguns conceitos importantes: a) Independncia Fsica: Do ponto de vista fsico, os programas so independentes da estrutura fsica da informao, ou seja, a estrutura de armazenamento da informao. Alteraes na estrutura fsica dos dados (armazenamento) no implicam

alteraes nos programas. b) Independncia Lgica: Do ponto de vista lgico, os programas so independentes da estrutura lgica da informao, ou seja, a forma como a informao est organizada. Alteraes na estrutura lgica da base de dados(incluso de novos atributos, novas estruturas) no implicam necessariamente em alteraes nos programas. c) Integridade: Os programas so independentes das regras de integridade(coerncia) em vigor no banco de dados. Alteraes nessas regras de integridade no devem ter implicaes nos programas que utilizam a informao. d) Distribuio: Os programas so independentes da localizao geogrfica da informao. Alteraes na localizao geogrfica da informao e na sua estrutura de distribuio no devem implicar em alteraes nos programas. Algumas grandes vantagens trazidas pelos bancos de dados so:

Diminuio de redundncia: aumentada a integridade da informao e Compartilhamento de dados: a ideia centralizar a informao e permitir o Flexibilidade na modificao e manuteno: possui recursos especficos para Linguagem de interrogao: introduz o conceito de linguagem de interrogao Controle centralizado dos dados: normas, regras de integridade, polticas de

reduzido o espao ocupado;

compartilhamento das informaes de forma fcil e transparente;

manuteno da estrutura interna do banco de dados;

que permite de forma simples a recuperao e manipulao das informaes;

segurana e mtodos de recuperao residem em um mesmo local. Algumas operaes bsicas possveis de serem realizadas em um banco de dados:

Adicionar novos arquivos; Buscar dados; Inserir dados nos arquivos existentes; Alterar dados em arquivos existentes; Eliminar dados em arquivos existentes; Remover arquivos existentes.

No entanto, algumas contrapartidas tambm foram provenientes do surgimento dos bancos de dados:

Criao de pontos de conflito que surgiram atravs do compartilhamento dos Necessidade de especializao tecnolgica e profissional; Criao de motivos para conflito organizacional.

dados;

Os bancos de dados podem atuar em diferentes nveis. A seguir(figura 2) so apresentados alguns tipos de banco de dados e os nveis de atuao em que podemos encontrlos: CONHECIMENTO EIS Executive Information System
Que fatores influenciam vendas em Paris? Quais as tendncias significativas? Banco de Dados Estratgico

DSS Decision Support System

INFORMAO
Banco de Dados de Apoio a Deciso Vendas mensais por produto em Paris? Quais so as tendncias?

DADOS OLTP On Line Transaction Processing


Banco de Dados Operacionais Qual o preo do produto X?

Figura 2 Tipos de banco de dados e nveis de atuao. Fonte: Adaptado de Yourdon(1990).

Um dos maiores benefcios dos bancos de dados: promover uma viso abstrata dos dados, ou seja, ocultando detalhes dos mecanismos de armazenamento e manuteno dos dados. Trs nveis de abstrao principais podem ser percebidos:

Nvel de viso externo: Mais alto nvel de abstrao. Viso de cada usurio. Nvel lgico(conceitual): Nvel mdio de abstrao. Viso da comunidade de

Descreve apenas parte do banco de dados que um dado grupo de usurios tem interesse.

usurios. Quais dados esto armazenados no banco de dados, e quais os interrelacionamentos entre eles.

Nvel fsico: Mais baixo nvel de abstrao. Como os dados esto de fato

armazenados no SGBD. Para gerenciar os diversos servios de um banco de dados surgiram os Sistemas Gerenciadores de Banco de Dados(SGBDs).

3.1.SISTEMA GERENCIADOR DE BANCO DE DADOS(SGBD)


Sistema de gerenciamento do banco de dados ou SGBD, tambm conhecido como DBMS(DataBase Management System). O SGBD o produto de software responsvel pelo

gerenciamento do banco de dados. Seus principais componentes so(figura 3): equipes de desenvolvimento, administradores de dados(DAs), administradores de banco de dados(DBAs), usurios, ferramentas case, interfaces para interao com o usurio, aplicaes, dicionrio, catlogo e o base de dados em si. Entendendo melhor os componentes de um SGBD:

Catlogo: contm a definio do banco de dados, descrita em forma de um

meta-modelo de dados(especfico para cada SGBD), utilizando o mesmo modelo lgico que o usado para a concepo da base de dados. Exemplo: Em um SGBD relacional, o catlogo contm as definies das tabelas, vises, regras de integridades, etc. O catlogo por vezes designado como Dicionrio de Dados.

Interface de interao com o usurio: define o modo de interao com a

informao contida em um banco de dados. Tal como em um ambiente baseado em arquivos, atravs de programas escritos especificamente para o efeito. Mas agrega ainda: Linguagens de pesquisa(Query languages) e outras interfaces para administrao do banco de dados.

Administrao de Dados: a funo responsvel pela gesto global dos

recursos informacionais de uma organizao, incluindo a definio e manuteno de conceitos e normas relativas ao(s) modelo(s) de dados/informao da organizao.

Administrao de Banco de Dados: a funo tcnica responsvel pelo

desenho lgico (em colaborao com as equipes de desenvolvimento) e fsico do banco de dados. So ainda da sua responsabilidade a implementao de mecanismos de controle de segurana e de recuperao da base de dados, alm da monitoramento do desempenho.

Ferramentas Case(Computer Aided Software Engineering): uma aproximao As ferramentas case oferecem:

disciplinada e estruturada ao desenvolvimento de sistemas apoiadas por computador.

Maior produtividade Melhor qualidade Reverse engineering engenharia reversa Melhor planejamento e controle A criao de um ambiente de desenvolvimento Em todas as fases de desenvolvimento de Sistemas de Informao Upper case: usadas nas fases de anlise e desenvolvimento. Lower case: usadas nas fases de concepo (desenho) e construo.

podemos recorrer a ferramentas CASE.


Dados os requisitos de compatibilidade entre as ferramentas usadas nas vrias fases, necessria integrao: I-CASE - Integrated Case. Existem vrias formas de integrao, entre elas:

Ferramentas de um nico fornecedor, cada uma suportando uma Ferramentas heterogneas que se comunicam atravs de interfaces e Ferramentas heterogneas que partilham um repositrio comum

atividade;

bridges;

contendo todas as definies, modelos, diagramas, etc; Funcionalidades importantes de um ambiente case integrado:

O cdigo gerado automaticamente(free-bug); Parte do desenho pode ser gerada; A consistncia dos modelos assegurada; Existe consistncia entre o trabalho de cada elemento da equipe; A documentao gerada automaticamente; A manuteno feita por re-gerao.

No quadro a seguir so apresentadas algumas ferramentas CASE encontradas no mercado hoje: Ferramenta Oracle Designer DbDesigner Fork System Architect Microsoft Visio Finalidade Modelagem de banco de dados Modelagem de banco de dados Modelagem de banco de dados Modelagem de diversos tipos de diagramas incluindo modelagem de banco de dados e UML Modelagem de banco de dados Ferramenta completa para anlise, modelagem, design e construo de aplicaes Modelagem UML Modelagem UML Licena Shareware Free Shareware Shareware Link http://www.oracle.com http://sourceforge.net/p rojects/dbdesigner-fork/ http://www.popkin.com/ http://www.microsoft.co m/

Design for Databases IBM Rational

Shareware Shareware

http://www.datanamic.c om/dezign/index.html http://www01.ibm.com/software/br /rational/

Poseidon Jude Community

Shareware Free

http://www.gentleware. com/ http://jude.changevision.com/judeweb/index.html

StarUML ArgoUML Mogwai ER Designer

Modelagem UML Modelagem UML Modelagem de banco de dados

Free Free - Open Source Open Source

http://staruml.sourcefor ge.net/ http://www.tigris.org/ http://mogwai.sourcefor ge.net/? Welcome:ERDesigner_ NG http://www.gnome.org/ projects/dia/

Dia

Similar ao Microsoft Visio. Permite desenhar diagramas incluindo modelagem de banco de dados Data Modelagem de banco de dados

Free - Contributions suggested

ER/Studio Architect

Shareware

http://www.embarcader o.com/products/erstudio-data-architect

Dicionrio: base de dados que contm os modelos desenvolvidos usando a ferramenta CASE. Constitui a base para a integrao dos modelos construdos durante o ciclo de desenvolvimento de um projeto, sendo a fonte de informao que serve de input operao de definio da base de dados e do cdigo das aplicaes.

A figura 3, a seguir, ilustra os componentes de um SGBD e a interao entre eles. Equipes de Desenvolvimento Administradores de Dados - DAs Administradores de Banco de Dados DBAs

Usurios

FERRAMENTAS CASE

USER INTERFACE

APLICAES

DICIONRIO

CATLOGO

SGBD

BASE DE DADOS

Figura 3 Componentes de um banco de dados.

10

Os SGDBS devem apresentar algumas caractersticas fundamentais, dentre elas:

Basear-se em um modelo lgico de dados(rede, hierrquico, relacional, Gerenciar:

orientados a objetos);

Integridade:

prover

mecanismos

para garantir

a integridade

e o

armazenamento dos dados;

Transaes: permitir um controle eficaz de transaes a fim de evitar a Concorrncia: o SGBD j surgiu com a ideia de poder ser acessado por

entrada de dados inconsistentes;

mltiplos usurios simultaneamente, portanto, cabe a ele gerenciar estes acessos concorrentes;

Recuperao: garantir a possibilidade de recuperao das informaes, Disponibilidade: garantir o mnimo de disponibilidade possvel para manter Controle de acessos: permitir o controle de acesso.

seja por controles de tolerncia a falha ou mecanismos de backup;

o sistema estar on-line quando necessrio;


Assegurar um desempenho adequado.

Exemplos de alguns SGBDs(quadro 2) que podem ser encontrados sob licenas comerciais ou livres:
Comercial DB2 - http://www-306.ibm.com/software/data/db2/ Informix 306.ibm.com/software/data/informix/ Livre MySQL - http://www.mysql.com http://www- Firebird http://www.firebirdsql.org - PostgreSQL http://www.postgresql.org Cache http://www.intersystems.com/cache/index.html HSQLDB - http://hsqldb.org -

Interbase http://www.codegear.com/br/products/interbase Oracle http://www.oracle.com Sybase - http://www.sybase.com.br

MsSQL Server http://www.microsoft.com/brasil/servidores/sql/default .mspx Quadro 2 Alguns SGBDs comerciais e/ou livres. Fonte: Sites internet.

A seguir so apresentados os modelos lgicos de banco de dados.

3.2.MODELOS LGICOS DE BANCO DE DADOS


Os modelos lgicos so utilizados para descrever os dados no nvel lgico ou conceitual. Alguns modelos lgicos conhecidos:

11

a) Modelos Lgicos baseados em registros: rede, hierrquico e relacional. Nestes modelos o banco de dados estruturado atravs de registros de formato fixo de todos os tipos. Possui um nmero fixo de campos(atributos), e cada campo possui tamanho fixo simplificando a implementao do banco de dados no nvel fsico. Descrio dos modelos baseados em registro:

Rede: Neste modelo os registros so representados por um conjunto de e as relaes entre estes registros so representadas por

registros(como no pascal) arbitrrio de grafos1.

links(ponteiros). Os registros so organizados no banco de dados por um conjunto Exemplo do modelo em rede:
Mrio Av. S. Carlos So Paulo 1234 1333 Rui Rua XV So Carlos 7556 Silvia

55,00 600,00 3000,00 350,00

Av. D. Pedro

Itu

5512

Hierrquico: Similar ao modelo em rede por seus dados e suas relaes serem A diferena no modelo hierrquico, que seus

representados por registros e links. Exemplo do modelo hierrquico:

registros esto organizados em rvores ao invs de grafos arbitrrios.

Mrio

Av. S. Carlos

So Paulo Rui Rua XV So Carlos 7556 1333 600,00

Silvia

Av. D. Pedro

Itu

1234

55,00 3000,00 7556 3000 5512

350,00

Relacional: Usa um conjunto de tabelas para representar tanto dados como a

relao entre eles. Cada tabela possui mltiplas colunas(atributos) e cada uma possui um nome nico.

Grafo: um conjunto de pontos, chamados vrtices (ou nodos ou ns), conectados por linhas, chamadas de arestas (ou arcos).

12

Exemplo de um modelo relacional:


NOMCLI Mrio Rui Rui Silvia Silvia RUACLI Av. S. Carlos Rua XV Rua XV Av. D. Pedro Av. D. Pedro CIDCLI So Paulo So Carlos So Carlos Itu Itu NUMCTA 1234 1233 7556 5512 7556 NUMCTA 1234 1233 5512 7556 SALCTA 55,00 600,00 350,00 3000,00

b) Modelo Orientado a Objetos: Todos os padres do modelo orientado a objetos so definidos pela ODMG(Object Database Management Group Fundada em 1991). Padres definidos pela ODMG para este modelo:

Modelo de objetos: um objeto contm valores armazenados em variveis de

instncia dentro do objeto. O objeto tambm contm linhas de cdigo para determinar o comportamento do objeto.

Linguagem de Definio de Dados ODL Linguagem de Consulta OQL Acoplamento com C++, Java e Smalltalk

c) Sistemas Objeto-Relacionais: A rea de atuao dos sistemas Objeto-Relacional tenta suprir a dificuldade dos sistemas relacionais convencionais, que o de representar e manipular dados complexos, visando ser mais representativos em semntica e construes de modelagens. A soluo proposta a adio de facilidades para manusear tais dados utilizando-se das facilidades SQL (Structured Query Language) existentes. Para isso, foi necessrio adicionar: extenses dos tipos bsicos no contexto SQL; representaes para objetos complexos no contexto SQL; herana no contexto SQL e sistema para produo de regras. Diferenas gerais entre os modelos:

O modelo relacional difere por no utilizar links para relacionar os registros; Com o no uso de ponteiros possvel o desenvolvimento de fundamentos Modelos de objetos adicionam recursos como uso de tipos complexos. Exigem

matemticos para sua definio;

que as linguagens suportem o paradigma orientado a objetos.

3.3.GERENCIAMENTO DE TRANSAES
Muitas operaes no banco de dados constituem uma nica unidade lgica de trabalho que apresenta as seguintes caractersticas(utilizando o modelo ACID):

Atomicidade: executar as operaes de forma atmica, ou seja, a operao

13

deve ser executada por completo ou nada deve ser executado;

Consistncia: no banco de dados existem implementaes de restries de Isolamento: uma transao deve ser executa como se nenhuma outra Durabilidade(persistncia): o efeito de uma transao nunca deve ser

consistncia. Espera-se que o banco de dados as garanta e preserve;

estivesse em execuo;

perdido, isso depois que a transao tiver sido concluda. O conceito de transao : coleo de operaes que desempenham uma funo lgica nica dentro de uma aplicao de um sistema de banco de dados.

3.4.VISO GERAL DA ESTRUTURA DO SISTEMA DE BANCO DE DADOS


De forma geral, os componentes funcionais de um sistema de banco de dados podem ser divididos em:

Componentes de processamento de consultas: normalmente o SGBD

apresenta um compilador de consultas, responsvel por analisar a consulta e gerar um plano de execuo para a mesma. Com base neste plano de execuo, que envolve tambm mecanismos de otimizao, ser executada propriamente a consulta;

Componentes de processamento de transaes: normal agruparmos em um

banco de dados uma srie de operaes dentro de uma nica transao. Ento cabe ao SGBD garantir as caractersticas de uma transao. Algumas das funes do processador de transaes: registro de log, controle de concorrncia e resoluo de impasses;

Componentes de administrao de memria: os dados de um banco de dados

residem normalmente em memria secundria, ou seja, disco magntico. Para carregar os dados para a memria principal o SGBD possui um gerenciador de buffers(pequenas regies na memria com dimenses de pgina) que executa esta tarefa atravs do particionamento da memria principal em buffers. Informaes que podem ser necessrias serem carregadas pelo SGBD para a memria: dados: o contedo do banco de dados propriamente dito; metadados: dados que descrevem outros dados; estatsticas: a fim de serem aproveitadas nas consultas; alm dos ndices;

Componentes

de

gerenciamento

do

armazenamento:

parte

de

armazenamento fsico dos dados fica a cargo do SGBD. Estruturas complexas so gerenciadas em segundo plano pelo mesmo, estruturas de dados do tipo: tabela, ndice, rvores, etc. Conhecidos os principais conceitos relacionados a banco de dados e a SGBDs, vamos conhecer os conceitos necessrios para a concepo de um sistema de informao utilizando

14

banco de dados.

4.CONCEPO DE SISTEMAS DE INFORMAO


O processo de concepo de um sistema de informao se d atravs de algumas etapas. Etapas estas, compostas por:

Processo de anlise dos requisitos organizacionais; Desenvolvimento de um modelo conceitual que represente estes requisitos; Transformao do modelo conceitual em um modelo lgico e modelo fsico,

utilizando uma tecnologia de banco de dados. Entendendo as etapas para concepo de um sistema de informao(figura 4): 1. Anlise de requisitos: Identificar e descrever os dados e processos pretendidos pela organizao, no que diz respeito a determinado subsistema de informao em estudo. 2. Construo do modelo conceitual: Sintetizar num modelo global as diferentes necessidades dos vrios tipos de usurios. Descrever entidades, atributos e associaes, independentemente da tecnologia de banco de dados que venha a ser utilizada. 3. Construo do modelo lgico: Transformar o modelo conceitual num modelo lgico dependente da tecnologia de banco de dados a utilizar. 4. Construo do modelo fsico: Definir estruturas fsicas de dados que sejam mais adequadas para um ambiente tecnolgico especfico. Estabelecer estratgias de segurana, recuperao e backup.
Necessidade de informao

Anlise de Requisitos
Especificao de requisitos

Modelo de dados da empresa

Caractersticas de HW/SO

Construo do Modelo Conceitual


Estrutura conceitual da informao

Construo do Modelo Lgico


Estrutura lgica dos dados e aplicaes

Construo do Modelo Fsico


Estrutura fsica dos dados

Necessidades de informao Caractersticas do SGBD Figura 4 - Etapas para concepo de um Sistema de Informao.

15

a) Anlise de requisitos: Processo de identificao e documentao dos dados, informao e processamentos requeridos pelos usurios finais, de modo a satisfazer as necessidades organizacionais. Durante esta fase , estamos interessados em:

Informaes que descrevam as estruturas de dados(tais como entidades, Informaes que descrevam as regras ou restries que preservam a Informao acerca dos processamentos operacionais e de gesto necessrios

atributos, associaes);

integridade dos dados;

ao negcio da organizao. Tarefas na Anlise de Requisitos:


Definir o mbito do subsistema em estudo; Estabelecer a linguagem de comunicao; Identificar as necessidades e requisitos dos usurios; Identificar requisitos operacionais.

Anlise de requisitos: utilizando duas perspectivas.

Anlise de funes: Estudo dos dados que fluem no subsistema e os

processamentos/atividades que utilizam e/ou transformam esses dados. Normalmente utilizam-se tcnicas como o Diagramas de Fluxos de Dados, Dicionrio de Dados e Especificao de Processos.

Anlise de dados: Levantamento dos subconjuntos de dados requeridos por

cada usurio, de modo a este poder realizar as suas tarefas. Nesta perspectiva analisamse cada uma das user views vises do usurio, identificando e definindo os respectivos dados. Anlise de requisitos: qual perspectiva adotar?: O ideal ser utilizar estas duas perspectivas em complemento uma com a outra para a elaborao da anlise de requisitos.

A anlise de funes d-nos a viso do funcionamento de um sistema como

um todo, mas em que no temos detalhes suficientes em relao s estruturas de dados e suas associaes;

Por outro lado, a de anlise de dados mostra-nos que estruturas de dados e

suas associaes so necessrias, dando pouca nfase aos diferentes funcionamentos do sistema. Anlise de requisitos: Com qual se inicia a anlise?

Se, no subsistema em estudo, os usurios finais conseguem descrever com

16

certa preciso o seu funcionamento em termos de atividades, ento normalmente inicia-se a anlise orientadas para as funes.

Se os usurios esto mais seguros quanto aos dados que utilizam e da sua

caracterizao, ento inicia-se a anlise orientada para os dados. Anlise de requisitos pode utilizar-se de alguns mtodos e tcnicas de levantamento de requisitos, dentre eles: documentao, observao, entrevista e engenharia reversa(Reverse Engineering). Uma vez realizada a anlise de requisitos parte-se para a construo do modelo conceitual. b) Construo do Modelo Conceitual:

Utilizao Modelo

de

uma

aproximao associao

especfica, (Entity

adequada

modelao ou (Entity

sistematizada dos requisitos;

entidade

Association:

EA)

Relationship: ER);

Modelos orientados a objetos;

Selecionado o modelo, utiliza-se uma notao diagramtica: representao

grfica. c) Construo do Modelo Lgico: neste ponto so realizadas as tarefas de:

Transposio do modelo conceitual para um modelo de organizao de Adoo de uma modelo lgico especfico; Exemplo: Converso de diagramas E(ntidade)-A(ssociao) em tabelas

estruturas(lgicas) de dados

(ou relaes) de um modelo relacional. d) Construo do Modelo Fsico: A gesto e manipulao dos dados do modelo fsico feita a partir de funcionalidades oferecidas pelas ferramentas de Administrao da Base de Dados contidas no SGBD.

4.1.MODELAGEM DE DADOS E INFORMAO


Tem a funo de identificar, analisar e registrar a poltica da organizao face aos dados referentes ao sistema de informao. A modelagem de informao tem mrito de levantar questes sobre as regras da organizao, resultando frequentemente na identificao de novas necessidades de informao ou na resoluo de incoerncias no atual tratamento da informao. Modelagem: no sentido lato da informao, o modelo organizacional est embebido no sistema de informao a conceber. Modelagem = Modelao ou Modelizao. Nveis para o Modelo: so apresentados dois.

17

Modelo conceitual: representao da realidade, sem atender a quaisquer Modelos lgico e fsico: Adaptao do modelo conceitual s caractersticas Estruturas de dados(modelo lgico); Bytes on Disk(modelo fsico).

constrangimentos impostos pelo ambiente de tecnologia;

prprias do sistema tecnolgico;


Passo importante do processo de concepo de um sistema de informao, a adoo de uma metodologia de modelagem adequada.

4.2.METODOLOGIA DE MODELAGEM
Apresentao do mtodo Top-Down. Conforme Chen, o mtodo permite a construo do modelo por fases, partindo dos grandes objetos de informao(entidades) e identificando as suas inter-relaes(associaes). Este mtodo produz bons elementos de comunicao com os usurios. No exige esforo inicial de levantamento de nveis mais elementares de informao(atributos), o que impensvel em grandes sistemas de informao. Especificao do modelo conceitual: pode ser em dois nveis. Grfico Diagrama ER(Entidade-Relacionamento)

Descritivo: especificao para cada componente do modelo.


Descrio de entidades Descrio de associaes

Descrio de atributos

18

Etapas do mtodo, propostas por Chen: 1) Anlise das necessidades informacionais e elaborao do modelo conceitual(ER ou OO).

2) Transformao do modelo conceitual (p.e. Diagrama EAA) num modelo lgico(p.e. Conjunto de tabelas do modelo lgico - relacional)
Tabelas no normalizadas

3) Normalizao das tabelas


Tabelas normalizadas

4) Desenho fsico e implementao


Figura 5 Etapas do mtodo top-down.

Principais conceitos relacionados ao Modelo Entidade-Associao(E-A):

Bsicos

Entidade Associao Atributo Entidade Associao Associao Exclusiva Generalizao

Extenses

A representao de um modelo chamada de esquema do banco de dados. Modelos podem ser presentados de forma grfica e de forma textual. Na forma textual pode ser utilizada linguagem natural representada por exemplo atravs de uma gramtica BNF(BackusNaur Form, utilizada para descrever gramticas livres de contexto). Nesta apostila especificamente sero adotadas representaes com formas grficas. Descrio dos conceitos do Modelo E-A: Entidade: Qualquer objeto ou conceito com interesse para a organizao, sobre o qual se quer guardar informaes e que possa ser identificvel de forma inequvoca. Manter informaes sobre o objeto, armazenadas.

19

Exemplos: Contrato, Produto, Fornecedor, Cliente, Aluno, Professor, Livro, ..., etc. Substantivos comuns? representao diagramtica ou grfica

... nome da entidade ...

Atributos: para cada entidade necessrio conhecer as suas propriedades relevantes para o sistema. Um atributo qualquer propriedade de uma entidade. Os atributos so sempre elementos atmicos(indivisveis) de informao e que assumem diferentes valores de um DOMNIO. Domnio o conjunto de valores que um atributo pode assumir. Exemplos: Nmero do Cliente, Nome do Cliente, Cdigo do produto, etc. Tipos de atributos:

Identificadores ou chaves candidatas: So os atributos de uma entidade que

identificam uma ocorrncia especfica dessa entidade, distinguindo-a das restantes so tambm chamados de identificadores de entidade. Para que um atributo seja identificador necessrio que no existam duas ocorrncias distintas dessa entidade nas quais o atributo tenha o mesmo valor. Exemplo: Qual o atributo identificador para cliente?
Nmero do Cliente 1234 1235 1236 1237 Nome do Cliente Silva Martins Silva Lopes Categoria J H L L

Nmero Nome do Cliente do Cliente

Categoria

Nmero do Cliente

Nome do Cliente Categoria

Cliente

Cliente

Descritores: So os atributos que apenas descrevem ou caracterizam as

ocorrncias de uma entidade. Atributos tambm pode apresentar cardinalidade. Se a cardinalidade for (1,1), estes

20

atributos so chamados de monovalorados, e a cardinalidade pode ser omitida. Atributos com cardinalidade mnima 0, so chamados de opcionais. Atributos com cardinalidade mxima n so chamados de multivalorados. O conceito de cardinalidade melhor explicado mais a frente. Associao(Relacionamento): As associaes representam as interligaes relevantes entre as entidades do sistema. Um associao pode relacionar:

Duas entidades entre si(binria) Vrias entidades entre si(complexa) Uma entidade consigo prpria(unria) representao diagramtica ou grfica

... nome da associao ...

Exemplo de uma associao: Uma associao que relacione EMPREGADO com o DEPARTAMENTO limita-se a indicar:

Os empregados ligados a um departamentos A que departamento est ligado um empregado 1 N


... te m ligado ...

Departamento

Empregado

Normalmente uma associao limita-se a relacionar entidades entre si, no entanto, podem haver associaes com caractersticas prprias. Entidade associativa: H, no entanto, situaes em que as associaes tm atributos prprios. Exemplo: Uma associao que relacione fornecedor com produto, para alm de indicar quais os fornecedores de um produto e quais os produtos fornecidos por um fornecedor, pode conter o preo pelo qual um fornecedor fornece produto.

preco
M N
... pode fornecer ...

Fornecedor

Produto

Entidades versus Associaes: Para distinguir entidades de associaes podemos socorrer-nos do vocabulrio.

21

Geralmente utilizam-se:

Substantivos: para referenciar Entidades; Verbos: para referenciar Associaes. Quer para a definio conceitual da entidade(ou associao); Quer para referenciar qualquer ocorrncia dessa entidade(ou associao).

Na terminologia corrente utiliza-se o termo Entidade(ou Associao):


Entidades e associaes: um exemplo.


2 entidades, Armazem (2 ocorrncias) e Produto (5 ocorrncias) 1 associao, Armazena, com 5 ocorrncias 1 N


arm aze na

Armazem

Produto

Produto 1 Produto 2 Armazem 1 Armazem 2 Produto 3 Produto 4 Produto 5


Propriedades das Associaes: grau de uma associao ou cardinalidade. O grau de uma associao ou cardinalidade se refere ao nmero de ocorrncias de uma entidade em relao a outra. A definio da cardinalidade apresenta o nmero mnimo e mximo de ocorrncias de entidades associadas. Para facilitar o entendimento da cardinalidade muito til construir um diagrama de ocorrncias. Um diagrama de ocorrncias uma representao grfica, onde: as ocorrncias de entidades so representadas por crculos brancos; ocorrncias de relacionamentos so representados por crculos negros; ocorrncias de entidades participantes de uma ocorrncia de relacionamento so indicadas pelas linhas que ligam o crculo negro representativo da ocorrncia de relacionamento aos crculos representativos das ocorrncias de entidades relacionadas(HEUSER, 2004).

22

Vamos a um exemplo:

Figura 6 Exemplo de um diagrama de ocorrncias. Fonte: Heuser(2004).

Associaes binrias: associam duas entidades entre si.


Associaes 1:1 (1 para 1) Associaes 1:N (1 para muitos) Associaes M:N (muitos para muitos)

Associaes 1:1: Exemplo: Num curso cada mdulo ministrado por um s instrutor, e cada instrutor ministra apenas um mdulo. 1 1
ministra

Instrutor

Modulo

Associaes

1:N:

Exemplo:

Um

departamento

tem

lotados

vrios

empregados(eventualmente s um ou mesmo nenhum), e um empregado est ligado apenas a um departamento(ou nenhum). 1 N


tem ligado

Departamento

Empregado

Associaes M:N: Exemplo: Um livro pode ser escrito por vrios autores, assim com um autor pode escrever vrios livros. M N
es cre ve

Autor

Livro

23

Conectividade de uma Associao: Uma entidade participa numa associao de duas formas:

Obrigatria(ou total): No pode existir nenhuma ocorrncia dessa entidade que No obrigatria(ou parcial): Podem existir ocorrncias dessa entidade que no

no esteja associada a alguma ocorrncia de outra entidade que participa na associao.

estejam associadas a alguma ocorrncia da outra entidade que participa na associao.

...

A: Obrigatria - B: No-obrigatria (independente do grau) Exemplos:

Fatura

te m

Linha_Fatura

Leitor

Re quis ita

Livro

Associaes exclusivas: Por vezes, duas ou mais associaes de uma mesma entidade so mutuamente exclusivas. Esta situao representada atravs do Arco de exclusividade, que unes as associaes relevantes para a exclusividade. Exemplo: Uma conta bancria pode pertencer a uma pessoa fsica ou a uma pessoa jurdica, mas sempre a uma delas e nunca a ambas. Pessoa Fsica Conta

Pessoa Jurdica

Associaes complexas: A abordagem ER permite a construo de relacionamentos de grau maior que 2(ternrios, quaternrios, etc), portante, associaes complexas associam

24

entre si mais que duas entidades. Devem ser usadas apenas quando o conceito inerente associao no possa ser representado por um conjunto de associaes binrias entras as entidades envolvidas.

Como definir o grau de uma associao complexa?: Fixa-se cada par de entidades e analisa-se qual o nmero de ocorrncias da terceira entidade. No exemplo:

para o par Produto,Cidade s pode existir uma ocorrncia de Distribuidor para o par Cidade,Distribuidor podem existir n ocorrncias de Produto para o par Produto,Distribuidor podem existir n ocorrncias de Cidade Produto

Cidade

distribuio

Distribuidor

Generalizao: Uma entidade E a generalizao das entidades E1...En, se cada ocorrncia de E1...En tambm ocorrncia de E. As entidades E1...En podem ser entendidas como entidades especializadas de E. Empregado generalizao

Secretria

Engenheiro

Motorista sub-entidades

25

No quadro a seguir so apresentadas notaes diagramticas adotadas neste material.


Notao Diagramtica Geral Conceito Entidade Representao Grfica

Associao

Entidade Associativa

Atributo

Chave Candidata ou Identificador

atributo
Associao Exclusiva

Generalizao

Notao Diagramtica nas Associaes(notao p-de-galinha da engenharia de informaes)

um

muitos

um e somente um

um ou muitos

zero ou um

zero ou muitos

26

Notao alternativa para as Associaes(notao Chen)

1 um 1 um e somente um 1 zero ou um

N muitos N um ou muitos N zero ou muitos

O prximo passo de modelagem a seleo de um modelo lgico de banco de dados e a converso do modelo conceitual para o modelo escolhido. Nesta apostila o modelo lgico a ser trabalhado o relacional. A seguir so apresentadas mais caractersticas deste modelo.

4.3.MODELO RELACIONAL
O modelo relacional tornou-se disponvel na dcada de 70. Desde ento este modelo tem sido implementado em um grande nmero de SGBDs comerciais e livres, como: DB2, Informix(IBM), Oracle, SQL Server, PostgreSQL, entre outros. Neste captulo sero explicados os principais conceitos relacionados ao modelo relacional. Nveis de abstrao em um Sistema de Banco de Dados(figura 6): antes de chegarmos a um modelo mais completo, muitos modelos parciais ou intermedirios podero surgir.
Modelo parcial 1

Modelo parcial 2

Banco de Dados Lgico

Banco de Dados Fsico

Modelo parcial n Figura 6 - Nveis de abstrao em um Sistema de Banco de Dados.

27

Como formado o modelo de dados(figura 7): alm das estruturas de dados so disponibilizadas regras de integridade: para garantir a integridade das informaes; e operadores que auxiliaro na manipulao da informaes.

Tipos de Estruturas de Dados

Operadores

Regras de Integridade

Figura 7 Estrutura do modelo de dados relacional.

A estruturas bsicas do modelo relacional so as relaes ou tabelas:

RELAES: implementadas na forma de TABELAS.

Tipos de Estruturas de Dados

Operadores

Regras de Integridade

O que uma relao ou tabela? um conjunto no ordenado de linhas ou tuplas.

28

Exemplo de uma Relao(EMPREGADO): NUMEMP NOMEMP TELEMP CATEMP SALEMP 10 20 30 40 50 Antunes Bento Correia Dias Edmundo 12345678 12345668 12345679 12345670 12345688 B A B C B 100 250 60,50 90,50 120

COMEMP 15 50

FUNEMP Analista Diretor Porteiro Programador

12.5

Contador
Domnio

Domnio Cadeia de caracteres de comprimento inferior ou igual a 20 Nmeros inteiros e positivos

Alguns conceitos importantes sobre uma relao: a) Grau: nmero de colunas da relao. b) Atributo: ou colunas. Propriedades particulares que a descrevem. c) Esquema da relao: definio da relao Exemplo:

Empregado(numemp, nomemp, telemp, catemp, salemp, comemp, funemp)

d) Esquema relacional: Definio de um Banco de Dados relacional sob a forma de um conjunto de esquemas de relao. e) Chave candidata(Candidate Key): considerada a chave candidata de uma relao. Define o conjunto mnimo de atributos que identificam cada ocorrncia da relao. No existem duas linhas da relao com o mesmo conjunto de valores neste atributo(ou atributos). Relao CLIENTE
NUMCLI 10 20 30 40 50 NOMCLI Antnio Abreu Bernardo Bento Carlos Castro Daniel Dantas Manuel Matos RUACLI Alberto Antunes Beta Brs Clara Campos Dominicana Marco Moita CIDCLI Andorra Bruxelas Camberra Camberra Maputo PAIS Andorra Blgica Canad Canad Moambique TIPCLI 1 2 1 2 1 NUMCON 123.456.789 789.123.654 987.456.321 789.098.543 765.098.345

Chaves Candidatas

29

h) Chave primria(Primary Key): Chave primria da relao -> Entre as chaves candidatas de uma relao, escolhe-se uma para ser a chave efetiva da mesma(a que for mais til no sistema em questo). A essa chave, d-se o nome de chave primria. i) Chave estrangeira(Foreign Key): Chave estrangeira de uma relao -> Em algumas relaes, temos um atributo(ou conjunto de atributos) cujas ocorrncias so referncias chave primria de uma outra relao. A esses atributos damos o nome de Chaves Estrangeiras. Exemplo de chave estrangeira:
NUMEMP 01 02 03 04 NOMEMP Joo Jos Gil Jlio CODCAT C3 C1 C2 C1 CODCAT C1 C2 C3 C4 DESCAT Diretor Tcnico Administrador Auxiliar SALBSE 300,00 200,00 120,00 90,00

Chave Estrangeira
h) Domnio: representa o conjunto de valores atmicos que um atributo pode conter. i) Definio de Banco de Dados Relacional: Conjunto de relaes, cujo contedo varia ao longo do tempo. Exemplo de um Banco de Dados Relacional:

FATURA
NUMFAT 01 02 03 DATEMI 01/01/1989 12/02/2004 15/03/2001 DATPAG 15/01/1989 25/04/2004 20/03/2001 NUMCLI 10 20 20

PRODUTO
CODPRO NOMPRO 01 02 03 Lpis Caneta Rgua PRECO 100 150 500 QTDPRO 2543 1321 354

CLIENTE
NUMCLI NOMCLI RUACLI CIDCLI PAIS TIPCLI

FATURA_PRODUTO
NUMFAT 01 01 01 02 02 CODPRO 01 02 03 01 02 03 01 QTDFAT 30 15 23 40 10 15 25

10 20 30 40

Antnio Abreu Carlos Castro Daniel Dantas

Alberto Antunes Andorra Bruxelas Clara Campos Dominicana

Andorra Blgica

1 2 1 2

Bernardo Bento Beta Brs

Camberra Canad Camberra Canad

Linhas de fatura

02 03

30

03 03

02 03

60 10

Esquema relacional do banco apresentado anteriormente: CLIENTE(numcli, nomcli, ruacli, cidcli, pais, tipcli) FATURA(numfat, datadm, datpag, numcli) PRODUTO(codpro, nompro, preco, qtdpro) FATURA_PRODUTO(numfat, codpro, qtdfat) Operadores do Modelo Relacional: operadores utilizados para manipular as informaes contidas nas relaes.

Tipos de Estruturas de Dados

Operadores

Operaes sobre as RELAES.

Regras de Integridade

Comportamento dos operadores relacionais: Operandos R1 Resultado

R2

Operador Relacional

Resultado final

R3

Relaes Resumo do funcionamento das operaes de lgebra relacional: seleo, projeo, produto cartesiano, juno, unio, interseo, diviso, diferena.

31

Seleo

Projeo

Produto Cartesiano X

Juno

<== Unio R R S Interseo R S S Diferena Diviso

==>

Conceito de valor NULL: Numa relao podemos, em determinado momento, ter um atributo cujo valor desconhecido ou no aplicvel no momento. Diz-se ento que esse elemento tem o valor NULL. Caractersticas dos valores NULL:

Independentes de domnio: inteiro, real, caracter, data, etc. No comparveis entre si: no possvel dizer que um valor NULL igual a

outro valor NULL.

Regras de Integridade do Modelo Relacional: um banco de dados relacional deve prover recursos para permitir a integridade das informaes.

Tipos de Estruturas de Dados

Operadores

Regras de Integridade

Integridade das Entidades: tambm chamado de integridade de identidade. Diz que

32

nenhum componente da chave primria de uma relao poder em algum momento ter valor NULL, em qualquer um de seus atributos. Integridade de Domnio: Cada coluna de uma relao tem um domnio, isto , um conjunto(limitado ou no) de valores possveis. Em todas as linhas dessa relao, o valor dessa coluna ter que pertencer sempre a esse domnio. Integridade de Coluna: refinamento da integridade de domnio. Exemplo: EMPREGADO(numemp, nomemp, ruaemp, salemp, tipoemp)

Domnio: nmeros inteiros numemp -> positivo, mltiplo de 5 Regras de refinamento para coluna: Tipemp -> valores entre -10 e 10

Integridade Referencial: Numa relao, qualquer ocorrncia de uma chave estrangeira dever obrigatoriamente existir como ocorrncia da chave primria da relao qual se refere. Integridade Definida pelo Usurio: Qualquer outra regra a que as ocorrncias de um determinado banco de dados dever obedecer e que no abrangida pelos tipos mencionados anteriormente. Apresentadas as caractersticas do modelo lgico relacional, vamos conhecer o que um SGBD relacional tem a oferecer.

4.4.SGBD RELACIONAL
O que faz de um SGBD relacional? Segundo Codd(1985b) um SGBD pode ser considerado minimamente relacional se satisfaz as seguintes condies:

Estrutura: Ao usurio so apresentadas apenas tabelas e nada mais do que Manipulao: Suporta operaes de restrio, projeo e juno natural, sem

tabelas.

necessidade e definio de caminhos fsicos de acesso para estas operaes. A partir da definio de Codd, Date(2004) sugere uma classificao para SGBDs relacionais: 1. Tabular: Suporta a estrutura tabular, mas no os operadores relacionais; 2. Minimamente relacional: Suporta a estrutura tabular e os operadores de restrio, projeo e juno(apenas estes);

33

3. Relacional: Suporta a estrutura tabular e todos os operadores da lgebra relacional; 4. Completamente relacional: Suporta todos os aspectos do modelo relacional(estrutura tabular e domnios, todos os operadores da lgebra relacional e a integridade de entidades e referencial). Segundo um artigo posterior de Codd(1985a) um SGBD completamente relacional(fully relational) se gerencia o banco de dados utilizando apenas e s as possibilidades oferecidas pelo modelo relacional. Assim sendo, o SGBD relacional, tem de satisfazer as seguintes 12 regras: 1. Informao em tabelas 2. Garantia de acesso 3. Tratamento sistemtico de valores nulos 4. Catlogo on-line e ativo baseado no modelo relacional 5. Sublinguagem de manipulao de dados compreensvel 6. Atualizao de views 7. Insert, Update e Delete de alto nvel: tratamento de conjuntos 8. Independncia fsica dos dados 9. Independncia lgica dos dados 10. Independncia da integridade 11. Independncia da distribuio 12. No subverso: instrues de baixo nvel no podem quebrar regras de integridade. Conhecidos os principais conceitos do modelo relacional e dos SGBDs relacionais, o momento de converter o modelo conceitual para um modelo relacional.

4.5.TRANSFORMAO DO MODELO CONCEITUAL EM MODELO RELACIONAL


Representao de uma relao: EMPREGADO(numemp, nomemp, datnas)

Nome da relao Chave da relao ou identificador

demais atributos ...

Como se d o processo de transformao/converso: regras gerais.

Entidades: Cada entidade d normalmente origem a uma relao com:

34

Identificador da entidade: chave da relao; Descritores da entidade: outros atributos da relao; Identificadores de outras entidades que eventualmente lhe estejam associadas: Chaves estrangeiras;

Associaes:

Associaes 1:1 e associaes 1:N so representadas normalmente pela adio de novos atributos (chaves estrangeiras) s relaes existentes; Associaes M:N do origem a uma nova relao.

Regras especficas de transformao: Entidades Associativas: as entidades associativas podem ser refinadas em novas entidades. Antes de refinado LINHA PRODUTO PRODUTO ENCOMENDA

Depois de refinado PRODUTO ENCOMENDA

LINHA PRODUTO Associaes Binrias:

Associaes 1:1 1. Caso: Ambas as entidades so obrigatrias. Basta uma tabela para

representar esta situao


EMPREGADO_CARRO(numemp, nomemp, ..., matricula, marca) Chaves candidatas: numemp, matricula

35

Nota: Analisar criteriosamente esta situao: muito limitativa. EMPREGADO


utiliza

CARRO

2. Caso: apenas uma das entidades obrigatria. Para representar est situao so necessrias 2 tabelas, uma para cada entidade. Colocar o identificador da entidade no obrigatria na tabela correspondente entidade obrigatria.

EMPREGADO(numemp, nomemp, ...) CARRO(matricula, marca, ..., numemp)

EMPREGADO

utiliza

CARRO

3. Caso: Nenhuma das entidades obrigatria. Situao representada por 3 tabelas, 1 por entidade e 1 para a associao.

EMPREGADO(numemp, nomemp, ...) CARRO(matricula, marca, ...) EMPREGADO_CARRO(numemp, matricula)

Chaves candidatas: numemp, matricula

Nota: Esta situao ser normalmente representada por apenas duas tabelas. necessrio ter em conta a proporo do nmero de ocorrncias da associao / nmero de ocorrncias das tabelas associadas.

EMPREGADO

utiliza

CARRO

Associaes 1:N 1. Caso: Entidade do lado N obrigatria. Esta situao representada por

2 tabelas, uma para cada entidade.


DEPARTAMENTO(coddep, nomdep, ...) EMPREGADO(numemp, nomemp, ..., coddep) EMPREGADO

DEPARTAMENTO

trabalha

36

2. Caso: Entidade do lado N no-obrigatria. Esta situao pode ser representada por trs tabelas, uma para cada entidade e uma para a associao.

DEPARTAMENTO(coddep, nomdep, ...) EMPREGADO(numemp, nomemp, ...) EMPREGADO_DEPARTAMENTO(numemp, coddep)


trabalha

DEPARTAMENTO

EMPREGADO

Nota: Esta situao ser normalmente representada por 2 tabelas. necessrio ter em conta a proporo do nmero de ocorrncias da associao / nmero de ocorrncias da tabela EMPREGADO. Associaes M:N

Esta situao sempre representada por trs tabelas, uma para cada entidade e uma para a associao.

FORNECEDOR(codfor, nomfor, ...) PRODUTO(codpro, nompro, ...) FORNECEDOR_PRODUTO(codfor, codpro)

FORNECEDOR

fornece

PRODUTO

Associaes Complexas Esta situao representada por quatro tabelas, uma para cada entidade e uma

para a associao.

DISCIPLINA(coddis, nomdis, ...) ALUNO(codalu, nomalu, ...) PROFESSOR(codpro, nompro,...) ADP(coddis, codalu, codpro)

DISCIPLINA

ALUNO

ADP

PROFESSOR

37

Nota: A chave da associao, neste caso concreto, a concatenao das trs chaves e entidades presentes. Pode no ser assim, pois este fato depende do grau da associao.

DISCIPLINA(coddis, nomdis, ...) ALUNO(codalu, nomalu, ...) PROFESSOR(codpro, nompro,...) ADP(coddis, codalu, codpro) DISCIPLINA

ALUNO

ADP

PROFESSOR

Associaes Unrias 1:N Lado N obrigatrio. Esta situao representado por uma nica tabela.

EMPREGADO(numemp, nomemp, ..., numchf)

Nota: Neste caso, necessrio ter uma ateno que o chefe mximo chefe dele prprio.

EMPREGADO chefe chefia Lado N no obrigatrio. Esta situao representada por duas tabelas, uma para a entidade, outra para a associao. EMPREGADO(numemp, nomemp, ...) CHEFIA(numemp, numchf) subordinado

Nota: Esta situao ser normalmente representada por apenas uma tabela. necessrio ter em conta a proporo do nmero de ocorrncias da associao / nmero de ocorrncias da tabela EMPREGADO.

38

EMPREGADO chefe chefia Associaes Unrias 1:1 Nenhum dos lados obrigatrio. Esta situao representada por duas tabelas, uma para a entidade e uma para a associao.

subordinado

CIDADAO(numcid, nomcid, ...) CASAMENTO(numcid_marido, numcid_esposa) CIDADAO

casamento

Um dos lados obrigatrio. Esta uma situao representada por uma nica tabela. DOCENTE

orientador

Ambos os lados so obrigatrios. Considere-se o registro de casamentos de uma igreja. Esta situao representada por uma nica tabela.

CASAMENTO(numcid_marido,

nome_marido,

...,

numcid_esposa,

nome_esposa) \

39

Chaves candidatas: numcid_marido, numcid_esposa. CIDADAO

casamento Nota: Analisar criteriosamente esta situao: muito limitativa.

Associaes Unrias M:N Esta situao representada por 2 tabelas, 1 para a entidade, 1 para a associao.

PECA(codpec, ...) ESTRUTURA(codpecpai, codpecfil) PECA Pai Filho

estrutura

Finalizado o processo de transformao do modelo conceitual em um modelo relacional passa-se ento para o processo de normalizao.

4.6.NORMALIZAO
Por que Normalizar? Aps a construo do modelo conceitual dos dados feita a transformao para um modelo lgico(esquema relacional). O esquema relacional obtido representa a estrutura de informao de um modelo natural e completo. Mas ter o mnimo de redundncia possvel?

40

A normalizao tem por objetivo avaliar a qualidade do esquema relacional e transform-lo(em caso de necessidade) num esquema relacional equivalente, menos redundante e mais acessvel.

Elim inar grupos re pe titivos

Elim inar depend ncias funcionais(DF's ) parciais

Elim inar de pe ndncias funcionais (DF's) trans itivas

Viso do Us urio

Re laes no norm alizadas

1 Form a Norm al (1FN)

2 Form a Norm al (2FN)

3 Form a Norm al (3FN)

Menos utilizadas

FBNC

4 Form a Norm al (4FN)

5 Form a Norm al (5FN)

Figura 7 - Etapas do Processo de Normalizao.

Dependncia Funcional: Em uma tabela relacional diz-se que uma coluna C2 depende funcionalmente de uma coluna C1(ou que uma coluna C1 determina a coluna C2), quando todas as linhas da tabela, para cada valor de C1 que aparece na tabela, aparece o mesmo valor de C2. Por vezes dois atributos(ou dois grupos de atributos) esto intrinsecamente ligados entre si. Exemplo:

Nmero do Cliente

Nome do Cliente

Num determinada instante, em qualquer ponto da base de dados que figurem estes 2 atributos, a um mesmo nmero de cliente corresponder necessariamente o mesmo nome. O inverso no pode ser verdade. Diz-se ento que: Nome do Cliente depende do Nmero do Cliente ou que: Nmero do cliente determina Nome do Cliente.

41

Dependncias Funcionais Parciais: Uma dependncia funcional parcial ocorre quando uma coluna depende apenas de parte de uma chave primria composta. Exemplo de dependncia parcial:

CHAVE
Relao NOTAS
NUMNOT CODDIS 21934 21934 21934 42346 42346 42346 42346 54323 54323 04 14 23 08 04 12 16 04 08 NOMDIS lgebra Anlise de Sistemas Programao Linear Topologia lgebra Geometria Lgica lgebra Topologia CODPRO 21 87 43 32 21 21 32 21 32 NOMPRO Gil Algbrico Ana Listada Plneo Topo Lgico Gil Algbrico Gil Algbrico Topo Lgico Gil Algbrico Topo Lgico GRAPRO PA PC AS AE PA PA AE PA AE NOTA 15 12 16 10 12 18 13 11 10

Obs.: Os atributos NOMDIS, CODPRO, NOMPRO e GRAPRO dependem apenas do atributo CODDIS (que est estritamente contido na chave da relao). Dependncias Funcionais Transitivas: Uma dependncia funcional transitiva ocorre quando uma coluna, alm de depender da chave primria da tabela, tambm depende de outra coluna ou conjunto de colunas da tabela que no so chave.

CHAVE
Relao DISCIPLINAS
CODDIS 04 14 23 08 12 16 lgebra Anlise de Sistemas Programao Linear Topologia Geometria Lgica NOMDIS CODPRO 21 87 43 32 21 32 NOMPRO Gil Algbrico Ana Listada Plneo Topo Lgico Gil Algbrico Topo Lgico GRAPRO PA PC AS AE PA AE

Obs.: Os atributos NOMPRO e GRAPRO dependem do atributo CODPRO (que no a chave da relao) e portanto CODDIS -> CODPRO, CODDIS -> NOMPRO e CODDIS -> GRAPRO no so

42

diretas. Novas relaes: Relao PROFESSORES


CODPRO 21 87 43 32 NOMPRO Gil Algbrico Ana Listada Plneo Topo Lgico GRAPRO PA PC AS AE

Relao DISCIPLINAS
CODDIS 04 14 23 08 12 16 NOMDIS lgebra Anlise de Sistemas Programao Linear Topologia Geometria Lgica CODPRO 21 87 43 32 21 32

O processo de normalizao composto pelas chamadas formas normais. A seguir as mesmas so descritas com maior detalhamento.

4.7.FORMAS NORMAIS
1) Primeira Forma Normal(1FN): A primeira forma normal resulta na eliminao de grupos repetitivos de atributos em uma entidade, logo, dizemos que uma entidade est na primeira formal normal, quando no possuir atributos com cardinalidade N. Primeira FN: A aplicao da 1FN consiste em:

Eliminar da Entidade os atributos com cardinalidade N, criando uma entidade Definir como chave primria desta nova entidade, a chave da entidade origem

para os mesmos, conforme seu agrupamento.

mais um atributo da nova entidade. Exemplo: CLIENTE 1 - 1 CODCLI 0 - 1 NOMCLI 1 - 1 CEPCLI 1 - 1 CIDCLI

43

0 - N NUMDEPENDENTES 0 - N DATNASDEPENDENTES CLIENTE 1-1 0-1 1-1 1-1 CODCLI NOMCLI CEPCLI CIDCLI 1-1 1-1 11 DEPENDENTE CODCLI NUMDEPENDENTE DATNASDEPENDENTE

2) Segunda Forma Normal(2FN): A 2FN resulta na eliminao de atributos que no dependam dos dois ou mais atributos da chave primria. Podemos observar ento que aplica-se a 2FN, apenas em entidades que possuem chave primria composta, ou seja, entidades com apenas um atributo na chave primria j esto na 2FN. Se no aplicarmos a 2FN para eliminarmos esta anomalia, os atributos que dependem apenas de parte da chave primria se repetiro N vezes na entidade, podendo gerar inconsistncias nos dados armazenados. A aplicao da 2FN consiste em:

Eliminar da entidade os atributos que no dependam de todos os atributos da Criar uma nova entidade com os atributos excludos, mais os atributos da Definir como chave primria desta nova entidade, os atributos herdados da

chave primria;

chave primria que causam a dependncia dos atributos excludos na entidade origem;

chave primria da entidade origem. 3) Terceira Forma Normal(3FN): Resulta na eliminao de atributos que dependam de outros atributos que no faam parte da chave primria. Uma entidade est na 3FN quando todos os atributos da entidade dependam nica e exclusivamente dos atributos da chave primria. Chamamos de anomalia de dependncia transitiva, e quando no solucionada, os atributos com dependncia transitiva iro se repetir na entidade, podendo gerar inconsistncias nos dados armazenados. A aplicao da 3FN consiste em:

Eliminar da entidade os atributos que dependam de atributos que no Criar uma nova entidade com os atributos excludos mais o atributo causador Definir como chave primria desta nova entidade, o atributo herdado da

pertencem a chave primria;

da dependncia transitiva dos atributos excludos;

entidade de origem e que causou a dependncia transitiva.

44

Exemplo: CLIENTE 1-1 0-1 1-1 1-1 CLIENTE 1-1 0-1 1-1 1-1 CODCLI NOMCLI CEPCLI CODCID 1-1 1-1 CODCLI NOMCLI CEPCLI CIDCLI CIDADE CODCID NOMCID

Concluso sobre Normalizao: Uma entidade estar normalizada se estiver atendendo at a 3FN, ou seja, uma entidade estar normalizada se:

No possuir grupos repetitivos de atributos (1FN); Os atributos dependem de todos e unicamente de todos os atributos da chave

primria(2FN e 3FN); Um modelo de dados est normalizado se todas as suas entidades esto normalizadas at a 3 FN. Outras Formas Normais:

Boyce-Codd(FBNC): extenso a 3FN. Uma entidade est na FBNC se e 4FN: Aplica-se a atributos multivalorados. Uma entidade est na 4FN quando 5FN: Uma entidade est na 5FN quando est na 4FN e quando seu contedo

somente se todos os determinantes forem chaves candidatas;

est na 3FN e no possui mais do que um fato a respeito de uma entidade descrita;

puder ser reconstrudo a partir de diversas entidades menores que no possuam a mesma chave primria. Desnormalizao: A normalizao ajuda a preservar a consistncia dos dados, porm, requer navegao atravs de vrias tabelas para composio da informao. Quando desnormalizar?

Observando o imperativo desempenho: Data Warehouse; Aumento ou reduo da granularidade dos dados; Clculos numerosos e complexos; BI(Business Intelligence): para poder modelar vrios nveis de viso da

informao. Na sequncia sero apresentadas algumas linguagens(incluindo as formais) para expressar consultas em banco de dados.

45

5.CLCULO RELACIONAL
O clculo relacional uma linguagem considerada no procedural. Nela os usurios definem as consultas em termos de O QUE ele quer sem descrever COMO obt-la. O clculo relacional se divide em duas categorias: clculo relacional de tupla e clculo relacional de domnio. 1. Clculo relacional de tupla: o objetivo encontrar tuplas para cada vez que o predicado informado verdadeiro. So utilizadas variveis de tupla. Expresso geral: { t | P(t) } = que significa o conjunto de todas as tuplas t, tal que o predicado P seja verdadeiro para t. 2. Clculo relacional de domnio: Nesta forma so utilizadas variveis de domnio que tomam valores do domnio de um atributo, em vez de valores da tupla. Uma expresso neste clculo tem a forma: {<x1, x2, ... , xn > | P(x1, x2, ..., xn)} = onde x1, x2, ... , xn representam variveis de domnio e P representa uma frmula composta de tomos, como no clculo relacional de tupla. Em seguida apresentada a lgebra relacional.

6.LGEBRA RELACIONAL
Antes de entrar diretamente no assunto relacionado linguagem SQL importante conhecer a lgebra relacional, que considerada uma linguagem formal de interrogao. A lgebra relacional uma linguagem procedural. As operaes da lgebra relacional se baseiam na teoria de conjuntos, onde os conjuntos so representados pelas relaes ou tabelas. Dentro da lgebra relacional encontramos algumas operaes consideradas fundamentais, como: projeo, seleo, produto cartesiano, unio e diferena. Alm das operaes fundamentais, existem ainda outras, como: interseo, ligao(juno normal e natural) e diviso. A lgebra relacional compe-se destes operadores para realizar manipulaes de dados em um banco de dados relacional. Alm disso a lgebra relacional a base lgica para a especificao da linguagem SQL, a estrutura de um comando SQL pode ser melhor compreendida tendo-se conhecimento destes conceitos at porque cada comando SQL pode ser desmembrado e representado atravs de uma expresso em lgebra relacional.

46

O poder da lgebra relacional tambm se encontra no fato de que cada operao tem como entrada um ou mais conjuntos, e como resultado obtm-se um novo conjunto. Partindo-se desta ideia possvel se encadear diversas operaes relacionais em uma mesma expresso algbrica onde o resultado de uma operao sobre um conjunto alimenta a prxima operao. Isso aumenta muito o poder desta linguagem de consulta. Alguns conceitos importantes envolvidos na lgebra relacional: a) Relao: representada por por uma tabela de duas dimenses(linhas e colunas); b) Tupla: corresponde a uma linha da relao; c) Atributo: corresponde s colunas da relao; d) Chave primria: conjuntos de atributos que identificam univocamente cada tupla da relao; e) Chave estrangeira: atributo de uma relao que chave primria de outra relao.
Chave Primria Atributos

MATALU

NOMALU

CPFALU

CODCUR

DATNAS

CODCID

Relao

Tuplas Chave Estrangeira

A lgebra relacional apresenta um conjunto de operaes aplicveis sobre modelos relacionais de dados. Estas operaes podem ser agrupadas em duas categorias principais: a) Operadores tradicionais: herdados da matemtica, mais precisamente da teoria de conjuntos.

Unio

Interseo

Diferena

47

Produto Cartesiano

A B C

X Y

AX AY BX BY CX CY

b) Operadores relacionais: criados propriamente para a lgebra relacional. Seleo

Projeo

Juno

Diviso A F1 F1 F1 F1 F1 F1 F2 F2 F3 F4 P1 P2 P3 P4 P5 P6 P1 P2 P2 P2 P1 P2 P3 P4 P5 F1 P1 P4 B P1 C F1 F2 F1

Cada uma das operaes mencionadas anteriormente ser melhor explanada na sequncia e para exemplificao tanto da lgebra relacional quanto da SQL sero utilizados os modelos de dados apresentados a seguir(Modelo 01 e Modelo 02).

48

MODELO DE DADOS 01 Tabela Cargo CODCAR C1 C3 C7 C2 C5 C4 Tabela Departamento CODDEP DESDEP D1 D2 D3 D4 D5 D6 Assist. Tcnica Estoque Administrao Segurana Vendas Cobrana

DESCAR

VLRSAL 350,00 800,00 2500,00 400,00 1000,00 250,00

RAMTEL 2246 2589 2772 1810 2599 2688

Aux. Vendas Vendedor Diretor Vigia Gerente Aux. Cobrana

Tabela Funcionario NUMFUN 101 104 134 121 195 139 123 148 115 22 NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra DATADM 10/08/2003 02/03/2004 23/05/2003 01/12/2001 15/01/2007 12/01/2005 29/06/2003 06/01/2008 15/10/2003 10/02/2000 SEXFUN M M M M F F M F M M CODCAR C3 C4 C5 C3 C1 C4 C7 C4 C3 C2 CODDEP D5 D6 D1 D5 D5 D6 D6 D3 D5 D4

49

MODELO DE DADOS 02
Tabela Usuario CODUSU NOMUSU 01 02 03 04 05 06 Pedro da Silva Renata de Souza Casemiro Alves Aristides da Cunha Rafael dos Santos Jonny English ENDUSU Rua Ab Rua Cal Rua Ypr Rua Hbc Rua Ab Rua Rtf CEPUSU 890 980 765 546 890 809 Tabela Livro CODLIV 1001 1002 1003 1004 1005 1006 Tabela Reserva CODUSU 01 02 01 06 05 06 04 03 01 DATEMP 13/01/2008 13/01/2008 14/01/2008 14/01/2008 02/02/2008 05/02/2008 12/01/2008 04/02/2008 04/03/2008 CODRES 30001 30002 30003 30004 30005 30006 30007 30008 30009 30010 CODLIV 1002 1002 1002 1003 1004 1001 1005 1006 1006 1005 CODUSU 02 03 05 04 03 01 01 06 02 04 DATRES 11/01/2008 13/01/2008 23/01/2008 01/02/2008 01/02/2008 02/02/2008 03/02/2008 04/02/2008 07/02/2008 07/02/2008 TITLIV CODBIB 1 1 2 3 3 4

LIVRO 01 LIVRO 02 LIVRO 03 LIVRO 04 LIVRO 05 LIVRO 06

Tabela Emprestimo CODEMP 20002 20005 20006 20007 20008 20010 20001 20009 20011 CODLIV 1001 1002 1004 1005 1001 1006 1005 1003 1002

50

6.1.OPERAO DE PROJEO(UNRIA)
A operao representada pelo smbolo

(letra PI do alfabeto grego). uma

operao usada para construir um subconjunto vertical de uma tabela(ou relao), cujas linhas satisfaam uma determinada condio que nada mais que uma lista de colunas. A operao de projeo pode ser tambm entendida como um filtro de colunas(ou atributos) de uma determinada tabela. Esta operao atua somente sobre uma tabela por isso considerada unria. Sua sintaxe :

nome coluna1, nome coluna2, ..., nome colunan(NOME

TABELA)

NOME TABELA = Conjunto de entrada para a operao COLUNAS = Argumentos da operao

A operao de projeo age sobre somente uma tabela ou tabela resultante de alguma outra operao da lgebra relacional. Exemplos de aplicao da operao de projeo: E-01) Realizar a projeo da coluna NOMFUN da tabela FUNCIONARIO. Expresso:

NOMFUN(FUNCIONARIO)

resolvendo ...
NUMFUN 101 104 134 121 195 139 123 148 115 22 NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra DATADM 10/08/2003 02/03/2004 23/05/2003 01/12/2001 15/01/2007 12/01/2005 29/06/2003 06/01/2008 15/10/2003 10/02/2000 SEXFUN M M M M F F M F M M CODCAR C3 C4 C5 C3 C1 C4 C7 C4 C3 C2 CODDEP D5 D6 D1 D5 D5 D6 D6 D3 D5 D4

51

NOMFUN (FUNCIONARIO)

NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra

E-02) Realizar a projeo da coluna DESFUN e SEXFUN da tabela FUNCIONARIO. Expresso: resolvendo:
NUMFUN 101 104 134 121 195 139 123 148 115 22 NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra DATADM 10/08/2003 02/03/2004 23/05/2003 01/12/2001 15/01/2007 12/01/2005 29/06/2003 06/01/2008 15/10/2003 10/02/2000 SEXFUN M M M M F F M F M M CODCAR C3 C4 C5 C3 C1 C4 C7 C4 C3 C2 CODDEP D5 D6 D1 D5 D5 D6 D6 D3 D5 D4

NOMFUN,SEXFUN(FUNCIONARIO)

NOMFUN,SEXFUN (FUNCIONARIO)

NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha

SEXFUN M M M M F F

52

Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra

M F M M

Com base nos exemplos apresentados percebe-se que a operao de projeo gera apenas uma nova viso da tabela fornecida como entrada, mostrando somente as colunas desejadas. muito importante ressaltar que as colunas informadas como argumentos da operao de projeo devem existir na tabela fornecida como entrada. Em muitos casos faz-se necessria, alm da projeo de somente algumas colunas de uma tabela, a recuperao de somente um nmero limitado de ocorrncias(linhas) da tabela de entrada. Por exemplo se quisermos recuperar somente os funcionrios do departamento D6. Para isso utiliza-se a operao de seleo, apresentada a seguir.

6.2.OPERAO DE SELEO(UNRIA)
A operao representada pelo smbolo

(letra SIGMA do alfabeto grego).

uma operao usada para construir um subconjunto horizontal de uma tabela(ou relao), cujas linhas satisfaam uma determinada predicado ou condio. Em outras palavras, esta operao trabalha sobre uma tabela de entrada e com base em uma condio(chamado de predicado) retorna uma tabela semelhante em termos de estrutura mas apenas com as ocorrncias(linhas) que atendam a condio estabelecida. A tabela retornada um subconjunto da tabela fornecida como entrada. Sua sintaxe :

NOME TABELA = Conjunto de Entrada para a operao PREDICADO = Predicado da operao(condio para a operao)

predicado(NOME TABELA)

A operao de seleo tambm uma operao de filtragem, mas neste caso so filtradas as linhas e no as colunas da tabela de entrada. A operao de seleo tambm uma operao unria. Exemplos de aplicao da operao de seleo:

53

E-03) Selecionar/exibir/mostrar os funcionrios que trabalham no departamento D6(Coluna CODDEP) da tabela FUNCIONARIO. Expresso:

CODDEP=D6(FUNCIONARIO)

resolvendo ...
NUMFUN 101 104 134 121 195 139 123 148 115 22 NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra DATADM 10/08/2003 02/03/2004 23/05/2003 01/12/2001 15/01/2007 12/01/2005 29/06/2003 06/01/2008 15/10/2003 10/02/2000 SEXFUN M M M M F F M F M M CODCAR C3 C4 C5 C3 C1 C4 C7 C4 C3 C2 CODDEP D5 D6 D1 D5 D5 D6 D6 D3 D5 D4

NUMFUN 104 139 123 NOMFUN Carlos Pereira Rejane da Cunha Marcos Vinicios da Penha

CODDEP=D6(FUNCIONARIO)

DATADM 02/03/2004 12/01/2005 29/06/2003

SEXFUN M F M

CODCAR C4 C4 C7

CODDEP D6 D6 D6

Obs.: Neste primeiro exemplo podemos observar que em termos de colunas a estrutura aps a aplicao da operao de seleo permanece a mesma. Somente as linhas que atendem o predicado informado como argumento so retornadas. E-04) Projetar a coluna NOMFUN, DATADM da tabela FUNCIONARIO somente dos funcionrios que so do departamento D6. Expresso:

NOMFUN, DATADM(

CODDEP=D6(FUNCIONARIO))

Neste segundo exemplo queremos retornar somente os funcionrios do departamento D6 e projetar(exibir) somente as colunas NOMFUN e DATADM. Este caso j apresenta uma regra importante que deve ser respeitada quando operadores relacionais tiverem que ser aninhados. Para podermos projetar(exibir) somente as colunas desejadas de uma determinada tabela

54

devemos primeiro realizar a operao de seleo. Este um caso onde pode-se mostrar claramente como se d a soluo de cada operao bem como porque a lgebra relacional considerada uma linguagem formal. Ento vamos resolver este exemplo: Funcionrios Tabela Original
NUMFUN 101 104 134 121 195 139 123 148 115 22 NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra DATADM 10/08/2003 02/03/2004 23/05/2003 01/12/2001 15/01/2007 12/01/2005 29/06/2003 06/01/2008 15/10/2003 10/02/2000 SEXFUN M M M M F F M F M M CODCAR C3 C4 C5 C3 C1 C4 C7 C4 C3 C2 CODDEP D5 D6 D1 D5 D5 D6 D6 D3 D5 D4

Aplicando-se a operao de seleo para os funcionrios do departamento D6, temos como resultado a tabela abaixo(tabela intermediria): Tabela Intermediria
NUMFUN 104 139 123 NOMFUN Carlos Pereira Rejane da Cunha Marcos Vinicios da Penha DATADM 02/03/2004 12/01/2005 29/06/2003 SEXFUN M F M CODCAR C4 C4 C7 CODDEP D6 D6 D6

A tabela intermediria resultante da operao de seleo agora servir de entrada para a operao de projeo e o resultado : Tabela Final
NOMFUN Carlos Pereira Rejane da Cunha Marcos Vinicios da Penha DATADM 02/03/2004 12/01/2005 29/06/2003

Agora sim atingimos nosso objetivo, a tabela final representa o resultado da aplicao da nossa operao de seleo e de nossa operao de projeo. Pode surgir a dvida de porque por exemplo a coluna CODDEP da tabela FUNCIONARIO no apareceu em nossa tabela final. importante lembrar que somente as colunas fornecidas como argumentos para a operao de projeo sero exibidas ao final.

55

A formao de um predicado(condio) para a operao de seleo pode se utilizar ainda dos operadores booleanos(lgicos): AND ou ^, OR ou e NOT. Atravs destes podemos conectar vrias expresses a serem testadas em nossa seleo, formando um nico predicado. Alm disso ainda podemos utilizar os operadores de comparao apresentados a seguir:
Operador de Comparao = <> > < >= <= Igual Menor ou Maior que(Diferente) Maior que Menor que Maior ou igual que Menor ou igual que Descrio

Um exemplo de uma expresso algbrica relacional utilizando os operadores lgicos e booleanos. E-05) Selecionar/exibir/mostrar os funcionrios que trabalham no departamento D6, que sejam do sexo Feminino(F) e cujo cdigo do funcionrio seja maior que 100. Expresso:

CODDEP = D6 ^ SEXFUN = F ^ NUMFUN > 100(FUNCIONARIO)

resolvendo ...
NUMFUN 101 104 134 121 195 139 123 148 115 22 NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra DATADM 10/08/2003 02/03/2004 23/05/2003 01/12/2001 15/01/2007 12/01/2005 29/06/2003 06/01/2008 15/10/2003 10/02/2000 SEXFUN M M M M F F M F M M CODCAR C3 C4 C5 C3 C1 C4 C7 C4 C3 C2 CODDEP D5 D6 D1 D5 D5 D6 D6 D3 D5 D4

NUMFUN 139

CODDEP = D6 ^ SEXFUN = F ^ NUMFUN > 100(FUNCIONARIO)

NOMFUN Rejane da Cunha

DATADM 12/01/2005

SEXFUN F

CODCAR C4

CODDEP D6

56

Para avanarmos mais em nosso estudo imaginemos uma situao onde queiramos selecionar somente os funcionrios do departamento D6 da tabela FUNCIONARIO, mas alm de exibir as colunas NOMFUN e DATADM queremos tambm exibir a descrio DESDEP do departamento da tabela DEPARTAMENTO. Neste caso j temos mais de uma tabela em questo e quem pode nos ajudar a conseguir alcanar o resultado esperado a operao chamada de produto cartesiano, descrita a seguir.

6.3.PRODUTO CARTESIANO(BINRIA)
A operao representada pelo smbolo

X.

O produto cartesiano de duas tabelas(relaes) A e B o conjunto de todas as linhas t originadas da concatenao das linhas(tuplas) a pertencentes a A e das linhas b pertencentes a B. A operao de produto cartesiano considerada binria, por ser aplicada sobre duas tabelas e o resultado de sua aplicao uma terceira tabela com a combinao de todos os elementos de ambas as tabelas que serviram de entrada. Um exemplo para explicar isso : tendo-se uma tabela A, com 3 colunas e 6 linhas, e uma tabela B, com 4 colunas e 5 linhas tem-se aps a aplicao do produto cartesiano:

3 colunas(tabela A) + 4 colunas(tabela B) = 7 colunas(nova tabela) 6 linhas(tabela A) X 5 linhas(tabela B) = 30 linhas(nova tabela)

Em termos prticos o que acontece na aplicao desta operao a multiplicao de cada elemento(linhas) da primeira tabela por todos os elementos da segunda tabela. No h um uso prtico para este tipo de operao, dificilmente teremos interesse em saber todas as combinaes possveis entre duas tabelas, alm disso esta uma operao bastante pesada. Imagine uma tabela com 30 colunas e 3000 linhas multiplicada por uma tabela com 23 colunas e 25000 linhas, esta operao exigiria uma grande quantidade de recurso do SGBD para poder ser processada. Mas apesar disso esta uma das formas mais bsicas que permite realizar a juno de tabelas. Sua sintaxe : TABELA A

X TABELA B

57

Vejamos exemplos da aplicao do produto cartesiano. E-06) Aplicando o produto cartesiano entre as tabelas FUNCIONARIO e CARGO. Expresso: FUNCIONARIO resolvendo ...
NUMFUN 101 101 101 101 101 101 104 104 104 104 104 104 134 134 134 134 134 134 NOMFUN Renato da Silva Renato da Silva Renato da Silva Renato da Silva Renato da Silva Renato da Silva Carlos Pereira Carlos Pereira Carlos Pereira Carlos Pereira Carlos Pereira Carlos Pereira Pedro Srgio Doto Pedro Srgio Doto Pedro Srgio Doto Pedro Srgio Doto Pedro Srgio Doto Pedro Srgio Doto DATADM 10/08/2003 10/08/2003 10/08/2003 10/08/2003 10/08/2003 10/08/2003 02/03/2004 02/03/2004 02/03/2004 02/03/2004 02/03/2004 02/03/2004 23/05/2003 23/05/2003 23/05/2003 23/05/2003 23/05/2003 23/05/2003 SEXFUN M M M M M M M M M M M M M M M M M M CODCAR C3 C3 C3 C3 C3 C3 C4 C4 C4 C4 C4 C4 C5 C5 C5 C5 C5 C5 CODDEP D5 D5 D5 D5 D5 D5 D6 D6 D6 D6 D6 D6 D1 D1 D1 D1 D1 D1 CODCAR C1 C3 C7 C2 C5 C4 C1 C3 C7 C2 C5 C4 C1 C3 C7 C2 C5 C4 DESCAR Aux. Vendas Vendedor Diretor Vigia Gerente Aux. Cobrana Aux. Vendas Vendedor Diretor Vigia Gerente Aux. Cobrana Aux. Vendas Vendedor Diretor Vigia Gerente Aux. Cobrana VLRSAL 350,00 800,00 2500,00 400,00 1000,00 250,00 350,00 800,00 2500,00 400,00 1000,00 250,00 350,00 800,00 2500,00 400,00 1000,00 250,00

X CARGO

...

...

...

...

...

...

...

...

...

Acima apresentado um resultado parcial da aplicao da operao de produto cartesiano. Agora conhecendo um pouco da operao produto cartesiano vamos tentar resolver a seguinte expresso algbrica: Expresso:

NOMFUN, DATADM(

DESCAR=Vigia(FUNCIONARIO

X CARGO))

Nesta expresso acima queremos recuperar o nome e a data de admisso dos funcionrios cujo cargo Vigia. Para resolvermos esta expresso aplicamos inicialmente a operao de produto cartesiano, depois a operao de seleo e finalmente a operao de projeo. Neste exemplo percebemos a integrao destas operaes da lgebra relacional.

58

Vamos ver o resultado parcial da operao:


NUMFUN 101 104 134 121 195 139 123 148 115 22 NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra DATADM 10/08/2003 02/03/2004 23/05/2003 01/12/2001 15/01/2007 12/01/2005 29/06/2003 06/01/2008 15/10/2003 10/02/2000 SEXFUN M M M M F F M F M M CODCAR C3 C4 C5 C3 C1 C4 C7 C4 C3 C2 CODDEP D5 D6 D1 D5 D5 D6 D6 D3 D5 D4 CODCAR C2 C2 C2 C2 C2 C2 C2 C2 C2 C2 DESCAR Vigia Vigia Vigia Vigia Vigia Vigia Vigia Vigia Vigia Vigia VLRSAL 400,00 400,00 400,00 400,00 400,00 400,00 400,00 400,00 400,00 400,00

=
NOMFUN Renato da Silva Carlos Pereira Pedro Srgio Doto Antnio Machado Larissa Silva Rejane da Cunha Marcos Vinicios da Penha Cludia de Souza Joo Alves Marcos Coimbra DATADM 10/08/2003 02/03/2004 23/05/2003 01/12/2001 15/01/2007 12/01/2005 29/06/2003 06/01/2008 15/10/2003 10/02/2000

Bom, vamos ver se atingimos nosso resultado final esperado. Observando-se o que foi retornado, acredito que no, porque todos os funcionrios foram retornados como tendo o cargo de vigia e sabemos que isso no verdade, portanto existe algum erro em nossa expresso. Para conseguirmos atender a ideia inicial de nossa expresso precisamos especificar explicitamente como um funcionrio est ligado ao seu cargo, ou seja, qual cargo efetivamente ele possui. Ento para resolvermos precisamos fazer a ligao entre as duas tabelas de uma maneira que se possa identificar exatamente qual o cargo de um determinado funcionrio, e para fazer isso vamos utilizar o conceito de Chave Estrangeira. Observando-se as tabelas percebe-se que possvel ainda se cruzar as colunas CODCAR da tabela FUNCIONARIO e CODCAR da tabela CARGO. Neste caso teremos dois predicados ou condies que devero ser atendidas, e somente os elementos das tabelas que os atenderem devero ser retornados. Para resolver este caso poderemos utilizar o operador booleano AND ou ^.

59

Expresso:

NOMFUN,

DATADM(

DESCAR=Vigia

FUNCIONARIO.CODCAR

CARGO.CODCAR(FUNCIONARIO

X CARGO))
Tabela resultado
NOMFUN Marcos Coimbra DATADM 10/02/2000

Agora sim, aplicando-se esta expresso algbrica relacional obteremos o resultado que desejamos.

A prxima operao que vamos conhecer a operao de renomear.

6.4.OPERAO DE RENOMEAR
Esta operao representada pelo smbolo

(letra RHO do alfabeto grego).

A operao de renomear utilizada em casos onde necessitamos renomear uma tabela, caso esta tabela aparea mais de uma vez em uma consulta. Podemos utiliz-la tambm para identificar resultados de expresses em lgebra que ainda no possuem nome definido. Sua sintaxe :

<novo nome>(TABELA)

Vamos a um exemplo com esta operao: Quais so os funcionrios que trabalham no mesmo departamento da 'Larissa Silva'. Expresso na sua forma geral:

FUNCIONARIO2.NOMFUN, FUNCIONARIO2.CODDEP

FUNCIONARIO2.CODDEP =

FUNCIONARIO.CODDEP((

NOMFUN = 'Larissa Silva'(FUNCIONARIO))

FUNCIONARIO2(FUNCIONARIO)))

Vamos resolver a primeira situao que temos: qual afinal o departamento da

60

Larissa? Expresso:

CODDEP(

NOMFUN = 'Larissa Silva'(FUNCIONARIO)

resultando em ...
CODDEP D5

Ento no relacionamento com a tabela FUNCIONARIO2 sero retornados somente os funcionrios do departamento 'D5'. Por fim precisamos apenas projetar as colunas do funcionrio que desejamos apresentar na tela. Que seria? ...

NOMFUN Renato da Silva Antnio Machado Larissa Silva Joo Alves

CODDEP D5 D5 D5 D5

Vamos agora conhecer a operao binria de unio.

6.5.OPERAO DE UNIO(BINRIA)
Esta operao representada pelo smbolo

A unio de duas tabelas(relaes) A e B o conjunto de todas as linhas(tuplas) pertencentes a A mais as linhas(tuplas) pertencentes a relao B. A operao de unio tambm uma operao binria, pois precisa de duas tabelas que sero unidas e o resultado produzido ser uma tabela com o mesmo nmero de colunas das tabelas de entrada. No resultado da unio de duas tabelas os registros repetidos so retornados apenas uma nica vez. Outro ponto importante que deve ser observado que a unio de duas tabelas s possvel se ambas possurem o mesmo nmero de colunas e seus domnios(tipos) devem ser equivalentes, ou seja, as tabelas devem ser compatveis.

61

Sua sintaxe : TABELA A

TABELA B

Agora utilizando o segundo modelo de dados vamos tentar resolver o seguinte problema: recuperar o nome de todos os usurios que possuem emprstimo OU reserva de livros. Bem para reduzirmos nosso trabalho vamos recuperar os dados para o livro 1005(CODLIV = 1005). Vamos resolver a primeira situao que temos: Expresso:

NOMUSU(

USUARIO.CODUSU(USUARIO

X EMPRESTIMO))
ENDUSU Rua Hbc Rua Rtf CEPUSU 546 809 CODEMP CODLIV CODUSU 20001 20007 1005 1005 04 06 DATEMP 12/01/2008 14/01/2008

CODLIV

1005

EMPRESTIMO.CODUSU

Neste caso vamos recuperar todos os usurios que fizeram emprstimo do livro 1005. Aplicando a operao de seleo:
CODUSU 04 06 NOMUSU Aristides da Cunha Jonny English

Devido a projeo aplicada nosso resultado final :


NOMUSU Aristides da Cunha Jonny English

Agora vamos a segunda parte, saber quem j fez reservas do livro 1005(CODLIV = 1005): Expresso:

NOMUSU(

USUARIO.CODUSU(USUARIO

X RESERVA))

CODLIV

1005

RESERVA.CODUSU

Neste caso vamos recuperar todos os usurios que fizeram reserva do livro 1005. Aplicando a operao de seleo:
CODUSU 01 04 NOMUSU Pedro da Silva Aristides da Cunha ENDUSU Rua Ab Rua Hbc CEPUSU 890 546 CODRES CODLIV CODUSU 30007 30010 1005 1005 01 04 DATRES 03/02/2008 07/02/2008

Devido a projeo aplicada nosso resultado final :


NOMUSU Pedro da Silva Aristides da Cunha

62

Agora j sabemos quem j realizou emprstimos ou j realizou reservas. Percebam que o objetivo de realizar as operaes separadamente gerar duas tabelas compatveis que serviro de entrada para a operao de unio. Expresso:
NOMUSU(

CODLIV = 1005 ^ EMPRESTIMO.CODUSU = USUARIO.CODUSU(USUARIO

EMPRESTIMO))

NOMUSU(

U
CODLIV = 1005 ^ RESERVA.CODUSU = USUARIO.CODUSU(USUARIO

X RESERVA))

Resultados parciais de nossas expresses apurados anteriormente: 1)


NOMUSU Aristides da Cunha Jonny English

2)
NOMUSU Pedro da Silva Aristides da Cunha

Aplicando-se a operao de unio obteremos o seguinte resultado:


NOMUSU Aristides da Cunha Jonny English Pedro da Silva

Para uma operao de unio entre duas tabelas ser possvel deve-ser observar as seguintes regras:

As tabelas A e B precisam ter o mesmo nmero de colunas; Estas colunas precisam ter o mesmo domnio, ou seja, ser do mesmo tipo; e As colunas devem estar na mesma ordem ou sequncia.

No exemplo abaixo a aplicao da operao de unio no funcionaria:


CODUSU 01 04 CEPUSU 890 546 NOMUSU Pedro da Silva ENDUSU Rua Ab CEPUSU 890 546 ENDUSU Rua Ab Rua Hbc

Aristides da Cunha Rua Hbc NOMUSU Pedro da Silva Aristides da Cunha CODUSU 01 04

63

A seguir vamos conhecer a operao de interseo.

6.6.OPERAO DE INTERSEO(BINRIA)
A operao representada pelo smbolo

A interseo de duas tabelas(relaes) A e B o conjunto de todas as linhas(tupla) pertencentes A e tambm pertencentes a B. Esta uma outra operao tpica de conjuntos. considerada binria j que para sua resoluo so necessrias serem informadas como entrada duas tabelas e produz como resultado outra tabela com todos os elementos, sem repetio, que so comuns as duas tabelas de entrada. Da mesma forma como acontece na operao de unio as tabelas devem ser compatveis. Sua sintaxe : TABELA A

TABELA B

Algumas combinaes possveis que podem fornecer o mesmo resultado da aplicao da operao de interseo so: a) Tabela A

Tabela B = Tabela A

(Tabela A

Tabela B)

b) = (Tabela A A)

Tabela B)

(Tabela A

Tabela B)

(Tabela B

Tabela

c) = (Tabela A Tabela A))

Tabela B)

((Tabela A

Tabela B)

(Tabela B

Agora vamos exercitar a operao de interseo. Utilizando o mesmo modelo da operao anterior vamos tentar descobrir quais usurios(nome) emprestaram e reservaram o livro 1005(CODLIV = 1005). Para este caso teremos que utilizar o operador booleano AND j que queremos que ambas as condies sejam satisfeitas.

64

Nossa expresso representada abaixo:

Expresso:
NOMUSU(

CODLIV = 1005 ^ EMPRESTIMO.CODUSU = USUARIO.CODUSU(USUARIO

EMPRESTIMO))

NOMUSU(

CODLIV = 1005 ^ RESERVA.CODUSU = USUARIO.CODUSU(USUARIO

X RESERVA))

Vamos aos resultados parciais de nossas expresses: 1)


NOMUSU Aristides da Cunha Jonny English

2)
NOMUSU Pedro da Silva Aristides da Cunha

Agora s precisamos verificar quais so as linhas comuns entre as duas tabelas, e como resultado final obtemos:
NOMUSU Aristides da Cunha

Partiremos agora para o estudo de uma outra operao importante, a operao de diferena.

6.7.OPERAO DE DIFERENA(BINRIA)
A operao representada pelo smbolo

-.

A diferena de duas tabelas(relaes) A e B o conjunto de todas as linhas pertencentes a tabela A e no pertencentes a tabela B. Esta operao tem a funo de mostrar quais linhas existem na primeira tabela da operao e no existem na segunda tabela da operao. Tambm uma operao binria por necessitar de duas tabelas de entrada.

65

Sua sintaxe : TABELA A

TABELA B

Utilizando as tabelas do modelo anterior da operao de interseo vamos agora ver como funciona a operao de diferena. Nosso objetivo encontrar todos os usurios que possuem emprstimo, mas que no tenham nenhuma reserva do livro 1005(CODLIV = 1005). Expresso:
NOMUSU(

CODLIV = 1005 ^ EMPRESTIMO.CODUSU = USUARIO.CODUSU(USUARIO

EMPRESTIMO))

NOMUSU(

CODLIV = 1005 ^ RESERVA.CODUSU = USUARIO.CODUSU(USUARIO

X RESERVA))

O resultado de nossa primeira expresso :


NOMUSU Aristides da Cunha Jonny English

Estes usurios possuem emprstimos do livro 1005. A segunda expresso resulta em:
NOMUSU Pedro da Silva Aristides da Cunha

Observando-se a regra da diferena obtm-se como resultado:


NOMUSU Jonny English

Este usurio tem emprstimo do livro 1005, mas no tem reserva do mesmo. Como base no que foi apresentado podemos concluir que as expresses a seguir so muito diferentes: Expresso 1: Tabela A Tabela B diferente de Expresso 2: Tabela B Tabela A A inverso das tabelas como mostrado no segundo caso nos levaria a um erro no resultado obtido que seria igual a:

66

NOMUSU Pedro da Silva

Percebe-se no resultado obtido, que o usurio no possui emprstimos do livro 1005. Vamos conhecer em seguida a operao de juno.

6.8.OPERAO DE JUNO(BINRIA)

A operao representada pelo smbolo

De duas tabelas(relaes) R1 e R2, que possuem um atributo em comum D, o subconjunto do produto cartesiano das duas relaes, cujos valores dos elementos dos atributos comuns sejam iguais nas duas tabelas. Na tabela resultante elimina-se a repetio da coluna D. Normalmente a relao feita atravs de chaves associadas entre duas tabelas. Esta tambm uma operao binria. Esta uma operao de uso bastante comum, sua diferena com relao ao produto cartesiano que o predicado de ligao(relao) e a juno das tabelas j aplicado diretamente sobre a operao de seleo. Sua sintaxe :

TABELA A

A.CHAVE1 = B.CHAVE2TABELA B

A.CHAVE1 = B.CHAVE2 : predicado da seleo diretamente sobre o produto cartesiano No resultado de uma operao de juno todas as colunas da primeira e da segunda tabela so recuperadas ocasionando a duplicao por exemplo da coluna que a chave de ligao entre as duas tabelas. Existem alguns tipos de juno, uma delas chamada de juno natural, atravs deste tipo de juno o predicado(condio) no informado e a recuperao feita atravs do mtodo de comparao de todas as colunas que so idnticas entre as duas tabelas. Este tipo de juno no recomendada se necessitamos combinar somente uma ou algumas colunas. Para o nosso caso utilizaremos a juno normal onde informamos o predicado de comparao e a combinao entre as duas tabelas. Utilizando nosso modelo anterior vamos descobrir o seguinte: os usurios que

67

realizaram emprstimos e vamos exibir o cep de sua cidade. Vamos representar nossa expresso: Expresso:
EMPRESTIMO.CODUSU

NOMUSU,

CEPUSU(USUARIO

USUARIO.CODUSU

EMPRESTIMO)

Para este caso poderamos at utilizar uma juno natural, porque em comum as tabelas possuem somente uma coluna(CODUSU). A representao da aplicao de numa juno natural ficaria assim: Expresso: USUARIO

EMPRESTIMO
ENDUSU CEPUSU 890 890 890 980 765 546 890 809 809 CODEMP CODLIV CODUSU 20011 20006 20002 20005 20009 20001 20008 20010 20007 1002 1004 1001 1002 1003 1005 1001 1006 1005 01 01 01 02 03 04 05 06 06 DATEMP 04/03/2008 14/01/2008 13/01/2008 13/01/2008 04/02/2008 12/01/2008 02/02/2008 05/02/2008 14/01/2008

Bem, nosso primeiro passo ento realizar a juno das tabelas, cujo resultado :
CODUSU 01 01 01 02 03 04 05 06 06 NOMUSU Pedro da Silva Pedro da Silva Pedro da Silva Renata de Souza Casemiro Alves Aristides da Cunha Rafael dos Santos Jonny English Jonny English Rua Ab Rua Ab Rua Ab Rua Cal Rua Ypr Rua Hbc Rua Ab Rua Rtf Rua Rtf

Realizando agora a projeo das colunas desejadas: Expresso:

NOMUSU, CEPUSU(TABELA

RESULTADO)

ou com uma juno natural: Expresso:


NOMUSU, CEPUSU(TABELA

RESULTADO)

resultaria em:
NOMUSU Pedro da Silva Pedro da Silva Pedro da Silva Renata de Souza Casemiro Alves Aristides da Cunha CEPUSU 890 890 890 980 765 546

68

Rafael dos Santos Jonny English Jonny English

890 809 809

A prxima operao que vamos conhecer a de diviso.

6.9.OPERAO DE DIVISO(BINRIA)

A operao representada pelo smbolo

ou

Seja A uma tabela binria com os atributos x e y e B uma tabela unria com o atributo z, com y e z definidos sobre o mesmo domnio. Definimos que a operao de diviso, como sendo o conjunto dos elementos x com os pares(x,y) pertencentes a A para todos os valores pertencentes a B. Vamos adotar a barra para representar as operaes de diviso. Sua sintaxe :

TABELA A

TABELA B

Para entendermos como funciona esta operao vamos tentar resolver a seguinte situao: recuperar todos os usurios que j emprestaram todos os livros da Biblioteca 1(CODBIB = 1). Vamos comear ento resolvendo nosso problema: precisamos descobrir quais so os livros da biblioteca 1. Expresso:

CODLIV(

CODBIB = 1(LIVRO))

Como resultado obtemos a tabela:


CODLIV 1001 1002

Vamos encontrar agora todos os usurios que j emprestaram algum livro:

69

Expresso:

NOMUSU, CODLIV(USUARIO

EMPRESTIMO)

resultando em:
NOMUSU Pedro da Silva Pedro da Silva Pedro da Silva Renata de Souza Casemiro Alves Aristides da Cunha Rafael dos Santos Jonny English Jonny English CODLIV 1002 1004 1001 1002 1003 1005 1001 1006 1005

Agora vamos localizar cada um dos usurios que possuem todos os livros da biblioteca 2: Expresso: UsuarioLivro <--

NOMUSU, CODLIV(USUARIO

EMPRESTIMO)

/
LivroBiblioteca1 <--

CODLIV(

CODBIB = 1(LIVRO))

Percebam que o atributo comum as duas tabelas o CODLIV. E o que estamos procurando aqui so todos os conjuntos de linhas em UsuarioLivro cujos valores dos atributos comuns so iguais a todos os que aparecem em LivroBiblioteca1. Temos, portanto, nosso divisor, tabela A, e nosso dividendo, tabela B, e procuramos nosso quociente:
NOMUSU Pedro da Silva Pedro da Silva Pedro da Silva Renata de Souza Casemiro Alves Aristides da Cunha CODLIV 1002 1004 1001 1002 1003 1005 CODLIV

1001 1002

70

Rafael dos Santos Jonny English Jonny English

1001 1006 1005

Como resultado final obtemos:


NOMUSU Pedro da Silva

Vamos partir agora para a parte de comandos SQL, mas antes disso apresentada a seguir um quadro para consulta das operaes de lgebra vistas at aqui, isto facilitar a busca pelas operaes.
Smbolo Operao Projeo Seleo Unio Tabela A Interseo Diferena Produto Cartesiano Juno Tabela A Diviso Sintaxe

U X /

COLUNA1, COLUNA2, ..., COLUNAN(NOME PREDICADO(NOME

TABELA)

TABELA)

U Tabela B

Tabela B Tabela A - Tabela B Tabela A X Tabela B


Tabela A

Tabela B /

Tabela A Tabela B Renomeao

<novo nome>(Tabela)

Na sequncia da lgebra relacional, vamos conhecer a linguagem SQL.

7. SQL STRUCTURED QUERY LANGUAGE


O surgimento da SQL se deu aps o surgimento do modelo relacional. O modelo relacional conhecido hoje foi apresentado no final dos anos 60 pelo matemtico Edgar Frank Codd tendo sua estrutura baseada em um modelo matemtico.

71

O bero da SQL foi o surgimento do primeiro sistema gerenciador de banco de dados chamado System R. O projeto foi desenvolvido em 1973 pela IBM e provou que o modelo matemtico relacional era vivel. Em 1974 surge a SEQUEL(Structured English Query Language), desenvolvida por Don Chamberlin e outros pesquisadores nos laboratrios da IBM, com o objetivo de expressar as operaes do modelo relacional em um formato de linguagem declarativa utilizando-se de palavras comuns da lngua inglesa. A linguagem sofreu revises e alteraes e teve sua sigla modificada posteriormente para SQL, mas sua pronncia em ingls continua sendo sequel. Na SQL o desenvolvedor diz o que ele deseja e no se preocupa como isso ser executado. Por esta caracterstica e tambm por ser declarativa seu surgimento foi uma grande novidade na poca j que os SGBDs(Sistema Gerenciador de Banco de Dados) utilizados eram baseados nos modelos lgicos hierrquico ou em rede. Apesar das pesquisas iniciais sobre SGBDR(Sistema Gerenciador de Banco de Dados Relacional) terem sido realizadas pela IBM, o primeiro banco de dados relacional comercial a surgir foi o ORACLE em 1979, desenvolvido na poca pela Rational Software, hoje ORACLE Corporation. A IBM entrou no mercado em 1981 com o SQL/DS e consolidou-se em 1983 com o DB2. No inicio dos anos 90 a maior parte dos SGBDRs comearam a integrar a SQL a suas implementaes e com isso percebeu-se a necessidade e importncia de se padronizar o uso da SQL a fim de permitir portabilidade entre os diversos produtos que surgiram. Em 1986 a ANSI(American National Standards Institute) publicou a primeira verso do padro SQL. Este padro ficou conhecido tambm como SQL-86. No ano seguinte esta norma foi publicada como sendo internacional pela ISO(International Organization for Standardization). Em 1989 saiu uma nova publicao da norma abrangendo novos recursos. Algumas verses da SQL publicadas: SQL-92(1992, tambm conhecida como SQL-2), SQL:1999(1999, tambm conhecida como SQL3), SQL:2003(2003) e a SQL:2006(2006). A SQL pode ser utilizada em diversos enfoques dentro de uma estrutura de banco de dados relacional, como: a) Linguagem Interativa de Consulta (Query AdHoc): permite a criao de consultas sem a necessidade da criao de programas especficos; b) Linguagem de Programao para acesso a banco de dados: permite embutir comandos SQL em aplicaes para acesso a dados armazenados; c) Linguagem de Administrao de banco de dados: as tarefas do DBA podem ser executadas atravs de comandos SQL; d) Linguagem cliente/servidor: comandos SQL embutidos em aplicaes acessando um nico local na rede onde os dados esto armazenados; e) Linguagem para banco de dados distribudo: a SQL pode auxiliar na

72

distribuio dos dados entre ns conectados a uma rede; f) Caminho de acesso a outros bancos de dados em diferentes mquinas: a SQL auxiliar na converso entre diferentes produtos de banco de dados distribudos em diversas mquinas. A SQL tambm apresenta algumas vantagens e desvantagens. Como vantagens diretas temos:

Independncia de fabricante: a SQL um padro adotado pela maior parte

dos SGBDs, e para os que ainda no a usam logo o estaro. Por isso no existem grandes preocupaes quando se precisa trocar o banco de dados em uso.

Portabilidade entre computadores: Pode ser utilizada em computadores Reduo dos custos com treinamento: A reciclagem da equipe de

pessoais, workstations ou computadores de grande porte.

desenvolvimento no se faz necessria j que as aplicaes pode ser mudadas entre os diversos ambientes.

Ingls estruturado de alto nvel: o SQL de fcil entendimento, pois Consulta Interativa: a SQL prov de forma rpida respostas ao usurio, tanto Mltiplas vises dos dados: Diferentes vises podem ser exibidas a Definio dinmica dos dados: com uma grande flexibilidade pode-se alterar,

formado por um conjunto simples de palavras do ingls.

para questes mais simples como mais complexas.

diferentes usurios.

incluir e excluir as estruturas dos dados armazenados. Algumas desvantagens:


Inibio da criatividade devido padronizao; Falta de ortogonalidade nas expresses; Falta de algumas funes; Erros(campos null, violao de chave primria, clusula FROM, etc). Linguagem no procedimental em que se especfica O QU e no COMO

Caractersticas da linguagem SQL:

Existe uma clara abstrao da estrutura fsica dos dados, no sendo

necessrio especificar caminhos de acesso nem algoritmos de pesquisa fsica;

Operaes sobre estruturas lgicas

As operao so efetuadas sobre conjuntos de dados(tabelas) no sendo

necessrio(nem possvel) manipular-se dados linha-a-linha; A linguagem SQL pode ser dividida nas seguintes partes ou componentes:

73

1) DDL (Data Definition Language/Linguagem de Definio de Dados). A SQL DDL fornece comandos para definio e modificao de esquemas de relao, remoo de relaes e criao de ndices. Os principais comandos que fazem parte da DDL so: CREATE, ALTER, DROP. 2) DML (Data Manipulation Language/Linguagem de Manipulao de Dados). A SQL DML inclui uma linguagem de consulta baseada na lgebra relacional e no clculo relacional. Compreende tambm comandos para inserir, remover e modificar informaes em um banco de dados. Os comandos bsicos da DML so: SELECT, INSERT, UPDATE e DELETE. 3) DCL (Data Control Language/Linguagem de Controle de Dados). o conjunto de comandos que fazem o cadastramento de usurios e determina seu nvel de acesso aos objetos do banco de dados. Os principais comandos so: CREATE USER, GRANT, REVOKE. 4) TML (Transaction Manipulation Language/Linguagem de Manipulao de Transaes). A SQL inclui comandos para especificao do incio e fim das transaes. Diversas implementaes permitem o trancamento explcito de dados para o controle de concorrncia (COMMIT, ROLLBACK, SAVEPOINT). A seguir sero apresentados mais detalhadamente cada um dos componentes da SQL. importante estar atento ao quadro de padro de sintaxe adotado na apresentao dos comandos.
SQL Padro de Sintaxe Conveno Descrio Palavras em negrito Representam palavras-chave e dados em um comando. Devem aparecer exatamente como mostrados em negrito. {} As chaves indicam a distino entre diferentes sees de um comando. Quando as chaves so seguidas de um *(asterisco), elas podem ser repetir 0 ou mais vezes no comando. Se as chaves forem seguidas de um +(mais) ento a seo deve ocorrer ao menos uma vez. Os colchetes indicam que a seo opcional Parnteses em negrito indicam que a estrutura deve aparecer como mostrada. Parnteses que no esto em negrito indicam ordem lgica de avaliao das expresses. O pontilhado indica que a seo pode ser repetida n vezes. A barra vertical indica o valor ou.

[] ()

... |

Antes de entrarmos diretamente nos comandos, segue uma lista de objetos que podem ser encontrados em um banco de dados:

74

Objeto Espaos de tabela

Descrio Tambm chamados Tablespaces. So espaos lgicos para dividir os dados. So teis quando desejamos separar determinados dados que geram muita fragmentao. Fragmentao para o SGBD, assim como para o Sistema Operacional, sinnimo de lentido na recuperao das informaes. Tambm chamados de Schemas. So divises lgicas no SGBD utilizadas para separar os objetos. Muitas vezes a ideia de Schema se confunde com a ideia de usurio. Tambm chamadas de Functions. Subalgoritmo implementado utilizando linguagem especfica do SGBD em uso. Lembrando que funo retorna valor. Tambm chamados de Triggers. Subalgoritmo implementado para ser disparado quando determinado eventos ocorrem no banco de dados. Um exemplo de uso de triggers para auditoria, podemos disparar um evento de log todas vez que um registro for excludo de uma tabela. As triggers podem ser utilizadas tambm para manter a integridade da base de dados. Tambm chamado de Index. Utilizado pra indexar informaes no banco de dados. Muito utilizado para melhora de desempenho de consultas ao banco de dados. Tambm chamado de Privileges. So lista de permisses possveis de serem concedidas em determinado SGBD. Existem permisses comuns a todos os SGBDs e tambm existem permisses especficas. Tambm chamados de Procedures. Subalgoritmo implementado utilizando linguagem especfica do SGBD em uso. Lembrando que procedimento no retorna valor. Tambm chamados de Users. So os usurios propriamente ditos que podero acessar o SGBD. de responsabilidade do DBA gerenciar os usurios. Tambm chamados de Views. So conhecidas como tabelas virtuais j que se apresentam em forma de tabela quando consultadas, no entanto, no mantm persistidos os dados consultas. As views nada mais so que consultas salvas no banco de dados. Tambm chamados de Datafiles. onde ficam armazenados os dados fisicamente. Seu gerenciamento de responsabilidade do SGBD e no podem ser acessados sem passar pelo SGBD.

Esquemas

Funes Gatilhos

ndices Permisses

Procedimentos Usurios Vises

Arquivos de Dados

7.1.DML (Data Manipulation Language/Linguagem de Manipulao de Dados)


Comando: SELECT Funo: Selecionar(buscar, recuperar) dados de uma ou mais tabelas do banco de dados. Sintaxe:

SELECT [EXPRESSO] [ tabela.coluna [AS] rotulo {, tabela.coluna }* ] FROM tabela {, tabela }* [[AS] rotulo] [ WHERE condio de busca ] [ GROUP BY coluna {, coluna }* ] [ HAVING condio ] [ ORDER BY coluna {, coluna }* [ASC | DESC] ] ;
75

Opes EXPRESSO ALL DISTINCT OPERADORES = !=, OU <>, OU ^= > >= < <= BETWEEN condio IN(lista de valores) LIKE Retorna todos os registros Retorna os registros de forma distinta(sem repetio) Igual a No igual a Maior que Maior ou Igual a Menor que Menor ou igual a Entre dois valores Dentro da lista de valores Que seja igual aos caracteres da amostra. Junto ao comando like podem ser utilizados os caracteres especiais(ou coringas) _ e %' Testa se um valor nulo Se utiliza em comparaes de verdade/falso para determinar se a subconsulta devolve algum registro. Utilizado para recuperar registros da consulta principal, que satisfaam a comparao com qualquer outro registro recuperado na subconsulta. Sinnimo do comando ANY.

IS NULL EXISTS

ANY

SOME

Obs.: Para a forma negativa pode ser utilizado o operador 'NOT'. Ex.: Not between, Is not null, Not like, Not exists, etc.

E-07) Selecionar o cdigo e nome dos funcionrios do departamento 5. SELECT NUMFUN, NOMFUN FROM FUNCIONARIO WHERE CODDEP = 'D5'; E-08) Selecionar o cdigo, nome do funcionrio e o nome do cargo do mesmo. Ordenar os dados pelo nome do funcionrio. SELECT NUMFUN, NOMFUN, DESCAR FROM FUNCIONARIO, CARGO WHERE FUNCIONARIO.CODCAR = CARGO.CODCAR ORDER BY NOMFUN; E-09) Recuperar usurios que realizaram pelo menos 1 emprstimo(Usando Exists). SELECT CODUSU, NOMUSU FROM USUARIO WHERE EXISTS (SELECT 'X' FROM EMPRESTIMO WHERE

76

EMPRESTIMO.CODUSU = USUARIO.CODUSU); E-10) Retornar todos os livros cujo cdigo seja maior que o cdigo de livros emprestados no dia '01/03/2008'. SELECT CODLIV, TITLIV FROM LIVRO WHERE CODLIV > ANY(SELECT CODLIV FROM EMPRESTIMO WHERE DATEMP = '01/03/2008'); E-11) Retornar o cdigo e nome dos usurios cujo cep 890 e seu cdigo maior que 3. SELECT CODUSU, NOMUSU FROM USUARIO WHERE CEPUSU = 890 AND CODUSU > 3;

Funes Aritmticas Funo Sintaxe Descrio Retorna o valor absoluto Arredonda o valor para o nmero de casas especificado Trunca o valor para o nmero de casas especificado Retorna o menor inteiro maior ou igual ao valor Retorna o maior inteiro menor ou igual ao valor Retorna o resto da diviso Retorna um numero elevado a outro Se valor maior que 0 retorna +1 Se valor menor que 0 retorna -1 Se valor igual a 0 retorna 0 Retorna a raiz quadrada do valor Descrio E OU NO(Negao) Descrio Igual Menor ou Maior que(Diferente) Maior que Menor que Maior ou igual que Menor ou igual que Operadores Aritmticos Operador Funo ABS ABS(balance) ROUND ROUND(valor, casas decimais) TRUNC TRUNC(valor, casas decimais) CEIL CEIL(valor) FLOOR FLOOR(valor) MOD MOD(valor1, valor2) POWER POWER(valor, expoente) SIGN SIGN(valor)

SQRT SQRT(valor) Operador Lgico ou Booleano AND OR NOT Operador de Comparao = <> > < >= <=

77

+ * /

Soma Subtrao Multiplicao Diviso

Precedncia(prioridade): *, /, +, - da esquerda para direta

Funes de Agregao Funo


MAX MIN SUM AVG COUNT MAX(valor) MIN(valor) SUM(valor) AVG(valor) COUNT(valor | *)

Sintaxe

Descrio
Retorna o maior valor Retorna o menor valor Retorna a soma dos valores Retorna a mdia dos valores Conta a quantidade de valores

Agrupamento: O GROUP BY utilizado agregado as funes de agregao para realizar sumarizao de dados, pode ser tambm utilizado para eliminar duplicidade de tuplas. Filtro de Agrupamento: A expresso HAVING pode ser utilizada quando existe uma
expresso GROUP BY, funcionando como um filtro para o agrupamento. Resumidamente, o HAVING o WHERE do GROUP BY. Atravs do HAVING pode-se selecionar apenas os agrupamentos desejados que atendam determinadas condies. Os campos que fazem o filtro do HAVING no precisam necessariamente estar selecionados. E-12) Nmero de funcionrios por departamento, mas apenas para os departamentos com mais de 5 funcionrios.

SELECT CODDEP, COUNT (*) FROM EMPREGADO GROUP BY CODDEP HAVING COUNT (*) > 5;
E-13) Mdia salarial dos departamentos que tenham mais de 2 funcionrios. SELECT CODDEP, AVG(SALFUN) FROM FUNCIONARIO GROUP BY CODDEP HAVING COUNT (*) > 2;

Como limitar o nmero de linhas retornadas por uma consulta? R.: No caso do PostgreSQL podem ser utilizadas as clusulas LIMIT e OFFSET. A

78

clusula LIMIT permite indicar o nmero de linhas a serem exibidas seguindo a sintaxe: LIMIT { nmero de linhas | ALL }. O OFFSET indica o incio da contagem de linhas. Um exemplo: SELECT * FROM funcionario LIMIT 10 OFFSET 2; Naturalmente em um modelo relacional ocorrem situaes onde existe a necessidade de relacionar mais de uma tabela em uma consulta SQL. Para isso utilizamos o conceito de juno. Estas junes podem ser realizadas implicitamente atravs do uso do operador WHERE, ou explicitamente atravs dos operadores de juno. Estes operadores de juno so explicados mais detalhadamente no quadro a seguir.

79

DICAS SQL: JUNES SQL E SUBQUERYS


JUNES SQL: As junes so operaes que permitem consultar dados de vrias tabelas. Existem vrios tipos de junes, dentre elas podem ser destacadas: self join, natural join, inner join, left join, right join, right outer join, left outer join , full outer join e o cross join. Alguns dos exemplos de junes so acompanhados de um diagrama Venn(ilustraes utilizadas para representar conjuntos, relaes matemticas ou relaes lgicas). Para explicar o funcionamento as junes vamos basear os exemplos no seguinte esquema relacional: uma empresa que possui vrios funcionrios, que por sua vez residem em uma nica cidade. EMPRESA(CODEMP, NOMEMP, CEPEND) CIDADE(CODCID, NOMCID) FUNCIONARIO(CODFUN, NOMFUN, CODEMP, CODSUP, CODCID) Sintaxe aplicvel no comando SELECT: [INNER | NATURAL | {{ LEFT | RIGHT | FULL } [OUTER]} | [CROSS] JOIN tabela [ON (predicado de relacionamento)]. Join: Implementao mais simples de juno. Permite recuperar dados de uma associao binria. Neste caso so recuperadas apenas as tuplas que satisfazem a condio de juno. Similar a utilizao do INNER JOIN. Exemplo: Nome da cidade de cada funcionrio? SELECT F.*, C.NOMCID FROM FUNCIONARIO F JOIN CIDADE C ON F.CODCID = C.CODCID; Utilizando a clusula WHERE(o mesmo resultado): SELECT F.*, C.NOMCID FROM FUNCIONARIO F, CIDADE C WHERE F.CODCID = C.CODCID;

80

Representao Grfica:

FUNCIONARIO / CIDADE

Self Join: Tambm chamado de auto-relacionamento, ou seja, uma tabela se relaciona com ela mesma. atravs deste tipo de juno que podemos recuperar dados de associaes unrias. Este comando tambm s recupera as tuplas que atenderem a condio de juno. Exemplo: Um funcionrio possui um supervisor, que tambm um funcionrio. Ento para responder a pergunta : O nome do supervisor de cada funcionrio? SELECT F1.NOMFUN FUNC, F2.NOMFUN SUPER FROM FUNCIONARIO F1, FUNCIONARIO F2 WHERE F1.CODSUP = F2.CODFUN; Natural Join: Realiza junes naturais entre duas tabelas, ou seja, relaciona as colunas com mesmo nome sem necessidade de informar a condio de relacionamento. S retorna as tuplas que satisfazem a condio de juno. Exemplo: Qual o nome da empresa funcionrio? SELECT F.*, E.NOMEMP FROM FUNCIONARIO F NATURAL JOIN EMPRESA; Obs.: Como a coluna em comum entre as duas tabelas CODEMP ento o comando relacionar estas duas colunas automaticamente para realizar a juno.

81

Cross Join: Implementa o produto cartesiano entre duas tabelas. Se resume a combinar todas as linhas das duas tabelas realizando uma operao de multiplicao entre elas. Neste caso no existe condio de juno. Exemplo: SELECT F.*, C.* FROM FUNCIONARIO F CROSS JOIN CIDADE C; Outro exemplo utilizando a clusula FROM: SELECT F.*, C.* FROM FUNCIONARIO F, CIDADE C; Obs.: Uma das operaes mais custosas para o SGBD executar. Representao Grfica:

FUNCIONARIO / CIDADE

Left Join: retorna todas as tuplas que satisfazem a condio de juno mais as tuplas da tabela a esquerda da juno. Exemplo: Retorna todos os funcionrios com o respectivo nome da cidade, mesmo que o funcionrio no possua cidade. SELECT F.NUMFUN. F.NOMFUN, C.NOMCID FROM FUNCIONARIO F LEFT JOIN CIDADE C ON F.CODCID = C.CODCID; Percebam que a tabela FUNCIONARIO esta a esquerda da juno.

82

Representao grfica:

FUNCIONARIO / CIDADE

Right Join: retorna todas as tuplas que satisfazem a condio de juno mais as tuplas da tabela a direita da juno. Exemplo: Retorna todos os funcionrios com o respectivo nome da cidade, mais as cidades que no possuem nenhum funcionrio residindo nela. SELECT F.NUMFUN. F.NOMFUN, C.NOMCID FROM FUNCIONARIO F RIGHT JOIN CIDADE C ON F.CODCID = C.CODCID; Percebam que a tabela CIDADE esta a direta da juno. Representao grfica:

FUNCIONARIO / CIDADE

Outer Join: Recuperamos todas as tuplas que no satisfazem a condio de juno de uma das tabelas. Este comando tem variaes de sintaxe conforme o banco de

83

dados utilizado. Left Outer Join: retorna somente os registros da esquerda que no existem na tabela da direita. Exemplo: Selecione todos os funcionrios que no possuem cidade. SELECT NUMFUN, NOMFUN FROM FUNCIONARIO F LEFT OUTER JOIN CIDADE C ON F.CODCID = C.CODCID; Representao grfica:

FUNCIONARIO / CIDADE

Right Outer Join: retorna somente os registros da direita que no existem na tabela da esquerda. Exemplo: Selecione todas as cidades sem nenhum funcionrio vinculado. SELECT C.CODCID, C.NOMCID FROM FUNCIONARIO F RIGHT OUTER JOIN CIDADE C ON F.CODCID = C.CODCID; Representao grfica:

84

FUNCIONARIO / CIDADE

Full Outer Join: Combina os resultados da aplicao do LEFT e do RIGHT OUTER JOIN. Exemplo: Todos os funcionrios e cidades que no esto vinculados, ou seja, funcionrios sem cidade e cidades sem funcionrios. SELECT F.NUMFUN, F.NOMFUN, C.CODCID, C.NOMCID FROM FUNCIONARIO F FULL OUTER JOIN CIDADE C ON F.CODCID = C.CODCID; Representao grfica:

FUNCIONARIO / CIDADE
SUBQUERYS: Uma instruo SELECT trabalha sobre predicados lgicos que precisam ser atendidos para que determinadas tuplas sejam recuperadas. Uma subquery nada mais que uma instruo SELECT embutida em outra instruo SELECT. Exemplos: 1) Recuperar a todos os funcionrios da cidade 10?

85

SELECT NUMFUN, NOMFUN FROM FUNCIONARIO WHERE CODCID = (SELECT CODCID FROM CIDADE WHERE CODCID = 10); A subquery neste caso gera uma lista de somente 1 valor, a cidade de cdigo 10, e isso usado na condio de busca da clusula WHERE. 2) Todas cidades que possuam mais de dois funcionrios vinculados. SELECT C.CODCID, C.NOMCID FROM CIDADE C WHERE (SELECT COUNT(*) FROM FUNCIONARIO F WHERE F.CODCID = C.CODCID) > 1; 3) Todos funcionrios das cidades 'SMOESTE', 'MARAVILHA' E 'PINHALZINHO'. SELECT NUMFUN, NOMFUN FROM FUNCIONARIO WHERE CODCID IN (SELECT CODCID FROM CIDADE WHERE NOMCID IN ('SMOESTE','MARAVILHA','PINHALZINHO')); Quadro Comparativo dos Operadores de lgebra Relacional com os de SQL Projeo Seleo Unio Interseo Diferena Juno Produto Cartesiano SELECT coluna1, coluna2, ..., colunaN SELECT + WHERE UNION INTERSECT EXCEPT | MINUS JOIN CROSS JOIN | FROM tabela1, tabela2, ..., tabelaN

Comando: INSERT

INTO

Funo: Inserir(incluir, adicionar) novas tuplas(linhas ou registros) em uma tabela(ou relao). Sintaxe:

INSERT INTO tabela [ (coluna { , coluna }* ) ] VALUES (valor { , valor }*);

86

TIPOS DE DADOS DAS TABELAS: Este comando exige que sejam conhecidos os tipos de dados de cada coluna na qual deseja-se inserir um valor. Para conhecer os tipos de dados de uma tabela precisamos utilizar um comando para recuperar sua estrutura ou os metadados2 armazenados no dicionrio do banco de dados em uso. Isto pode variar entre bancos de dados diferentes. Alguns exemplos para mostrar a estrutura de uma tabela a partir do dicionrio do BD: Oracle: DESC TABELA; Sybase/SQL Server: SP_COLUMNS TABELA; Mysql: DESC TABELA; Firebird/Interbase: SELECT RDB$RELATION_FIELDS.RDB$FIELD_NAME AS COLUMN_NAME, RDB$TYPES.RDB$TYPE_NAME AS DATA_TYPE FROM RDB$RELATIONS INNER JOIN RDB$RELATION_FIELDS ON RDB$RELATIONS.RDB$RELATION_NAME = RDB$RELATION_FIELDS.RDB$RELATION_NAME LEFT JOIN RDB$FIELDS ON RDB$RELATION_FIELDS.RDB$FIELD_SOURCE = RDB$FIELDS.RDB$FIELD_NAME LEFT JOIN RDB$TYPES ON RDB$FIELDS.RDB$FIELD_TYPE = RDB$TYPES.RDB$TYPE WHERE RDB$RELATIONS.RDB$RELATION_NAME = TABELA AND RDB$RELATIONS.RDB$SYSTEM_FLAG = 0 AND RDB$TYPES.RDB$FIELD_NAME='RDB$FIELD_TYPE'; Postgresql: SELECT N.NSPNAME AS ESQUEMA, C.RELNAME AS TABELA, A.ATTNAME AS CAMPO, FORMAT_TYPE(T.OID, NULL) AS TIPO_DE_DADO FROM PG_NAMESPACE N, PG_CLASS C, PG_ATTRIBUTE A, PG_TYPE T WHERE N.OID = C.RELNAMESPACE AND C.RELKIND = 'R' -- NO INDICES AND N.NSPNAME NOT LIKE 'PG\\_%' -- NO CATALOGS AND N.NSPNAME != 'INFORMATION_SCHEMA' -- NO INFORMATION_SCHEMA AND A.ATTNUM > 0 -- NO SYSTEM ATT'S AND NOT A.ATTISDROPPED -- NO DROPPED COLUMNS AND A.ATTRELID = C.OID AND A.ATTTYPID = T.OID AND C.RELNAME = 'TABELA';

2 Metadado: Tambm conhecido como metainformao. Em resumo so dados capazes de descrever outros dados.

87

Exemplos utilizando o comando INSERT: E-14) Insero de um funcionrio. INSERT INTO FUNCIONARIO VALUES '20/01/2005', 'M', 'C1', 'D2'); E-15) Insero de um funcionrio(indicando as colunas). INSERT INTO FUNCIONARIO (NUMFUN, NOMFUN, DATADM, SEXFUN, CODCAR, CODDEP) VALUES (1000, 'MARINALDO JOHN COIMBRA', '20/01/2005', 'M', 'C1', 'D2'); Existe uma variao do comando INSERT que pode ser utilizada para inserir um nmero determinado de linhas baseado em um SELECT. (1000, 'MARINALDO JOHN COIMBRA',

INSERT INTO tabela [ (coluna { , coluna }* ) ] SELECT corpo_select;


E-16) Inserindo os dados da tabela funcionrio em uma tabela cpia. INSERT INTO FUNCIONARIO_COPIA SELECT * FROM FUNCIONARIO;

possvel inserir mais de uma tupla no mesmo comando insert? R.: No PostgreSQL possvel utilizando a sintaxe conforme o exemplo: inserindo dois funcionrios na tabela FUNCIONARIO. INSERT INTO FUNCIONARIO (NUMFUN, NOMFUN, DATADM, SEXFUN, CODCAR, CODDEP) VALUES (1000, 'MARINALDO JOHN COIMBRA', '20/01/2005', 'M', 'C1', 'D2'), (1001, 'JOO DA SILVA', '20/01/2009', 'M', 'C1', 'D2'); Comando: UPDATE Funo: Atualizar(modificar, alterar) valores de colunas de uma tabela(ou relao). Sintaxe:

UPDATE tabela SET lista de atribuies [WHERE condio];


Lista de atribuies: coluna = expresso(separados por vrgula)
E-17) Atualizando o cargo do funcionrio 101 para C5. UPDATE FUNCIONARIO SET CODCAR = 'C5' WHERE NUMFUN = 101; E-18) Atualizando o departamento do funcionrio 104 para D5 e o cargo para C1. UPDATE FUNCIONARIO SET CODDEP = 'D5', CODCAR = 'C1'

88

WHERE NUMFUN = 104;

possvel realizar junes de tabelas no comando update? R.: Isso na verdade depende do SGBD. Normalmente se temos necessidade de realizar um update que dependa da juno de vrias tabelas, so necessrias serem utilizadas subquerys para resolver. O PostgreSQL entretanto suporta a clusula FROM no update. Exemplo: Atualizando o nome de cada funcionrio para o formato: nome atual + ' - ' + descrio do seu cargo. UPDATE FUNCIONARIO SET NOMFUN = NOMFUN || ' - ' || CARGO.DESCAR FROM CARGO WHERE CARGO.CODCAR = FUNCIONARIO.CODCAR; Comando: DELETE Funo: Excluir(eliminar, apagar) uma linha(tupla) de uma tabela(relao). Sintaxe:

DELETE FROM tabela [WHERE condio];


E-19) Excluindo o funcionrio 102. DELETE FROM FUNCIONARIO WHERE NUMFUN = 102; E-20) Excluindo todos os funcionrios cujo cdigo seja maior que 104 e o sexo seja masculino. DELETE FROM FUNCIONARIO WHERE NUMFUN > 104 AND SEXFUN = 'M';

possvel realizar junes de tabelas no comando delete? R.: Normalmente se temos necessidade de realizar um delete que dependa da juno de vrias tabelas, so necessrias serem utilizadas subquerys para resolver. O PostgreSQL entretanto suporta a clusula USING no delete. Exemplo: Excluindo emprstimos de usurios cujo cep 890. DELETE FROM EMPRESTIMO USING USUARIO WHERE USUARIO.CODUSU = EMPRESTIMO.CODUSU AND USUARIO.CEPUSU = '890';

89

7.2.DDL (Data Definition Language/Linguagem de Definio de Dados)


Comando: CREATE DATABASE
Funo: Criar uma base de dados. Sintaxe:

CREATE DATABASE nome_base [ [WITH] [ OWNER = proprietario] [TEMPLATE = modelo] [ENCODING = 'codificao'] [TABLESPACE = espao de tabela] ]
E-21) Criar uma base de dados chamada BDAULA tendo como proprietrio o usurio aluno. CREATE DATABASE BDAULA WITH OWNER = aluno ENCODING = 'latin1';

Comando: CREATE SCHEMA


Funo: Criar um novo esquema. Um esquema um namespace ou uma espcie de diretrio onde podero ser criados os objetos de um banco de dados. Um banco de dados pode possuir vrios esquemas. Sintaxe:

CREATE SCHEMA nome_esquema;


E-22) Criar um esquema chamado ADM. CREATE SCHEMA ADM; Comando: CREATE

TABLE

Funo: Utilizado para a criao/definio de tabelas(relaes). Sintaxe:

CREATE TABLE nome_tabela ( {(nome_coluna tipo_de_dado [DEFAULT valor_padro] [NOT NULL | NULL] [PRIMARY KEY] [restrio_coluna]) [restrio_tabela] } ); restrio_coluna: CONSTRAINT nome_restrio { DEFAULT valor_padro | NOT NULL |
90

NULL | UNIQUE | PRIMARY KEY | CHECK (condio) | REFERENCES [tabela(nome_coluna)] [ON DELETE ao] [ON UPDATE ao]} restrio_tabela: CONSTRAINT nome_restrio { NOT NULL | NULL | UNIQUE (nome_coluna [,...]) | PRIMARY KEY (nome_coluna [,...]) | CHECK (condio) | FOREIGN KEY (nome_coluna [,...]) REFERENCES tabela[(nome_coluna [,...])]] [ON DELETE ao] [ON UPDATE ao] }
Sintaxe alternativa:

CREATE TABLE nome_tabela AS comando_select;


QUADRO DE ITENS DA SINTAXE Nome NOT NULL OU NULL CONSTRAINT UNIQUE Descrio Indica se a coluna pode ou no receber valores nulos, ou seja, ficar sem valor. Define uma restrio. Esta restrio pode ser a nvel de tabela ou a nvel de coluna. Define um ndice unique, ou seja, nico sobre a coluna ou colunas desejadas. Significa que nesta coluna valores no podero ser repetidos. No entanto, esta tipo de ndice aceita valores nulos. Define a coluna ou colunas chave primria. Uma chave primria s pode ser definida sobre colunas NOT NULL e cujo conjunto de valores no apresentem repetio. Define uma coluna ou colunas chave estrangeira. Atravs desta opo se relacional duas tabelas no modelo relacional. Somente colunas pertencente a chave primria de uma tabela podem se tornar chave estrangeira em outra tabela(Integridade Referencial). parte integrante da definio de uma chave estrangeira. Atravs desta opo definem-se as colunas e o nome da tabela de origem da chave estrangeira. Permite definir um valor padro para uma determinada coluna. A coluna assumir este valor quando realizado um comando se insero de nova linha e a coluna no possuir valor. um tipo de restrio. Permite definir restries aos valores informados para determinada coluna. Baseia-se em um teste lgico.

PRIMARY KEY

FOREIGN KEY

REFERENCES

DEFAULT

CHECK

ON UPDATE E ON DELETE Tambm pode compor a definio das chave estrangeiras. Atravs destas opes so definidos os comportamentos assumidos por registros filhos em caso de atualizao ou excluso dos registros pais. Tipos de Aes: RESTRICT ou NO ACTION: ao padro. Probe a excluso de registros pais sem antes serem excludos os registros filhos. CASCADE: Replicao a atualizao do registro pai para todos os registros filhos. Exclui os registros filhos quando o registro pai for excludo. SET NULL: Colunas de registros filhos so alterados para NULL. SET DEFAULT: Altera o valor default caso o mesmo exista. Obs.: A DEFINIO DE CONSTRAINTS OPCIONAL. RECOMENDADO SUA UTILIZAO PARA FACILITAR POSSVEIS MANUTENES POSTERIORES.

91

A seguir so apresentados os tipos de dados bsicos dos principais SGBDs livres:


Tipos de Dados do Firebird Categoria Alfa Numrico Tipo de Dado/Sintaxe CHAR(n) VARCHAR(n) INTEGER DECIMAL(TD,DD) Tamanho varivel. Inteiro. Intervalo suportado: -2147483648 at + 2147483647. Nmeros reais. O nmero de dgitos total(TD total digits) indica a quantidade de dgitos do valor como um todo, j o nmero de dgitos decimais(DD decimal digits) indica o nmero de casas decimais aps o separador decimal. Um inteiro um valor decimal com DD = 0. Ex.: 23,4567 = Decimal(6,4). Nmeros reais. O nmero de dgitos total(TD total digits) indica a quantidade de dgitos do valor como um todo, j o nmero de dgitos decimais(DD decimal digits) indica o nmero de casas decimais aps o separador decimal. Um inteiro um valor decimal com DD = 0. Ex.: 23,4567 = Numeric(6,4). Data e hora. Somente data. Somente hora. Armazena valores binrios como: imagens, som, texto, etc. Tipos de Dados do MySQL Categoria Alfa Tipo de Dado/Sintaxe CHAR(n) VARCHAR(n) TEXT Numrico INTEGER DECIMAL(TD,DD) Tamanho varivel. Tamanho varivel. Recomendado para textos longos. Inteiro. Intervalo suportado: -2147483648 at + 2147483647. Nmeros reais. O nmero de dgitos total(TD total digits) indica a quantidade de dgitos do valor como um todo, j o nmero de dgitos decimais(DD decimal digits) indica o nmero de casas decimais aps o separador decimal. Um inteiro um valor decimal com DD = 0. Ex.: 23,4567 = Decimal(6,4). Nmeros reais. O nmero de dgitos total(TD total digits) indica a quantidade de dgitos do valor como um todo, j o nmero de dgitos decimais(DD decimal digits) indica o nmero de casas decimais aps o separador decimal. Um inteiro um valor decimal com DD = 0. Ex.: 23,4567 = Numeric(6,4). Inteiro auto-incremento. Intervalo suportado: 1 at 2147483647. Valores lgicos: 1 true /0 false . Data e hora. Somente data. Somente hora. Descrio Tamanho fixo. Completado com espaos em branco. Descrio Tamanho fixo. Completado com espaos em branco.

NUMERIC(TD,DD)

Data/Hora TIMESTAMP DATE TIME Binrio BLOB

NUMERIC(TD,DD)

AUTO_INCREMENT Lgicos BOOLEAN DATE TIME Data/Hora TIMESTAMP

92

Binrio

BLOB

Armazena valores binrios como: imagens, som, texto, etc. Tipos de Dados do PostgreSQL

Categoria Alfa

Tipo de Dado/Sintaxe CHAR(n) VARCHAR(n) TEXT Tamanho varivel.

Descrio Tamanho fixo. Completado com espaos em branco. Tamanho varivel. Recomendado para textos longos. Inteiro. Intervalo suportado: -2147483648 at + 2147483647. Nmeros reais. O nmero de dgitos total(TD total digits) indica a quantidade de dgitos do valor como um todo, j o nmero de dgitos decimais(DD decimal digits) indica o nmero de casas decimais aps o separador decimal. Um inteiro um valor decimal com DD = 0. Ex.: 23,4567 = Decimal(6,4). Nmeros reais. O nmero de dgitos total(TD total digits) indica a quantidade de dgitos do valor como um todo, j o nmero de dgitos decimais(DD decimal digits) indica o nmero de casas decimais aps o separador decimal. Um inteiro um valor decimal com DD = 0. Ex.: 23,4567 = Decimal(6,4). Inteiro auto-incremento. Intervalo suportado: 1 at 2147483647. Valores lgicos: true/false. Data e hora. Somente data. Somente hora. Armazena valores binrios como: imagens, som, texto, etc.

Numrico

INTEGER DECIMAL(TD,DD)

NUMERIC(TD,DD)

SERIAL Lgicos BOOLEAN DATE TIME Binrio BYTEA Data/Hora TIMESTAMP

Seguem vrios exemplos de criao de tabelas: E-23) Criao da tabela DEPARTAMENTO, com campos NOT NULL e a CHAVE PRIMRIA. CREATE TABLE DEPARTAMENTO ( CODDEP INTEGER NOT NULL PRIMARY KEY, NOMDEP VARCHAR(50) NOT NULL, RAMTEL VARCHAR(15) ); E-24) Criao da tabela DEPARTAMENTO, com campos NOT NULL e utilizando restrio de coluna. CREATE TABLE DEPARTAMENTO ( CODDEP INTEGER NOT NULL CONSTRAINT DEP_PK PRIMARY KEY, NOMDEP VARCHAR(50) NOT NULL, RAMTEL VARCHAR(15) ); E-25) Criao da tabela DEPARTAMENTO, com campos NOT NULL e utilizando restrio de tabela. CREATE TABLE DEPARTAMENTO (

93

CODDEP INTEGER NOT NULL, NOMDEP VARCHAR(50) NOT NULL, RAMTEL VARCHAR(15), CONSTRAINT DEP_PK PRIMARY KEY(CODDEP) ); E-26) Criao da tabela FUNCIONARIO, com campos NOT NULL, uma restrio CHECK e utilizando restrio de coluna para chave primria e restrio de coluna para chave estrangeira. CREATE TABLE FUNCIONARIO( NUMFUN INTEGER CONSTRAINT FUN_PK PRIMARY KEY, NOMFUN VARCHAR(80) NOT NULL, DATADM TIMESTAMP NOT NULL, SEXFUN NOT NULL CONSTRAINT FUN_SEXFUN_CK CHECK(SEXFUN IN ('F', 'M')), CODCAR INTEGER CARGO(CODCAR), CODDEP INTEGER DEPARTAMENTO(CODDEP) ); CONSTRAINT CONSTRAINT FUN_CODCAR_FK FUN_CODDEP_FK REFERENCES REFERENCES

E-27) Criao da tabela FUNCIONARIO, com campos NOT NULL, uma restrio CHECK e utilizando restrio de tabela para chave primria e restrio de tabela para chave estrangeira. CREATE TABLE FUNCIONARIO( NUMFUN INTEGER NOT NULL, NOMFUN VARCHAR(80) NOT NULL, DATADM TIMESTAMP NOT NULL, SEXFUN NOT NULL, CODCAR INTEGER, CODDEP INTEGER, CONSTRAINT FUN_PK PRIMARY KEY(NUMFUN), CONSTRAINT FUN_SEXFUN_CK CHECK(SEXFUN IN ('F', 'M')), CONSTRAINT FUN_CODCAR_FK FOREIGN KEY(CODCAR) REFERENCES CARGO(CODCAR), CONSTRAINT FUN_CODDEP_FK FOREIGN KEY(CODDEP) REFERENCES DEPARTAMENTO(CODDEP) ); E-28) Criao da tabela FUNCIONARIO utilizando as opes ON DELETE e ON UPDATE. CREATE TABLE FUNCIONARIO( NUMFUN INTEGER NOT NULL, NOMFUN VARCHAR(80) NOT NULL, DATADM TIMESTAMP NOT NULL, SEXFUN NOT NULL, CODCAR INTEGER, CODDEP INTEGER, CONSTRAINT FUN_PK PRIMARY KEY(NUMFUN), CONSTRAINT FUN_SEXFUN_CK CHECK(SEXFUN IN ('F', 'M')),

94

CONSTRAINT FUN_CODCAR_FK FOREIGN KEY(CODCAR) REFERENCES CARGO(CODCAR) ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT FUN_CODDEP_FK FOREIGN KEY(CODDEP) REFERENCES DEPARTAMENTO(CODDEP) ON DELETE RESTRICT ON UPDATE CASCADE ); E-29) Criao da tabela FUNCIONARIO com uma coluna com valor DEFAULT. CREATE TABLE FUNCIONARIO( NUMFUN INTEGER NOT NULL, NOMFUN VARCHAR(80) NOT NULL, DATADM TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, SEXFUN NOT NULL, CODCAR INTEGER, CODDEP INTEGER, CONSTRAINT FUN_PK PRIMARY KEY(NUMFUN), CONSTRAINT FUN_SEXFUN_CK CHECK(SEXFUN IN ('F', 'M')), CONSTRAINT FUN_CODCAR_FK FOREIGN KEY(CODCAR) REFERENCES CARGO(CODCAR), CONSTRAINT FUN_CODDEP_FK FOREIGN KEY(CODDEP) REFERENCES DEPARTAMENTO(CODDEP) ); E-30) Criao da tabela FUNCIONARIO_COPIA somente com os dados das funcionrios do sexo feminino. CREATE TABLE FUNCIONARIO_COPIA AS SELECT * FROM FUNCIONARIO WHERE SEXFUN = 'F'; Comando: ALTER

TABLE

Funo: Utilizado para alterar a estrutura de uma tabela. Sintaxe:

ALTER TABLE nome_tabela ADD nome_coluna tipo_de_dado; ALTER TABLE nome_tabela ADD definio_restrio; ALTER TABLE nome_tabela DROP nome_coluna; ALTER TABLE nome_tabela DROP CONSTRAINT nome_restrio; ALTER TABLE nome_tabela RENAME [COLUMN] nome_coluna TO [COLUMN] novo_nome_coluna; ALTER TABLE nome_tabela ALTER COLUMN nome_coluna TYPE novo_tipo_dado;
E-31) Adicionar uma coluna de salrio na tabela FUNCIONARIO. ALTER TABLE FUNCIONARIO ADD SALFUN DECIMAL(12,2) NOT NULL; E-32) Adicionar uma restrio CHECK a coluna SALFUN. ALTER TABLE FUNCIONARIO ADD CONSTRAINT FUN_SALFUN_CK CHECK(SALFUN > 0);

95

E-33) Excluir uma restrio da tabela FUNCIONARIO. ALTER TABLE FUNCIONARIO DROP CONSTRAINT FUN_SALFUN_CK; E-34) Excluir a coluna SALFUN da tabela EMPREGADO. ALTER TABLE FUNCIONARIO DROP SALFUN;

Comando:

DROP TABLE

Funo: Utilizado para excluir tabelas. Sintaxe:

DROP TABLE nome_tabela;


E-35) Excluindo a tabela FUNCIONARIO. DROP TABLE FUNCIONARIO; Comando: CREATE

INDEX

Funo: Utilizado para a criao/definio de ndices. Sintaxe:

CREATE [UNIQUE] INDEX nome_tabela(nome_coluna[,...]) [ASC | DESC];


O que um ndice e por que criar?

nome_indice

ON

Os ndices so estruturas fsicas de banco de dados criadas para otimizar a performance no acesso aos dados de uma tabela. Os comandos SELECT que envolvem a clusula ORDER BY, ficam mais rpidos aps a criao de ndices sobre os campos que fazem parte ordenao. Na hora de criar um ndice deve-se analisar quais campos da tabela participam das clusulas WHERE e ORDER BY em comandos como SELECT, UPDATE e DELETE. No entanto, o uso excessivo de ndices pode ser prejudicial performance, pois todo comando que atualiza a tabela origem pode gerar uma alterao no ndice. Os ndices geralmente so definidos em conjunto, pelo DBA e pelo DA ou analista de sistemas, que so os indivduos que conhecem quais so as consultas mais crticas e que envolvem o tratamento de um maior volume de dados. Os ndices podem ou no ser nicos (UNIQUE). O ndice nico quando no se permite repeties de valores nos registros que compem o ndice. Assim sendo, uma chave primria um ndice UNIQUE. Uma forma de avaliar se uma boa ideia criar um ndice sobre determinadas colunas de uma tabela, utilizar a seguinte frmula: nmero de registros distintos/nmero de registros

96

total; esta frmula vai gerar a seletividade do ndice, quanto mais prximo de 1 mais indicada a criao do ndice. E-36) Criando um ndice sobre a coluna nome do funcionrio. CREATE INDEX FUN_NOMFUN_SK ON FUNCIONARIO(NOMFUN); E-37) Criando um ndice nico sobre a coluna nome do departamento. CREATE UNIQUE INDEX DEP_NOMDEP_UK ON DEPARTAMENTO(NOMDEP); E-38) Criando um ndice sobre as colunas nome e cargo do empregado. CREATE INDEX FUN_NOMFUN_CODCAR_SK ON FUNCIONARIO(NOMFUN, CODCAR); Comando: DROP

INDEX

Funo: Utilizado para excluir ndices. Sintaxe:

DROP INDEX nome_indice;


E-39) Apagando um ndice sobre a coluna nome do funcionrio. DROP INDEX FUN_NOMFUN_SK; E-40) Apagando um ndice nico sobre a coluna nome do departamento. DROP INDEX DEP_NOMDEP_UK; Comando: CREATE

VIEW

Funo: Utilizado para a criao/definio de vises. Sintaxe:

CREATE VIEW nome_visao[(nome_coluna[,...])] AS comando_select;


O que uma viso e por que utilizar? As vises so estruturas fsicas de banco de dados teis para filtrar e formatar a apresentao de determinados dados. Uma viso tambm conhecida como uma tabela virtual, sua estrutura gerada com base em uma instruo SELECT. Os dados de uma viso so atualizados dinamicamente, cada acesso a mesma faz com que os dados exibidos sejam re-consultados. E-41) Uma viso sobre a tabela FUNCIONARIO utilizando somente algumas colunas. CREATE VIEW FUN_VW AS SELECT NUMFUN AS CODIGO, NOMFUN AS NOME FROM FUNCIONARIO

97

ORDER BY NOMFUN; E-42) Uma viso sobre a tabela DEPARTAMENTO pegando somente departamentos cujo nmero do ramal maior que 2000. CREATE VIEW DEP_VW AS SELECT CODDEP AS CODIGO, NOMDEP AS NOME FROM DEPARTAMENTO WHERE RAMTEL > 2000 ORDER BY NOMDEP; E-43) Uma viso sobre a tabela DEPARTAMENTO pegando somente departamentos cujo nmero do ramal maior que 2000. Com opo de definir as colunas. CREATE VIEW DEP_VW(CODIGO, NOME) AS SELECT CODDEP, NOMDEP FROM DEPARTAMENTO WHERE RAMTEL > 2000 ORDER BY NOMDEP; Comando: DROP

VIEW

Funo: Utilizado para excluir vises. Sintaxe:

DROP VIEW nome_visao;


E-44) Apagar a viso criada sobre a tabela FUNCIONARIO. DROP VIEW FUN_VW; E-45) Apagar a viso criada sobre a tabela DEPARTAMENTO. DROP VIEW DEP_VW;

7.3.DCL (Data Control Language/Linguagem de Controle de Dados)


CONTROLE DE USURIOS E PERMISSES DE ACESSO
CRIAO DE USURIOS/PAPIS Para acessar uma base de dados criada, necessrio tambm informar um usurio e uma senha. Este usurio dever ter permisso de acesso ao servidor e a base de dados desejada. Dois aspectos precisam ser observados: Autenticar o usurio e Autorizar o Usurio. Autenticar o usurio: Significa que necessrio criar um usurio e definir uma senha para o mesmo. Uma vez o usurio criado ele poder fazer seu login no servidor de banco de

98

dados. Como criar um usurio? Para a criao de um usurio o processo relativamente simples. Geralmente feito atravs do comando CREATE USER.

Comando: CREATE Sintaxe:

USER

Funo: Criar um usurio.

CREATE USER nome_usuario [ [WITH] [SUPERUSER | NOSUPERUSER | LOGIN | NOLOGIN | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | PASSWORD 'password' ] ];
QUADRO DE OPES Opo WITH SUPERUSER / NOSUPERUSER LOGIN / NOLOGIN CREATEDB / NOCREATEDB CREATEROLE / NOCREATEROLE CREATEUSER / NOCREATEUSER PASSWORD Descrio Permite criar o usurio com as opes apresentadas na sequncia. Indica se o usurio ser ou no superusurio. Indica se o usurio pode ou no realizar o login no servidor. Indica se o usurio poder ou no criar uma base de dados. Indica se o usurio poder ou no criar papis(ou grupos). Indica se o usurio poder ou no criar outros usurios. Indica a senha do usurio.

Obs.: importante ressaltar que as opes do comando CREATE USER podem variar de um SGBD para outro, sempre importante observar a documentao do SGBD para verificar qual a melhor forma de utilizar o comando.

E-46) Criar um usurio chamado ALUNO com a senha '123456'. CREATE USER ALUNO WITH PASSWORD '123456'; Em caso de necessidade de se alterar informaes em relao ao usurio criado pode ser utilizada a instruo a seguir. Comando: ALTER Sintaxe:

USER

Funo: Alterar informaes de um usurio criado.

ALTER USER nome_usuario [ [WITH] [SUPERUSER | NOSUPERUSER | LOGIN | NOLOGIN | CREATEDB | NOCREATEDB | CREATEROLE |
99

NOCREATEROLE | CREATEUSER | NOCREATEUSER | PASSWORD 'password'] ];


E-47) Alterar a senha do usurio ALUNO para '654321'. ALTER USER ALUNO WITH PASSWORD '654321';

Como excluir um usurio? Apesar de existirem opes para realizar o bloqueio dos usurios no SGBD, existe a opo de excluir um usurio. Comando: DROP

USER

Funo: Exclui um usurio. Sintaxe:

DROP USER nome_usuario;


E-48) Excluir o usurio ALUNO. DROP USER ALUNO; Obs.: Se o usurio possuir objetos dependentes, como: bases de dados, tabelas, etc; ser necessrio excluir as mesmas antes de excluir o usurio. Autorizar o usurio: Significa que necessrio definir o que o usurio pode ou no fazer quando estiver conectado na base de dados, ou seja, definir as permisses do usurio. As permisses determinaro as aes que um usurio pode executar sobre os objetos de uma base de dados. Estas permisses abrangem aes como SELECT(leitura) at aes como INSERT(escrita) na base de dados, entre outras. Como definir permisses para um usurio? Uma vez criado o usurio, torna-se necessrio conceder as permisses ao mesmo, ou seja, dizer o que ele pode fazer ou acessar quando estiver conectado a base de dados. Comando: GRANT Funo: Concede permisses para um usurio. Sintaxe:

GRANT { select | insert | update | delete | references | trigger | all [privileges] } ON { nome_tabela [, ...] } TO {nome_usuario | public | group} [WITH GRANT OPTION];
100

Variao da sintaxe:

GRANT group [, ...] TO usuario [, ...] [WITH ADMIN OPTION];


QUADRO DE OPES Opo SELECT | INSERT | DELETE | UPDATE REFERENCES TRIGGER ALL PRIVILEGES PUBLIC GROUP WITH GRANT OPTION Descrio Concede as permisses de ler, inserir, excluir ou atualizar informaes em determinada tabela da base de dados. Concede permisso para que sejam criadas chaves estrangeiras sobre determinada tabela da base de dados. Concede permisso de criao de gatilhos(triggers), procedimento e funes dentro da base de dados. Concede todas as permisses. Grupo pblico, uma vez concedida uma permisso para este grupo, todos(usurios e grupos) tero acesso a mesma. Um grupo qualquer criado na base de dados. Alm de conceder a permisso permite que o usurio ou grupo passe a mesma adiante.

E-49) Conceder permisso de leitura e insero na tabela PESSOA para o usurio ALUNO. GRANT SELECT, INSERT ON PESSOA TO ALUNO; Como remover permisses de um usurio? Se necessrio podemos tambm revogar as permisses de um usurio, tudo isso varia de acordo com a poltica de acesso ao servidor de banco de dados que foi definida. Comando: REVOKE Funo: Revoga permisses de um usurio. Sintaxe:

REVOKE { select | insert | update | delete | references | trigger | all [privileges] } ON { nome_tabela [, ...] } FROM { nome_usurio | public | group };
E-50) Revogar as permisses anteriormente concedidas ao usurio ALUNO. REVOKE SELECT, INSERT ON PESSOA FROM ALUNO; CRIAO DE GRUPOS Para facilitar a concesso e organizao das permisses em uma base de dados

101

existe ainda a possibilidade de serem definidos grupos, chamados de GROUPs. Nestes grupos podero ser definidas as regras gerais de autorizao. Por fim basta conceder um grupo para o usurio e este poder herdar todas as permisses pertencentes ao grupo.

Como criar um grupo? Comando: CREATE Sintaxe:

GROUP

Funo: Criar um grupo.

CREATE GROUP nome_grupo;


Como apagar um grupo? Comando: DROP Sintaxe:

GROUP

Funo: Apagar um grupo.

DROP GROUP nome_grupo;


E-51) Criar dois grupos, um chamado CONSULTA e outro chamado OPERADOR, conceder as permisses necessrias. CREATE GROUP CONSULTA; CREATE GROUP OPERADOR; GRANT SELECT ON EMPREGADO TO CONSULTA; GRANT SELECT, INSERT, DELETE, UPDATE ON EMPREGADO TO OPERADOR; Adicionando o usurio ALUNO ao grupo CONSULTA: GRANT CONSULTA TO ALUNO; Adicionando o usurio GERENTE ao grupo OPERADOR: GRANT OPERADOR TO GERENTE;

7.4.TML (Transaction Manipulation Language/Linguagem de Manipulao de Transaes)


O controle de transaes atividade fundamental para garantir a consistncia dos

102

dados bem como sua possvel recuperao aps uma falha na sua manipulao. A maior parte dos bancos de dados oferece duas formas de iniciar uma transao: implcita iniciada quando uma operao DDL ou DML executada na base de dados; explcita quando uma transao explicitamente iniciada pelo usurio que est interagindo com a base de dados. importante verificar qual modelo de controle de concorrncia utilizado pelo banco de dados. Um modelo que alguns bancos de dados utilizam o MVCC (Multiversion Concurrency Control).
Comando: BEGIN Sintaxe:

| START

Funo: Iniciar explicitamente um processo de transao.

[BEGIN WORK | TRANSACTION] | [START TRANSACTION]


Comando: COMMIT Funo: Finalizar uma transao confirmando as alteraes feitas em uma base de dados. Sintaxe:

COMMIT [WORK] | [TRANSACTION];


Comando: ROLLBACK Funo: Finalizar uma transao desfazendo as alteraes efetuadas em uma base de dados. Sintaxe:

ROLLBACK [WORK] | [TRANSACTION];


Nveis de Isolamento de uma Transao SQL
Nvel Isolamento Read uncommited Read commited Repeatable read Serializable Dirty Read Possvel Impossvel Impossvel Impossvel Nonrepeatable Read Possvel Possvel Impossvel Impossvel Phantom read Possvel Possvel Possvel Impossvel

Fenmenos indesejveis relacionados a transao Dirty read: Uma transao l dados no-comitados de uma transao concorrente. Nonrepeatable read: Uma transao re-l dados j lidos e detecta que os dados sofreram alterao. Phantom read: Uma transao re-executa uma query retornando um conjunto de registros que satisfazem uma determinada condio e detecta que o conjunto de registros

103

retornados foi alterado por outra transao recentemente comitada.

8.BACKUP E RESTORE
Uma prtica fundamental no uso de banco de dados a estratgia adotada para efetuar backup (cpia de segurana) das informaes. A informao armazenada no banco de dados tem um valor altssimo que s pode ser dimensionado quando da perda da mesma. Falhas de hardware ou software, quedas de energia e at mesmo usurios maliciosos podem causar a perda destas informaes. recomendada a adoo de uma boa estratgia de backup das informaes armazenadas em um banco de dados. Este backup pode ser feito de vrias formas e abordagens, o importante montar uma estratgia compatvel com o banco de dados em uso e que fornea a condio, em caso de perda de alguma informao, de uma rpida recuperao da mesma. preciso ressaltar tambm que uma estratgia de backup no consiste apenas em copiar as informaes, porque caso as mesmas tenham sido copiadas e no possam ser recuperadas de nada vale o backup. Quase todo banco de dados implementa pelo menos trs tipos de backup, que podem ser classificados como: backup lgico(cpia dos dados), backup fsico(cpia fsica dos arquivos de dados) e logs de alteraes(tambm chamado de modo de arquivamento - PITR). Tipos de Backup: Backup Lgico(Logical Backup): O backup lgico consiste em uma cpia das informaes(dados) de um banco de dados. Alguns bancos de dados armazenam os dados de um backup lgico em arquivos texto e outros em arquivos binrios. A disposio dos dados no arquivo tambm depende do banco de dados, o mais comum os dados serem gerados em formato de script incluindo os comandos DML e DDL necessrios para retorn-los a uma base de dados. Backup Fsico(File System Level Backup): O backup fsico consiste em uma cpia fsica dos arquivos que compe a base de dados do SGBD. Em alguns casos alm da cpia fsica dos arquivos de dados faz-se necessria a cpia de arquivos de configurao do SGBD para que os arquivos de dados possam novamente ser montados na mesma ou em outra base de dados. Logs de Alteraes(Continuous Archiving(Archive Mode) Point-in-Time Recovery(PITR)): Este um tipo de backup que na verdade se comporta como um log. Todas as alteraes em uma base de dados so armazenadas em um log, o tempo de vida deste log determinado pelo DBA(DataBase Administrator). Quando uma falha ocorre no banco de dados o DBA pode recuperar as informaes de um determinado momento a partir destes logs. O

104

diferencial deste backup que o mesmo permite a recuperao de informaes perdidas em faixas menores de tempo, normalmente no permitidas pelas outras tcnicas de backup. O modo do backup em um servidor ainda pode ser realizado em dois modos: a) Modo On-line(Hot Backup): Neste modo o backup pode ser realizado com o servidor de banco de dados ativo. Obs.: Este tipo de backup pode deixar lentas demais atividades realizadas no servidor de banco de dados. b) Modo Off-line(Cold Backup): Neste modo de backup o servidor de banco de dados deve ser parado ou devero ser evitadas conexes ao servidor para que o backup possa ser realizado. Backup no PostgreSQL Como qualquer outro banco de dados o PostgreSQL tambm permite e necessita que seus dados sejam backupeados regularmente a fim de evitar perda de informaes. O PostgreSQL suporta fundamentalmente trs tipos de backup diferentes:

SQL dump: permite a criao de um arquivo texto com os comandos SQL PG_DUMP(http://www.postgresql.org/docs/8.4/interactive/app-pgdump.html).

necessrios para restaurar uma base dados. Para isso utilizado um aplicativo cliente chamado Este aplicativo executa em modo caractere. Este tipo de backup pode ser considerado um backup lgico. Algumas das sintaxes possveis para o aplicativo PG_DUMP:

pg_dump

nome_base_de_dados

>

arquivo_saida(backup

sendo

realizado localmente no servidor);

pg_dump -h servidor base_de_dados > arquivo_saida(backup sendo

realizado de um servidor remoto). Existe ainda um aplicativo cliente chamado PG_DUMPALL que pode ser utilizado para realizar um backup completo de todas as bases de dados residentes no servidor, sem a necessidade de informar base a base. Para restaurar dados de um backup realizados pelo PG_DUMP ou PG_DUMPALL pode ser utilizar o aplicativo cliente ou PSQL(http://www.postgresql.org/docs/8.4/interactive/app-psql.html) Exemplo:

PG_RESTORE(http://www.postgresql.org/docs/8.4/interactive/app-pgrestore.html). psql nome_base_de_dados < arquivo_entrada; pg_restore -d nome_base_de_dados arquivo_entrada;

File system level backup: Neste caso estamos realizando um backup fsico. Em

resumo o que fazemos neste tipo de backup fazer uma cpia de toda o diretrio que

105

contm os dados do PostgreSQL(normalmente chamada de data, residindo dentro da pasta de instalao do SGBD). Devem ser copiados tambm os arquivos de configurao.

Continuous archiving: Nesta modalidade de backup o PostgreSQL permite que

sejam registrados logs de todas as alteraes realizadas no banco de dados. Caso ocorram problemas durante alguma operao nos dados atravs deste tipo de backup podemos recuperar as informaes at determinado ponto no tempo, retornando a base de dados a um estado consistente.

9.ESTUDOS DE CASO PARA MODELAGEM


1. CADASTRO NACIONAL DE VECULOS: Voc apresentar um modelo de dados para o cadastro nacional de veculos. Sabe-se que:

O veculo possui sempre uma placa nica em todo o pas; O veculo possui sempre um responsvel legal por ele. necessrio manter o histrico desta responsabilidade (propriedade); O veculo pertence sempre a uma categoria; O veculo sempre de uma marca e de um modelo e possui ano de fabricao.

2. BIBLIOTECA: A Srta. Doralice Sampaio a coordenadora de uma Biblioteca de uma universidade brasileira. Ultimamente esta universidade vem recebendo muitos microcomputadores para uso de seus alunos e, como h tantos disponveis, o diretor da escola acenou com a possibilidade de instalar alguns deles na biblioteca. Com estes microcomputadores instalados na biblioteca percebeu-se que os processos realizados atualmente na biblioteca poderiam ser automatizados atravs de um sistema de informao. A biblioteca possui uma funcionria para comprar livros das editoras e livrarias. Quando o livro recebido pela biblioteca ele tombado, classificado por assunto e catalogado, sendo em seguida liberado para emprstimos ou consulta. O acervo fica aberto para que os leitores possam ir at as estantes escolher o livro desejado. Ao sair, uma atendente anota o emprstimo. Os livros emprestados podem ser renovados uma quantidade ilimitada de vezes, a menos que alguns livros sejam muito consultados ou ento sofram alguma reserva. Livros usados como texto bsico em cursos durante o perodo letivo, no podem ser emprestados, devendo ser consultados nas dependncias da biblioteca. Os leitores devem se cadastrar como usurios da biblioteca, e s podem ser alunos, professores e funcionrios. Os leitores tm prazo fixo de tempo para emprstimo. Existe a possibilidade de visitantes utilizarem a biblioteca, mas os mesmos tambm devero ser cadastrados, recebero uma carteirinha de uso temporrio e no podero realizar emprstimos de livros. O leitor pode se desligar espontaneamente da biblioteca, cancelando sua inscrio ou pode ser desligado a revelia, depois de um perodo sem utilizar a biblioteca. Isto ocorre com frequncia com os alunos que se formam ou mudam de cidade. Para leitores no familiarizados com os termos tcnicos usados no ambiente de uma biblioteca, esclarecemos que o termo tombar significa registrar o livro no acervo na biblioteca,

106

atribuindo-lhe um nmero sequencial e nico, e o termo classificar significa atribuir um nmero de cdigo para o livro, geralmente por tipo de assunto. Este cdigo ser usado para localizar os livros nas estantes. 3. CONTROLE DE ESTOQUE: Uma empresa do comrcio varejista, deseja fazer o controle de estoque de seu estabelecimento. Para facilitar a administrao do seu estoque, a organizao criou uma estrutura de almoxarifados, onde um produto pode ser estocado em vrios almoxarifados e um almoxarifado pode conter vrios produtos. A reposio de estoque acontece quando os produtos adquiridos de um fornecedor chegam com sua respectiva nota fiscal de compra. J a baixa do estoque se d quando ocorre a emisso de uma nota fiscal de venda para um determinado cliente. Alm disso, deseja-se classificar os produtos em linhas a serem determinadas pelo usurio de acordo com a sua necessidade. Elabore um DER que contemple os dados necessrios a este controle. Represente as chaves primrias e estrangeiras, os principais atributos, as integridades referenciais e a obrigatoriedade/opcionalidade dos relacionamentos. 4. POSTOS DE COMBUSTVEL: A rede de postos de combustvel BOA ESTRADA contratou a sua companhia para fazer um sistema que ajude a controlar o estoque de combustveis do posto. Os combustveis podem ser lcool, diesel, gasolina, aditivados ou no. Cada combustvel tem um estoque mnimo aceitvel. Os combustveis so guardados em tanques. Cada tanque destinado para um tipo especfico de combustvel, mas pode existir mais de um tanque para o mesmo tipo de combustvel. Cada tanque suporta um volume especfico de combustvel. . As bombas podem ter um ou mais bicos e cada bico pode estar ligado a um tanque. Cada bico da bomba tem um contador que determina a quantidade de litros vendida desde sua instalao. Ao fechar o posto, o dono deve inserir no sistema a contagem marcada em cada bico bomba (que indicar o consumo dirio da bomba). Caso algum combustvel fique abaixo do estoque mnimo, deve ser gerado um pedido de compra para a empresa distribuidora. Quando o caminho de distribuio chega, o dono deve colocar no sistema os dados referentes a quantos litros foram colocados em cada tanque (e data). Quando o dono solicitar, o sistema deve gerar uma declarao de venda de combustvel, listando todas as vendas desde a ltima declarao. Esta declarao padronizada e inclui uma srie de impostos com alquotas diferentes para cada combustvel. Quando precisar, o dono deve ser capaz de alterar os impostos ou as alquotas referentes ao relatrio anterior. Os diversos combustveis comercializados pela empresa possuem um identificador, nome comercial e nmero de octanas(Octanagem o ndice de resistncia detonao da gasolina). Cada posto tem um identificador nico, bem como um nome e morada. As bombas possuem um nmero que um atributo com o nmero sequencial da bomba. Os preos de venda ao pblico de cada tipo de combustvel, para cada posto, em vigor a partir da data DataIn at a data DataFim. Cada venda de combustvel a um cliente possui um identificador nico, sendo registada com o identificador do posto, o nmero da bomba, o identificador do combustvel, a data e hora da venda e quantidade vendida. Cada uma destas bombas possui sempre vrias pistolas numeradas sequencialmente. Uma pistola retira o combustvel de um e um s depsito. Naturalmente, no se instalam depsitos

107

para combustveis que no podem ser fornecidos pelas pistolas existentes. 5. CONTROLE DE OCORRNCIAS DE UMA DELEGACIA: Deseja-se informatizar servios oferecidos por uma delegacia. Para isso foi criado o sistema DELEGA VIRTUAL. Detre as atividades informatizadas esto o registro de ocorrncias e demais controles internos de uma delegacia. De forma geral o objetivo necessrio saber os dados das vtimas e dos criminosos para dar seguimento aos documentos processuais, bem como armazenar informaes sobre cada crime ocorrido. Um criminoso comete um crime contra um ou mais vtimas, e uma vtima pode sofrer um crime por um ou vrios criminosos. Um crime cometido em um municpio de um estado, e em um crime pode utilizado um tipo de arma. Alm disso, deseja-se ainda permitir o registro on-line de: acidentes de trnsito sem vtima, aviso de desaparecimento ou localizao de pessoa, extravio (perda de documentos pessoais ou celulares, por exemplo) e furto simples (quando no h vestgios, como sinais de arrombamento, impresses digitais ou marcas de escalada de muro), solicitao de cpia de registro de ocorrncia e crimes eletrnicos. O sistema ainda viabilizar uma maneira fcil de automatizar o acompanhamento desses procedimentos agilizando a manipulao dos dados. A delegacia possui um ptio para guardar os veculos apreendidos devido a infraes de transito. Para cada veculo apreendido deve-se guardar os dados do policial responsvel pela apreenso (nome e CPF), assim como os dados do veculo (ano de fabricao, marca, modelo e RANAVAM) e os dados do proprietrio do veculo (nome e CPF). Para cada veculo apreendido deve-se armazenar as infraes que levaram a apreenso do veculo. A delegacia possui tambm o servio de denncias, para cada denncia deve ser armazenado a data da denncia, o motivo da denncia, a pessoa que foi denunciada (se houver) e se a denuncia foi confirmada ou no. 6. FLORICULTURA: A X.P.T.O LTDA criou a FLOWERNET, uma rede que tem como objetivo atender todo o mercado nacional no que diz respeito venda e entrega de flores. Atravs desta rede, um cliente pode fazer uma compra de flores em Belo Horizonte e pedir para a entrega ser feita em Fortaleza. Para isso a X.P.T.O firmou convnio com vrias floriculturas em vrias cidades do Brasil. Uma floricultura pode atender vrias cidades de uma regio. O pedido do cliente, que pode possuir vrios tipos de flores, cadastrado e repassado para uma das floriculturas conveniadas que atendem a cidade, na qual ser entregue o pedido. Alm das atividades j mencionadas pretendese ainda: a) Inicialmente, deseja manter um cadastro de todos os seus clientes, mantendo informaes como: CPF, RG, nome, telefone e endereo; b) Deseja tambm manter um cadastro contendo informaes sobre os produtos(flores) que vende, tais como: nome do produto, tipo (flor, vaso, planta,...), preo e quantidade em estoque; c) Quando um cliente faz uma compra, a mesma armazenada, mantendo informao sobre o cliente que fez a compra, a data da compra, o valor total e os produtos comprados; d) importante controlar os tipos de flores; e) Deve-se controlar o cadastro das floriculturas e os respectivas cidades e estados onde se localizam;

108

f)

Deve-se controlar os dados dos funcionrios das floriculturas;

g) O cliente pode fazer seu pedido de forma on-line ou via telefone; h) O vendedor que atendeu o pedido do cliente por telefone recebe 5% de comisso; i) Controle tambm os fornecedores de flores e tipos; A XPTO ainda mantm um cadastro das possveis empresas que podem realizar a entrega das flores bem como onde esto localizadas. Os dados destas empresas so fornecidos pelas floriculturas conveniadas.. 7. APURAO ELEITORAL: Para facilitar o processamento da apurao eleitoral da eleio municipal a ser realizada nesse ano, o TRE (Tribunal Regional Eleitoral) resolveu informatizar esse processo. Sabe-se que cada localidade dividida em vrias zonas eleitorais que, por sua vez, so divididas em vrias sees nas quais os eleitores esto vinculados. O candidato a um cargo pblico deve estar vinculado a um nico partido poltico. Vale ressaltar que, segundo a legislao vigente, o voto secreto. Elabore um DER que represente os dados referentes a esse processo, juntamente com os principais atributos, chaves (primrias e estrangeiras), integridades referenciais e a opcionalidade/obrigatoriedade dos relacionamentos. 8. CONCURSO PBLICO: Uma organizao deseja implementar o procedimento de concurso pblico para tornar transparente o seu processo de seleo de pessoal. Esta organizao possui vrios departamentos, que por sua vez, possui vrios cargos. O mesmo cargo pode estar vinculado vrios departamentos. Um concurso pblico realizado para vrios cargos, e um cargo pode ser oferecido em vrios concursos. O candidato faz inscrio em somente um cargo oferecido em um concurso pblico. O concurso tem vrias etapas, que tem a participao de vrios candidatos. O candidato obtm a nota em cada etapa que participa. A etapa pode ser classificatria ou eliminatria. Elabore um DER que represente os dados necessrios a este controle, juntamente com as Integridades Referenciais e a Opcionalidade/Obrigatoriedade dos relacionamentos. 9. LOJA DE DISCOS: Deseja-se representar os dados necessrios para o controle de um conjunto de discos/cds. Uma msica pode estar presente em vrios discos/cds, que por sua vez exclusivo de uma gravadora. Uma msica pode ter vrios compositores e vrios interpretes, mas s classificada em um estilo. Elabore um DER que represente os dados referentes a esse controle, juntamente com os principais atributos, chaves (primrias e estrangeiras), integridades referenciais e a opcionalidade/obrigatoriedade dos relacionamentos. 10. FATURA DE CONTA DE TELEFONE: Uma empresa prestadora de servios de Telecomunicaes deseja informatizar a emisso de sua fatura de servios. Os principais dados desta fatura so: nmero do telefone, data de vencimento, data de emisso, cdigo do cliente, nome e endereo do cliente, ms de referncia dos servios e, um espao reservado para no mximo 10 servios, onde cada um tem data e hora, tipo do servio, descrio do tipo do servio, tempo de utilizao, telefone chamado, valor unitrio, valor da utilizao e o percentual de ICMS do tipo do servio. Alm disso

109

tem-se o total da fatura. Normalize a entidade Fatura Servio at a 3FN, passando pela 1FN e 2FN. Represente os principais atributos, chaves, Irs, obrigatoriedade e opcionalidade. 11. CONTROLE DE EQUIPAMENTOS: Uma empresa deseja controlar os seus equipamentos de informtica. Existem vrios tipos de equipamento, tais como: CPU, impressoras, modem, etc. Cada equipamento est fisicamente em um departamento da empresa. Somente o empregado responsvel pelo departamento, o chefe, pode solicitar a compra de um novo equipamento. Desejase tambm controlar as manutenes realizadas em cada equipamento. Elabore um DER que represente esses dados, juntamente com os principais atributos, chaves (primrias e estrangeiras), integridades referenciais e a opcionalidade/obrigatoriedade dos relacionamentos. 12. CONTROLE DE HOSPEDAGEM E UTILIZAO DE SERVIOS DE UMA REDE DE HOTIS: Uma rede de hotis necessita mapear/modelar os dados necessrios ao seu controle de hospedagem e a utilizao de servios pelos hspedes. Sabe-se que, ao solicitar uma reserva, os dados do cliente so devidamente cadastrados, inclusive o tipo de convnio que est sendo utilizado. Ao dar entrada no balco de atendimento, o cliente passa assumir a condio de hspede. Vrios quartos podem estar relacionados com o mesmo hspede, como, por exemplo, no caso de viagem em famlia. Mesmo assim a empresa deseja guardar informaes de quais pessoas encontram-se em cada acomodao. Os quartos so classificados como de luxo e standard, e podem ser ocupados por vrios hspedes em perodos distintos. O servio de copa do hotel registra os pedidos de itens do cardpio em funo do relacionamento entre hspede e quarto. O mesmo ocorre para os demais servios do hotel, como eventos/passeios, lavanderia, sauna, etc. Elabore um DER que represente esses dados, juntamente com os principais atributos, chaves (primrias e estrangeiras), integridades referenciais e a opcionalidade/obrigatoriedade dos relacionamentos. 13. DIRIO DE CLASSE: Uma universidade deseja informatizar o controle de frequncia de seus alunos. Este controle realizado atravs dos dirios de classe de cada turma. Os principais dados do dirio de classe so: sigla e nome do curso, matrcula e nome do professor, cdigo e nome da turma de uma disciplina, perodo e turno da turma, um espao reservado para os alunos da turma (um aluno pode fazer parte de vrias turmas), o ms e o ano de referncia do dirio de classe. Alm disto, cada aluno/turma est relacionado com os dias de cada ms de referncia do dirio de classe, ou seja, com os dias que acontece as aulas da turma e para os quais sero registrados as frequncias dos alunos (P - presente e F - falta). Elabore um DER na 3FN que represente os dados necessrios a esse controle. Represente os principais atributos, chaves, Irs, obrigatoriedade e opcionalidade. 14. CAMPEONATO DE FRMULA I: A Federao Internacional de Automobilismo deseja controlar os dados referentes aos Campeonatos Mundiais de Frmula I. As equipes, de diversos pases, participam dos campeonatos. Uma equipe possui vrios pilotos, e exige a sua fidelidade. Cada Grande Prmio (GP) de um campeonato realizado em um pas diferente, e tem a participao de

110

vrios pilotos. A pontuao obtida por um piloto em cada GP que participa. Deseja-se controlar tambm a nacionalidade dos pilotos. Elabore um DER que contemple os dados necessrios a este controle. Represente as chaves primrias e estrangeiras, os principais atributos e a obrigatoriedade/opcionalidade dos relacionamentos. 15. PLANO DE SADE: Uma empresa, que gerencia um plano de sade, deseja construir um sistema para facilitar e agilizar o gerenciamento das internaes, seja em enfermaria ou em apartamento do tipo standard, realizadas por seus associados (usurios), bem como o controle dos pagamentos que devem ser realizados aos hospitais credenciados junto empresa. O controle de mensalidades dos associados no faz parte do escopo do sistema. A empresa s trabalha com um tipo de plano de sade. S se deseja controlar as dirias de internaes. 16. ESTACIONAMENTO UNIVERSITRIO: Uma Universidade deseja construir um sistema para facilitar e agilizar o controle de acesso de veculos aos seus cinco estacionamentos para prover mais segurana e comodidade para os seus usurios. O sistema dever permitir que se cadastre todos os tipos de usurios (alunos, professores e funcionrios), que recebero um carto com um cdigo de barra para sua identificao. Cada usurio poder solicitar o cadastramento de vrios veculos com os quais utiliza os estacionamentos da universidade. Ao chegar a qualquer porto de acesso universidade, o vigilante ir informar a placa do veculo e o usurio dever passar o carto magntico em um leitor de cdigo de barras, e com isso, o sistema ir identificar se o veculo est relacionado com a identificao do usurio. Ao sair, o usurio simplesmente passar o seu carto em outra leitora de cdigo de barras. O visitante (usurio no cadastrado) dever pegar um carto especial com os vigilantes. Atravs desses procedimentos, o sistema poder fornecer dados de ocupao de cada estacionamento, alm de permitir a consulta de quais os veculos esto, ou estiveram, dentro da universidade em um determinado dia e horrio. 17. LOJA DE MATERIAIS DE CONSTRUO: Uma organizao que atua no ramo de vendas de materiais de construo deseja montar um banco de dados para emisso de faturas em suas lojas, gerenciando a comisso de cada empregado. Sabe-se:

A empresa possui diversas lojas; Um empregado pertence sempre a uma loja mas j pode ter trabalhado em outras lojas da rede;

Uma nota fiscal composta de dados genricos (nmero da nota fiscal, nome do cliente, data de emisso, valor total da Nota fiscal, nome do empregado responsvel pela venda) e dados do detalhe da venda (nome do material vendido, quantidade deste material, valor unitrio, valor total do item de material vendido). 16. CONTROLE DE EVENTOS: Uma empresa, chamada EVENTO MANIA, especializada em eventos necessita informatizar o controle de seus eventos. Tendo-se em vista a longa experincia da empresa no ramo de organizao de eventos a mesma definiu os seguintes requisitos a serem

111

atendidos pelo sistema:

Controlar o cadastro de participantes e palestrantes. importante manter dados completos de ambos j que ao final sero emitidos certificados e declaraes para os mesmos. Deve ser cadastrada a foto do participante e do palestrante; O sistema dever permitir o cadastro dos eventos. Vrios eventos podem estar ocorrendo simultaneamente em lugares diferentes; O sistema dever tambm permitir o cadastro da programao completa de cada evento, programao esta que pode ser composta por: palestras ou oficinas; O sistema deve controlar o processo de inscrio no evento bem como as formas de pagamento para o mesmo; Durante o evento o sistema deve controlar o acesso ao evento. No ser permitida a entrada de participantes que no esto inscritos ou que no quitaram o pagamento da inscrio. No entanto, possvel realizar inscries de cortesia; importante controlar o choque de horrio na inscrio no evento, como assim, um participante no pode estar inscrito para programaes diferentes, no mesmo horrio, no mesmo evento; Uma programao tem um limite de participantes, isso definido em funo do local onde ser realizada a mesma, local este que pode ser: uma sala, um auditrio ou laboratrio. Estes locais possuem limite de capacidade e portanto o sistema no deve permitir que esta capacidade seja excedida; No cadastro do palestrante ele podem informar um resumo da palestra e tambm os recursos necessrios para sua apresentao dentro de uma programao; Uma mesma programao pode apresentar mais de um palestrante; Alguns relatrios importantes para este sistema:

Certificado ou declarao de participao contemplando: as programaes, horas, palestrante, dados pessoais do participante; Lista de inscries: pagas, no pagas, cortesia, inscritos presentes; Lista de inscritos presentes; Crachs para o controle de acesso; Quadro com a programao completa do evento; Cidade com mais inscritos e cidade com menos inscritos; Evento, nmero de inscritos. Este relatrio pode ser dividido em inscritos pagantes, no pagantes, presentes e no presentes.

17. AGNCIA DE TURISMO: Uma empresa de turismo necessita de uma aplicao que favorea o cadastramento de seus clientes e o controle dos servios utilizados por eles. Esta empresa trabalha com diversos fornecedores que oferecem produtos distintos, como hotis, passagens areas, aluguel de veculo, etc.. Um mesmo fornecedor pode oferecer mais de um tipo de servio. Quando um cliente compra um servio desta empresa, emitida uma nota de pedido relacionando todos os produtos que envolveram a transao. Cada servio possui uma modalidade de pagamento, e na negociao, o atendente da agncia de turismo poder ou no unificar a modalidade de pagamento

112

para todo o pedido. A aplicao encomendada ir controlar as ordens de pagamento para os fornecedores destes servios, assim como, a cobrana aos clientes. Esta ultima feita via banco para o qual a agncia de turismo dever repassar as informaes do cliente, da data de vencimento e do valor a ser cobrado. Este banco ir retornar a agncia a informao dos pagamentos efetuados, quando, ento, ser dado baixa no arquivo de contas-a-receber. 18. IMOBILIRIA: Uma imobiliria com especialidade em aluguis deseja desenvolver uma aplicao para controle do recebimento e repasse dos aluguis a seus clientes. Esta empresa cadastra todos os seus clientes e os inquilinos destes. Ela necessita guardar informaes dos imveis sob sua responsabilidade e dos contratos de aluguel por ela efetuados. Para facilidade de controle nos pagamentos dos aluguis, estes sero feitos via sistema de cobrana bancria. O banco credenciado, aps a cobrana, ir depositar automaticamente na conta da imobiliria o valor de 5% relativo comisso de seus servios e o restante, na conta do proprietrio do imvel, em conta/banco/agncia indicada por ele. O sistema mensalmente repassar ao banco de cobrana informaes para tal. Os contratos podem ser cancelados a qualquer instante, dentro da legislao vigente. Quinzenalmente o sistema dever emitir uma relao dos inquilinos em atraso. 19. EMPRESA: As seguintes caractersticas so representadas na base de dados. A empresa organizada em departamentos, cada qual tendo um nome, um nmero de identificao e um empregado responsvel (gerente) pelo mesmo. Guarda-se como informao a data a partir da qual o empregado assumiu a gerncia do departamento. Cada departamento pode estar presente em diversas localidades do pas. Um departamento controla um certo nmero de projetos, cada qual tendo um nome, um nmero de identificao e uma localidade nica. Os departamentos tm vrios empregados, para os quais guarda-se os respectivos nomes, nmero de matrcula na empresa, endereo residencial, sexo, data de nascimento e salrio. Todo empregado tem um empregado que seu superior hierrquico (supervisor direto) dentro do departamento, informao que tambm deve ser mantida no banco de dados. Um empregado alocado a um nico departamento mas pode estar alocado a mais de um projeto, estes no necessariamente controlados pelo mesmo departamento. Controla-se o total de horas semanais em que um empregado trabalha em cada projeto. Para fim de controle de seguro de sade de cada empregado, deve-se manter informaes dos nomes, sexo, data de nascimento e grau de parentesco de seus dependentes. 20. REVENDA DE AUTOMVEIS: Na relao AUTOMOVEIS cada automvel identificado por um cdigo nacional, de acordo com o nome do fabricante e modelo do carro. Os preos de tabela so determinados tambm pelo ano do carro. Apenas revendedoras autorizadas cadastradas na relao REVENDEDORAS podem vender os carros no mercado. Estas podem estar em diversas cidades e estados do pas e seu CGC identifica revendedoras. Consta tambm o nome da revendedora e a identidade de seu proprietrio. Os consumidores tm identidade nica em territrio nacional e so cadastrados na relao CONSUMIDORES contendo tambm nome e sobrenome. Cada negcio efetuado registrado na tabela NEGOCIOS com detalhamento de data e preo pago, alm da

113

identidade do comprador, a identificao da Revenda (ou CGC da revendedora) e do cdigo e ano do automvel. Supe- e que um mesmo consumidor no compra um automvel de caractersticas idnticas em uma mesma revendedora em datas diferentes. Por fim, a relao GARAGEM determina quais automveis as revendedoras tm a inteno (se de fabricante exclusivo, se apenas carro do ano etc.) de negociar e qual seu potencial de vendas a cada momento, isto , quantidade de carros na garagem que podem ser negociados.

21. LOCADORA DE CARROS: Uma locadora aluga carros aos clientes previamente cadastrados. Caso o cliente no esteja cadastrado, esta atividade realizada. Caso um carro, disponvel, seja escolhido pelo cliente este alugado, sendo registrada a data inicial junto ao aluguel. Para que o cliente possa alugar um carro, este no pode estar com dvida pendente. Os carros so descritos pela placa, ano, modelo, descrio, km, preo por km, situao(disponvel, etc), taxa diria, observaes (informaes gerais) e sua imagem. Os clientes so cadastrados pelo seu cpf, nome, endereo, telefone e dvida(reservado para registrar pagamentos pendentes). Quando o cliente devolve o carro, a situao do carro mudada para disponvel, o km atualizado com o km atual do carro e um recibo emitido, baseado nos KMs rodados e nos dias em que ficou com o carro. Ainda na atividade de devoluo, caso o cliente no possa pagar, a dvida do aluguel registrada junto ao cliente. O Cliente pode a qualquer momento pagar sua dvida e o gerente pode solicitar relatrios sobre as informaes da locadora. Principais requisitos operacionais que devem ser atendidos pelo modelo conceitual:

Controlar o aluguel e devoluo dos carros; Controlar o pagamento de aluguel dos carros; Manter cadastros de clientes e carros; Emitir relatrios e permitir consultas; e Controlar a dvida dos clientes.

22. ADMINISTRAO DE CIRURGIAS: Para este problema foi definido um conjunto de informaes obtidas em uma reunio para definir o que o sistema deve controlar e realizar na viso dos usurios administradores. Em um hospital existem diversas salas em seu centro cirrgico. As salas se cirurgia possuem recursos para grupos de especialidades mdicas, sendo apropriadas para cirurgias de uma especialidade. Existem salas que se prestam somente a cirurgias de uma nica especialidade, pois esto dotadas de equipamentos apropriados a essa especialidade mdica. Os mdicos que realizam cirurgias no hospital em seus pacientes agendam as cirurgias conforme a disponibilidade das salas, informando datas, hora inicial e hora final prevista, junto operadora do sistema. Os horrios para controle das salas so modulados de 30 em 30 minutos, de forma a manter-se uma quebra equilibrada da distribuio de horrios. Quando uma cirurgia encerrada, informado ao controle do Centro Cirrgico para a preparao e higienizao para a prxima ocupao. Uma sala de cirurgia no pode ser utilizada simultaneamente por mais de uma cirurgia, pois somente existe um leito cirrgico em cada uma. Um mdico no pode ter cirurgias coincidentes

114

em data e horrio, mesmo que em salas diferentes. Uma cirurgia somente deve ser realizada em uma sala apropriada para a sua especialidade. Admitem-se urgncias, porm devem ser destacadas para utilizarem salas que no as especficas da especialidade. Urgncia considerada uma qualificao da cirurgia, mas no tem restrio de especialidade, podendo utilizar qualquer uma das salas. Toda cirurgia tem somente um mdico responsvel, que devemos registrar para o controle do sistema. Os medicamentos, materiais e remdios consumidos pela cirurgia devem ser computados para cobrana posterior. O paciente identificado pelo hospital, inclusive com o seu leito de internao e datas. No existe no sistema nenhum controle pr-cirrgico. O sistema deve controlar cirurgias marcadas, assim como as j realizadas. Para o Centro Cirrgico especialidade um dado do tipo: Cardiorrespiratria, Nefrologia, Ginecologia e Obstetrcia, Transplantes, Gastroenterologia, Oftalmologia, Traumatologia, Cirurgia Plstica, Oncologia, etc. Os mdicos so todos registrados como habilitados no hospital, suas especialidades tambm controladas, podendo realizar cirurgias em somente uma especialidade. So considerados materiais gastos em uma cirurgia as agulhas de sutura, algodes, sangue, gaze. Como medicamentos temos produtos como anestsicos em geral , antisspticos, soro, etc., e remdios diversos com aplicao intravenosa. 23. CONTROLE DE CINEMAS: Um cinema chamado CINELEGAL pretende se informatizar. Como requisitos foram elencados os seguintes:

O cinema possui vrias salas de cinema, as quais exibem filmes em horrios diversos; O cinema tem interesse em saber quais filmes esto atualmente em cartaz, em que salas e em que horrios; Cada sala possui um nome (nico) e capacidade (nmero de lugares); Os filmes so caracterizados por seu nome em portugus, nome na lngua original (se estrangeiro), diretor, ano de lanamento, tipo, sinopse e imagens de divulgao. importante saber se o filme legendado ou dublado; No existem dois filmes com o mesmo nome (em portugus) e ano de lanamento. Eventualmente, podem existir para o filme premiaes ou indicaes para premiao (e.g. Palma de Ouro em 1987, Oscar de melhor atriz em 89, indicado para melhor filme estrangeiro em 1996), e esta informao usada para divulgao dos filmes; Uma exibio de filme ocorre em uma dada sala e horrio. Um mesmo filme pode ser exibido na mesma sala, em vrios horrios. Para filmes muito procurados, o cinema pode ter exibio simultneas em vrias salas (em horrios simultneos ou no). Filmes diferentes podem passar na mesma sala, desde que obviamente no no mesmo horrio. O cinema s trabalha com horrios fixos de filmes, os quais atualmente so: 16:00, 17:00, 18:00, 19:30, 20:00, 22:00, 24:00. A cada um destes horrios est vinculado um conjunto de funcionrios responsveis pelo bom andamento das atividades do cinema naquele horrio, e que desempenham uma funo (ex: caixa, balas, lanterninha, bilheteiro); Cada funcionrio caracterizado pelo nmero da carteira da trabalho (nico), nome, data de admisso e salrio. Para maior satisfao dos funcionrios, existe um rodzio das funes conforme o horrio (ex: um mesmo funcionrio pode ser caixa no horrio das

115

16:00, e baleiro no horrio das 21:00). Todo horrio tem pelo menos trs funcionrios alocados. 24. OFICINA MECNICA: Em uma oficina mecnica chamada VRUM especializada em veculos, existe a necessidade de se implementar um banco de dados(sistema) para organizar os veculos deixados na oficina para que seja feito o oramento de servio e a futura execuo. O dono da oficina gostaria que existisse um cadastro dos clientes da oficina e um cadastro de todos os veculos deixados na oficina pelos clientes. Alm disto, ele gostaria de armazenar os oramentos de cada veculo. Seguindo as orientaes do dono da oficina, podemos definir alguns requisitos a serem atendidos: a) O cadastro do cliente deve conter o CPF, o nome, endereo e o telefone de cada cliente; b) O oramento de cada veculo composto por um nmero que o identifica unicamente, a data do oramento e deve pertencer a um e apenas um veculo. Cada oramento composto por 1 ou mais servios. Alm disto, um servio pode estar presente em mais de um oramento; c) O oramento entregue para o cliente contm tambm o valor de cada servio e o valor total do oramento. O valor de cada servio, calculado consultando-se uma tabela de referncia de mo-de-obra. O valor de cada pea necessria execuo do servio tambm computado; d) Aprovado o oramento, cada veculo designado a uma equipe de mecnicos que identifica os servios a serem executados e preenche uma ordem de servio (OS) e prev uma data de entrega; e) Os veculos possuem cdigo, placa, ano de fabricao, descrio, marca e modelo; f) Cada mecnico possui cdigo, nome, endereo e especialidade; dos trabalhos. Uma OS pode ser composta de vrios itens (servios) e um mesmo servio pode constar em vrias ordens de servio. Uma OS pode envolver vrios tipos de peas e um mesmo tipo de pea pode ser necessria em vrias ordens de servio. h) Os clientes trazem seus veculos oficina mecnica para serem consertados ou para passarem por revises peridicas. As revises peridicas tambm podem gerar um oramento e uma ordem de servio para execuo dos reparos; i) Pode existir ordens de servio que no foram originadas a partir de oramentos prvios. g) Cada OS possui um nmero, uma data de emisso, um valor e uma data para concluso

25. EMPRESA DE MANUFATURA: Uma empresa de manufatura funciona em um esquema de projetos, nos quais so alocados seus empregados, com um certo percentual de dedicao. Administrativamente os empregados esto lotados em departamentos e podem gerenciar um ou mais projetos que por sua vez so gerenciados por somente um empregado. As peas utilizadas nos projetos so armazenadas nos vrios armazns da empresa. necessrio controlar-se, tambm , a composio das peas. A empresa mantm um controle do fornecimento efetivo de

116

peas feito aos projetos pelos fornecedores, e um controle do fornecimento potencial das peas de cada um dos fornecedores. 26. CONTROLE DE ESTGIOS: A universidade UNIMUNDO pretende informatizar o processo de gesto das disciplinas de estgio ou trabalho de concluso de curso(adotaremos o termo estgio). Esta etapa essencial para a formao acadmica e possui diretrizes bem definidas para sua execuo. Com base nestas diretrizes pode-se definir os seguintes requisitos a serem atendidos pelo sistema:

Controlar o cadastro dos alunos orientandos, professores orientadores e dos coordenadores de estgio; Permitir o controle em fases do processo de estgio, ou seja, algumas disciplinas de estgio podem ser divididas em 1, 2 ou mais fases ou etapas, somente ao final destas fases a disciplina poder ser considerada como completada; Permitir o cadastro dos trabalhos: ttulo, tema, curso, etc.; Armazenar e controlar os mais diversos tipos de documentos pertinentes ao estgio. Estes documentos contemplam verses eletrnicas de: artigos, trabalhos, outros formulrios; Permitir o registro informatizado do andamento do trabalho, encontros realizados, etc; Permitir a configurao de calendrio para as atividades do estgio durante as fases previstas; Permitir a configurao das bancas de estgio; Permitir e controlar o lanamento de notas de avaliao dos trabalhos; O coordenador de estgio pode atravs do sistema controlar a publicao do mesmo para posterior consulta de forma on-line por parte dos demais alunos e professores.

27. PIZZA ON-LINE: Pretende-se desenvolver um sistema de informao para apoiar a gesto de encomendas de um grupo de pizzarias PizzaInHouse. O sistema ir prestar servios de atendimento, acompanhamento de clientes e de encomendas. Para alm das pizzarias (lojas), o grupo tem uma Central de Atendimento aos Clientes (CAC) que disponibiliza um servio de encomendas de produtos por telefone e pela Internet. Para o efeito, se o cliente contatar por telefone deve indicar a sua localizao. Caso se encontre na rea de cobertura do grupo, a CAC efetua a encomenda e envia-o para a pizzaria mais prxima da zona onde o cliente se encontra. Se o pedido for feito pela Internet, o utilizador tem que efetuar primeiro um pr-registo (indicando login, password, morada, telefone e email). Em seguida recebe via email um cdigo de acesso para poder ativar os servios disponibilizados pela pizzaria. Aps a ativao dos servios, o cdigo de acesso no ser jamais utilizado. Assim que o cliente receber o cdigo de acesso, pode efetuar encomendas atravs do seu login e password. A pizzaria tem um catlogo que consiste numa listagem de produtos por cdigo, nome, descrio e preo. Os produtos disponveis so bebidas, saladas, entradas, pizzas, massas e sobremesas. Uma pizza constituda por uma pizza base (Margarita) qual se podem adicionar at 10 ingredientes. Existem tambm pizzas com os ingredientes pr-definidos (Vegetariana, Tropical). A pizzaria composta pelas seguintes reas:

117

restaurante, balco, entregas, cozinha e armazm. no restaurante que esto as mesas. As mesas (numeradas) podem ser reservadas pelos clientes, sendo a reserva referenciada pelo nmero da mesa e pela data. Um cliente pode reservar vrias mesas. Na pizzaria, o pedido de uma encomenda pode ser feito ao balco ou mesa, havendo em qualquer dos casos um terminal do sistema com um ecr tctil disponibilizado para introduzir o pedido. Os funcionrios distribuem-se pelas seguintes categorias: gestor de loja, empregado de mesa, gestor de encomendas, estafeta. Todos tm um nmero e podem trabalhar em vrias lojas, sendo importante saber a data e a durao do contrato em cada loja. Cada loja caracterizada por cdigo, nome, zona de influencia. O procedimento para encomendar idntico, quer o pedido seja feito por telefone, pela Internet ou localmente. Quando uma pizzaria recebe uma encomenda, adiciona-a fila de espera de encomendas a satisfazer. Assim que a encomenda comea a ser confeccionada, o seu estado passa a processo. Logo que todos itens da encomenda estejam prontos para serem entregues, esta entregue ao cliente pelo empregado de mesa ou pelo estafeta, dependendo do tipo da encomenda. O estado da encomenda passa ento a caminho. Assim que o cliente recebe a encomenda, gerada uma fatura que caracterizada por um nmero, data, itens de produto com valor unitrio e valor total. Nessa altura, o estado da encomenda passa a entregue e toda a informao referente encomenda e respectiva fatura arquivada. 28. CLINICA MDICA: A clinica mdica BEM-ESTAR resolveu informatizar suas atividades. Nesta clnica trabalham mdicos e existem pacientes internados. Cada mdico identificado pelo seu CRM, possui um nome e recebe um salrio na clnica. Um mdico tem formao em diversas especialidades (ortopedia, traumatologia, etc), mas s exerce uma delas na clnica. Para todo paciente internado na clnica so cadastrados alguns dados pessoais: nome, RG, CPF, endereo, telefone(s) para contato e data do nascimento. Um paciente tem sempre um determinado mdico como responsvel (com um horrio de visita dirio predeterminado), porm vrios outros mdicos podem participar do seu tratamento. Pacientes esto sempre internados em quartos individuais, que so identificados por um nmero e ficam em um andar da clnica. Alm disso, os mdicos podem atender diversos convnios. Para cada convnio, necessrio identificar os mdicos associados, alm de algumas informaes, como o seu cdigo, razo social, telefone para atendimento e endereo. Na recepo da clnica, so registradas as consultas. Cada consulta est associada a um paciente e a um nico mdico, alm de um cdigo, descrio, data e hora, medicao e o diagnstico. Em relao aos pacientes, necessrio registrar seu cdigo, nome, endereo, telefone e data de nascimento. O sistema ainda deve controlar: a alterao da senha de acesso; o agendamento de consultas; o cadastro dos medicamentos; o cadastro de exames complementares; a gerao de receitas; a gerao de laudos; a consulta do histrico dos pacientes (pronturio); a atualizao do pronturio; o cadastro de profissionais mdicos; o cadastro de planos de sade conveniados; o cadastro dos quartos; em quais quartos o paciente est internado; e o cadastro dos funcionrios e cargos da clnica. 29. ORGANIZAO DE CONFERNCIAS: A universidade UNIFANTASIA deseja informatizar a parte

118

de conferncias organizadas pela mesma. Esta universidade costuma organizar variados tipos de conferncias e com variadas dimenses. O workflow(fluxo de dados) de uma conferncia deste nvel prev as etapas de: submisso, avaliao, publicao e posterior apresentao em evento, dos artigos. Para atender estas necessidades o sistema dever apresentar os seguintes requisitos:

Permitir o cadastro de autores(codigo, nome, instituio de ensino, endereo completo, email, login, senha, foto do autor); Permitir que os autores possam submeter de forma on-line seus artigos; O artigo dever contemplar(autor, ttulo, rea de conhecimento, resumo); Aps a submisso o artigo ser revisado e avaliado. O autor poder acompanhar o processo de avaliao de seus artigos tambm de forma on-line; Para a avaliao/reviso dos artigos so definidos profissionais especializados da prpria universidade. So necessrios serem definidos 3 avaliadores/revisores; A avaliao do artigo no resulta em uma nota, mas sim em um parecer descritivo dos revisores; Emitir avisos nas diversas situaes do processo de gesto: revisores que se esto atrasados no processo de reviso, autores que ainda no submeteram a verso final do seu artigo, etc.; Permitir a criao de sesses, permitir a organizao de horrios para apresentao dos artigos, e definir os artigos que iro compor cada uma delas; Permitir a todos os utilizadores do sistema um simples e eficaz processo de inscrio na conferncia, prevendo os tipos de participantes: aluno, professor, funcionrios e comunidade em geral. Deve ser cadastrada tambm uma foto do participante para posterior emisso no crach de acesso a conferncia; No esquecer que uma inscrio paga e que o inscrito pode escolher qual apresentao de artigo deseja ver; importante controlar a situao do artigo, isso porque o mesmo pode ser aprovado ou no para a conferncia.

30. CLINICA VETERINRIA/PET-SHOP: A clnica veterinria CAOSARADO deseja informatizar suas atividades. Consultados, o dono da clnica e alguns funcionrios, descreveram suas atividades na clnica assim: a) Um cliente primeiramente se dirige Clnica onde marca uma consulta com a secretria, fornecendo suas informaes pessoais e do animal que deseja tratar. Se o cliente ou o animal ainda no estiverem cadastrados no sistema ou possuam algum dado que precise ser atualizado, a secretria dever atualizar seus cadastros; b) Em cada sesso de tratamento (uma sesso equivale a uma consulta), o cliente deve informar os sintomas aparentes do animal e estes devem ser registrados. Um tratamento pode ser encerrado em apenas uma consulta, quando se tratar de algo simples ou pode se arrastar por muitas sesses dependendo do diagnstico do mdico-veterinrio; c) Durante uma sesso o veterinrio pode marcar exames para o animal, a serem trazidos na

119

sesso seguinte. O pedido dos exames, bem como seus resultados devem ser registrados no histrico de tratamentos do animal; d) Aps cada sesso, o histrico da consulta deve ser atualizado e gera-se uma conta a receber a ser paga pelo cliente. A manuteno das consultas responsabilidade exclusiva do mdicoveterinrio que a realizou; e) responsabilidade da secretria manter atualizados os cadastros de clientes, animais, mdicos e espcies; f) importante controlar os dados dos funcionrios da clinica, como: mdicos, secretria e demais funcionrios; g) O sistema deve controlar de forma geral: o cadastro de animais, clientes, raas, espcies, vacinas e vermfugos, registros de consulta(agendamento), vacinao e vermifugao(combate verminose).

31. VIDEO LOCADORA: A locadora VIDEOPLAY trabalha com os seguintes mdias: fitas de video, DVDs e discos blu-ray. O cliente da video locadora previamente cadastrado pelo nome, endereo, telefone por um nmero de celular e CPF. Cada cliente pode locar uma ou mais fitas. Cada locao registrar a data, a hora, o histrico sobre a situao das fitas locadas e o valor da locao. As fitas disponveis na locadora so identificadas por um cdigo da fita (que obrigatoriamente atribudo de forma manual assim que a fita comprada, um nmero de cinco dgitos sequncial nico), o ttulo (que pode se repetir. Ex: Titanic (antigo) Titanic (moderno)), a sinopse, a durao e a quantidade. Uma fita pode ser locada por um ou mais clientes. Uma fita pode ser uma e somente uma comdia. As comdias so registradas pela sua trilha sonora, diretor e por ser ou no um filme premiado; Uma comdia deve ser uma e somente uma fita na locadora. Cadastramos tambm o distribuidor de fitas para a locadora. Cada distribuidor pode ter uma ou mais fitas associadas ao seu registro. O distribuidor registrado pela razo social (pode ser repetida para distribuidores de cidades diferentes), endereo, telefone, um nome de contato e CNPJ. Uma fita deve ter um e somente um distribuidor registrado no sistema. 32. HELP DESK: Uma empresa de suporte a microinformtica pretende informatizar o processo de atendimento a seus clientes. Para isso a mesma elencou as principais necessidades que precisariam ser atendidas e controladas por este sistema de informao. Dentre estas necessidades esto: a) O sistema deve permitir o controle e cadastro de usurios, atendentes e tcnicos; b) O sistema dever possibilitar cadastro de chamados pelo atendente e enviar um e-mail atribuindo o prximo chamado da fila ao tcnico que estiver disponvel; c) Quando o atendente der por concludo o chamado o sistema deve enviar um e-mail com um link para que o usurio confirme a resoluo do chamado. E um e-mail para o atendente que abriu o chamado; d) O sistema deve fechar o chamado e arquiv-lo quando o tcnico encerre a ltima tarefa do chamado;

120

e) Os usurios e tcnicos devem poder consultar o status dos seus chamados; f) Chamados relacionados a hardware tambm sero controlados, para isso o sistema dever permitir ao tcnico manter um cadastro de hardware (computadores, monitores, scanners e impressoras etc). Alm disso o cadastro de peas disponveis no estoque tambm dever ser mantido; g) O sistema dever vincular as peas de estoque ao equipamento onde foram instaladas; h) Com as solues propostas para os chamados ser construda uma base de conhecimento, ou seja, dever ser permitida a consulta a esta base caso j existam problemas similares; i) O sistema deve possibilitar ao atendente classificar o chamado como problema de hardware, software, equipamento terceirizado, servidores, entre outros. E conforme o tipo criar uma tarefa para o tcnico responsvel pelo tipo de atendimento; j) O sistema dever permitir a emisso de uma srie de relatrios tanto para o uso operacional quanto para os gestores do processo. 33. CAMPEONATO DE FUTEBOL: No campeonato de futebol da 1 diviso participam equipes, compostas por jogadores. Cada equipe tem um treinador e um dirigente. As equipes jogam entre si, em jogos sobre os quais se mantm informaes sobre a data, resultado final e numero de espectadores. Os jogos so arbitrados por um rbitro principal e dois auxiliares. Os jogos ocorrem nos estdios das diversas equipes, identificados por nome, nmero de lugares e localizao. Todas a pessoas acima mencionadas so identificadas pelo nome e data de nascimento. Alm disto, para cada jogador mantida a data fim de contrato com a equipe para o mesmo quem joga. Para cada dirigente, mantm-se a data final do mandato, e para cada rbitro a data de incio das atividades na 1 diviso. 34. LIVRARIA: Uma livraria mantm o cadastro de livros disponveis para a venda. Para cada livro so armazenados cdigo, nome, lngua e ano em que foi escrito. Para os autores mantido igualmente um cadastro que inclui nome, data de nascimento, pais de nascimento e uma breve nota biogrfica. Cada livro pode ter vrios autores e para um mesmo autor podem existir vrios livros cadastrados. Um autor pode estar includo no cadastro ainda quando no exista um livro seu para venda. As editoras so includas no cadastro a partir do seu nome, endereo, telefone. Uma editora pode estar cadastrada mesmo quando no existam livros editados por ela em venda. Para um mesmo livro podem existir vrias edies realizadas por editoras diferentes ou em anos diferentes . Cada edio tem um cdigo (ISBN) , preo, ano, nmero de pginas e quantidade em estoque. Considere que um livro pode ser cadastrado se existe pelo menos uma edio do mesmo para venda. 35. AGNCIA DE FINANCIAMENTO: Uma agncia de financiamento de projetos de pesquisa deseja criar um sistema de banco de dados para gerenciar seu funcionamento. Para cada projeto so cadastrados: um cdigo interno, ttulo, durao do projeto, instituio onde ser realizado e rea de pesquisa. As reas de pesquisa esto predefinidas para cada uma delas so cadastrados cdigo, nome, descrio e um ndice que indica sua relevncia econmica. Para cada pesquisador solicitante so cadastrados: RG, CPF, nome, sexo, data de nascimento, grau cientifico e instituio

121

onde foi alcanado esse ttulo. Note-se que um mesmo pesquisador pode ter vrios projetos em anlise. Um pesquisador cadastrado no sistema unicamente quando o primeiro dos seus projetos submetido. A agncia recebe os projetos submetidos pelos pesquisadores e associa cada um destes a um assessor que deve aprovar ou no o financiamento. Para estes assessores so cadastrados: RG, CPF, nome, sexo, data de nascimento, grau cientfico, instituio onde trabalha e as reas nas quais tem capacidade de avaliar projetos. Estas reas de pesquisa devem ser definidas dentre a lista de reas predefinidas antes mencionadas. Um assessor pode ser cadastrado mesmo sem ter analisado nenhum projeto. Quando um projeto enviado a um assessor para anlise cadastrada a data deste envio. Posteriormente, quando o assessor retorna sua avaliao so tambm cadastrados a data de resposta e o resultado de aprovao ou no do projeto.

36. ACADEMIA: Uma academia de ginstica deseja manter um controle do seu funcionamento. Os
alunos so organizados em turmas associadas a um tipo especfico de atividade. As informaes sobre uma turma so nmero de alunos, horrio da aula, durao da aula, data inicial, data final e tipo de atividade. Cada turma orientada por um nico instrutor para o qual so cadastrados RG, nome, data de nascimento, titulao e todos os telefones possveis para sua localizao. Um instrutor pode orientar vrias turmas que podem ser de diferentes atividades. Os dados cadastrados dos alunos so: cdigo de matricula , data de matrcula, nome, endereo, telefone, data de nascimento, altura e peso. Um aluno pode estar matriculado em vrias turmas se deseja realizar atividades diferentes e para cada matrcula mantido um registro das ausncias do aluno. Para cada turma existe um aluno monitor que auxilia o instrutor da turma, sendo que um aluno pode ser monitor no mximo em uma turma.

37. AUTO-ESCOLA: Construa o modelo de um sistema que permita controlar e automatizar os


processos de sua auto-escola desde cadastros e matrculas a acompanhamentos de aulas prticas e tericas permitindo acompanhar alunos, instrutores e veculos. O sistema dever emitir relatrios de todas as movimentaes de aulas prticas e tericas por alunos, acompanhamentos dos resultados dos exames junto ao Detran. Tambm dever ser possvel obter relatrios de movimentaes financeiras alm de poder acompanhar custos por veculo ou por aluno, entre outros inmeros relatrios e estatsticas emitidos pelo sistema. O sistema dever ainda controlar os gastos da Auto Escola, o consumo de combustvel, emisso de Certificados, Controle de Contas a Pagar e Receber, Controle de Funcionrios e a Lista de chamada. 38. SALO DE BELEZA: O FashionHair um salo de beleza, cabelereiros e esttica que deseja informatizar suas atividades. Para isso o sistema dever controlar: cadastro de funcionrios, controle das porcentagens dos funcionrios, cadastro de clientes, marcao de horrios (agenda), registro dos servios, comisses recebidas pelos funcionrios e pelo salo, fluxo de caixa, cadastro de produtos, alm de emitir importantes relatrios como: ficha de controle de cliente, listagem por cliente e por funcionario, listagem de entrada e saida no estoque e lista de agendamentos por dia ou

122

semana. 39. EMPRESA DE BUFFET: Elabore um modelo para uma empresa de buffet esperando-se com isso que a empresa tenha um crescimento na produtividade e qualidade de seus servios e produtos, atravs de um atendimento personalizado ao cliente, provocando indiscutivelmente o aumento da lucratividade. O sistema dever contemplar as seguintes funcionalidades:

Cadastro de clientes(Nome, Endereo, Telefone, RG, CPF, E-mail, Local de Trabalho, Setor, Profisso, Cargo, Data de Nascimento);
Cadastro de Funcionrios(Nome, Endereo, Telefone, RG, CPF, E-mail, Local de Trabalho, Setor, Profisso, Cargo, Data de Nascimento, entre outros dados); Cadastro de Fornecedores(Nome, Endereo, Telefone, RG, CPF, E-mail, Local de Trabalho, Setor, Profisso, Cargo, Data de Nascimento, entre outros dados); Cadastro de produtos: Armazena os dados dos Produtos (materiais) que o buffet deseja ter dados em estoque; Cadastro de tipos de festa: nascimento, aniversrio, casamento, formatura, bodas, reencontros familiares e confraternizaes diversas; Registro de vendas: vendas realizadas, oramentos e contratos; Controle dos atendimentos realizados aos clientes; Relatrios como: contratos, oramentos, recibos, etc.

40. ESCOLA DE CURSOS: Desenvolva um sistema para uma escola de cursos que permita os seguintes controles:

Cadastrar alunos, professores, cursos, sries, funcionrios, turmas, horrios, notas;


Controlar os pagamentos e mensalidades dos alunos; Agendamento das atividades dos alunos; Controlar a movimentao da ficha do aluno; Emitir relatrios como: lista de alunos por turma, mensalidades a receber, aniversariantes, dirio de classe do professor, etc.

41. AGNCIA DE EMPREGOS E RECRUTAMENTO: Recrutamento, seleo e fornecimento de mode-obra temporria ou efetiva um servio cuja demanda est em crescimento com a tendncia da terceirizao das funes da rea pessoal nas empresas. E o agenciamento de empregos um desses servios que, em razo, da nova realidade empresarial, tende a se ampliar. Motivado por esta nova perspectiva de negcios desenvolva um modelo para uma agncia de empregos e recrutamento que permita:

Cadastro de Candidatos;
Cadastro de Currculos para Candidatos; Cadastro de Anunciantes; Cadastro de Anncios;

123

Categorias de Vagas; Controle de estgios; Acompanhamento de entrevistas e testes realizados; Emisso de diversos relatrios.

42. EMPRESA DE FORMATURAS: A empresa FORME-SE BEM quer um sistema para informatizar suas atividades na rea de gesto de formaturas. Com o sistema a empresa poder proporcionar maior organizao, aumentando o controle de contas a pagar e a receber e gerenciando todo o movimento do seu negcio. Com o sistema, ser possvel registrar o cadastro de clientes com os contratos e servios/oferecidos e at os relatrios financeiros ligados a eles. Algumas funcionalidades do sistema:

Cadastro de clientes;
Contratos; Servios; Fornecedores; Movimento caixa e bancrio; Contas pagar e a receber; Agendas de compromissos; Categorias e kits de produtos.

43. PADARIA: Desenvolva o modelo de um sistema para uma padaria. O sistema dever registrar a
compra, baixar todos os estoques, registrar quem fez as vendas e o caixa, quanto foi fornecido para pagar, suportar o fornecimento de tickets (alimentao, restaurante, etc.), fornecer cupom para simples conferencia, e fornecer o vale-compras. Alm disso o sistema ainda dever ter como funcionalidades o controle de clientes, fornecedores, produtos, produo, produo programada, receitas, funcionrios, promoes, vendas, compras, notas fiscais, caixa, contas a receber, contas a pagar, ponto de venda, consultas e estatsticas variadas, mltiplas formas de pagamento nas vendas (incluindo fiado), status de clientes. 44. PAPELARIA: Modele um sistema para uma papelaria prevendo os seguintes requisitos:

Clientes (com relatrios diversos, impresses da ficha, dados de compras);


Financeiros (conta a pagar, conta a receber controle de cheques, relatrios diversos sobre o financeiro e grfico mensal); Fornecedores (com tipo de sada, mercadorias ou manuteno); Formas de pagamento (formulrio que permite criar a sua prpria forma de fechamento de venda. Ex: a vista, carto, credirio, cheque, etc); Produtos (formulrio completo com diversos relatrios e filtros, controle sobre todo o movimento de estoque. Ex: entrada de mercadoria, estorno, alterao de preos ou quantidade, controle de margem de lucro, margem de compra e fotos em produtos, cadastro com leitor de cdigo de barra);

124

Vendedores (cadastro completo dos vendedores); Transportadora (cadastro completo); Empresa (cadastro de dados da sua empresa, no precisa nos enviar seus dados e pode ser modificada a hora que for preciso sem nosso auxilio); Tipo pagamento (podemos criar nossas prprias formas de recebimento de contas, tornando gil e automtica o parcelamento e gerar contas e carns).

45. AGNCIA DE TELEMENSAGENS: Modele um sistema para uma agncia de telemensagens observando os seguintes requisitos:

Cadastro de CEP da Regio;


Cadastro de clientes e de mensagens; Controlar o pedido do cliente, efetua todo o processamento, desde o envio da mensagem at a cobrana do servio e o respectivo pagamento; Diversos relatrios: telemensagens a enviar, telemensagens a enviadas, servios a entregar, servios entregues, servios a executar, produtos a entregar e entregues, vendas por cliente, vendas por vendedor, comisso por vendedor, vendas por perodo, vendas a receber, estoque, aniversariantes do ms.

46. CORRETORA DE SEGUROS: Modele um sistema para gerenciamento de corretoras de seguros que tenha como foco principal o crescimento das vendas, reduo dos custos e organizao da empresa. Alm do controle de aplices de todos os ramos de seguros e controle de qualquer tipo de comisso. A corretora poder atuar em qualquer especialidade como: vida, sade, automvel, incndio, previdncia privada, DPVAT, garantia, imobilirio, frotas. Alguns requisitos que o sistema modelado dever contemplar:

Cadastro de Clientes (prospeces, segurados e ex-segurados);


Controle de relacionamento com clientes campanhas, eventos e aes (CRM); Montagem de questionrios de pesquisa de satisfao de clientes; Estatsticas de controle de resposta dos questionrios de pesquisas; Mala-direta (cartas e etiquetas) para clientes; Controle de acompanhamento de vendas (oramentos); Controle de propostas enviadas e pendentes de emisso; Controle de Aplices, Endossos e Faturas mensais emitidas; Controle dos dados dos itens e objetivos segurados; Dados de seguros - Auto, Patrimoniais, Vida e Sade; Controle de questionrio de perfil ou declarao de sade; Cadastramento e impresso de texto de clusulas e condies gerais; Controle de movimentao de segurados de vida e sade; Controle de aplices a renovar, renovadas e no renovadas; Controle de prmios e comisses pendentes; Controle de administrao de sinistros;

125

Controle de recebimento e remesse de documentos para regulao de sinistro; Cadastramento de prestadores de servios de atendimento de sinistro; Controle de redes Credenciadas de seguros de sade.

47. AEROCLUBE: Num aeroclube, esto inscritos pilotos, instrutores e alunos de pilotagem. Todos scios (inscritos) so identificados pelo nmero de matrcula, e caracterizados por nome, endereo e idade. Os pilotos possuem um nmero de brev (nico). Os instrutores so pilotos com formao adicional de instrutor, e deve ser registrado o nome do curso, a data de obteno do diploma, bem como a instituio. Para os alunos de pilotagem, guarda-se o registros de todas suas sadas para contabilizao de horas para obteno do brev. Para cada sada registra-se a data, instrutor, hora de sada de de chegada, bem como o parecer do instrutor sobre o voo. A escola s ministra cursos bsicos, e portanto no h professores que so alunos de cursos avanados. Para emisso do brev, necessrio que o aluno comprove ter o nmero de horas mnimo de voo, bem como apresente os pareceres dos instrutores sobre as habilidades desenvolvidas a cada aula prtica. 48. COMPANHIA DE TRANSPORTE: Uma companhia de transporte responsvel por reservas de uma cadeia de varejo e entrega de remessas de armazns para depsitos da empresas. Armazns e depsitos so identificados por nmeros e atualmente existem 6 localizaes de armazns e 45 de depsitos.

Um caminho pode carregar vrias remessas durante uma viagem e levar remessas para mltiplos depsitos (sai de um armazm origem e tem vrios depsitos destino);
Uma viagem identificada por um nmero. Ser necessrio manter informaes sobre peso e volume da viagem; Cada remessa identificada pelo nmero da remessa e inclui dado sobre volume, peso e destino da remessa; O caminho identificado pelo cdigo da licena e tem diferentes capacidades para volume e peso que eles podem carregar.

A companhia de caminhes atualmente tem 150 caminhes e um caminho faz de 3 a 4 viagens por semana. 49. COMPANHIA AREA: Considere a descrio de um sistema de venda de passagens areas dada abaixo e desenhe um diagrama ER.

Para um passageiro so registrados o nmero do documento de identidade e o seu nome;


Um avio caracterizado por um nmero de srie nico e por um modelo; Um assento uma posio nica em um avio, identificada por um cdigo. Um assento da classe econmica ou executiva; Um avio possui vrios assentos e pode ser usado em vrios voos; Um voo identificado por um nmero e utiliza: um avio, um piloto, um aeroporto de partida e outro de chegada; Um passageiro pode reservar um assento em um voo.

126

50. FARMCIA: As farmcias A BARATEIRA compem uma rede de atendimento ao cliente que prima pela qualidade e bom servio. A rede disponibiliza farmacuticos 24hs e tambm atendimento por telefone, com tele-entrega de medicamentos para toda a cidade. A rede A BARATEIRA de farmcias tem um sistema que automatiza de maneira precria suas tarefas dirias. Foram feitas consultorias com especialistas do mercado que sugeriram a implantao de um sistema informatizado que venha atender eficazmente toda rede. A seguir so descritos problemas e deficincias que devem ser resolvidos pelo novo sistema: 1. Melhorar a forma com que os produtos so registrados. Com o advento dos genricos, a base de dados deve primar pelo controle do princpio ativo do remdio e depois as demais caractersticas. O registro do nome fantasia do remdio tambm vlido. H clientes que preferem a marca e no o remdio genrico; 2. Essa melhora no registro das drogas tambm visa influenciar o controle do estoque. O controle deixar de ser por remdio e passar a ser por princpio ativo. Quando um tipo de princpio ativo (nome genrico) atingir o estoque mnimo deve ser disparado o procedimento de compras. Na chegada de uma Nota Fiscal (NF) de compra os produtos adquiridos so somados a quantidade em estoque. Se tiver um novo item este deve ser cadastrado antes de ser contabilizado no estoque; 3. importante a cotao em pelo menos trs indstrias farmacuticas que produzem a mesma droga antes de adquiri-la; 4. Antes da compra as cotaes devem ser avaliadas. A compra feita com a indstria farmacutica que tiver menor preo; 5. A BARATEIRA tambm necessita de um controle mais rgido dos medicamentos que entram em promoo. Hoje no h este controle, fazendo com que o mesmo medicamento entre em promoo vrias vezes seguidas, gerando prejuzos a empresa. Um medicamento no pode entrar em promoo se houver um outro medicamento com o mesmo princpio ativo j em promoo. Ainda, o valor de venda da promoo no pode ser menor que o valor de compra do remdio acrescido de 10%; 6. Outro ponto que precisa ser melhorado est relacionado a gerncia das vendas. Para o controle ideal das vendas o futuro sistema dever disponibilizar os seguintes itens: a) Registro da venda e retirada da nota fiscal para o cliente; b) Clculo da comisso do balconista que atendeu o cliente. Cada balconista recebe da farmcia um salrio mais comisso. Se for venda por telefone ganha a comisso quem atendeu o telefone; c) Troca de produtos. A BARATEIRA no permite a devoluo de dinheiro. O cliente ter a opo de pegar um produto no mesmo valor ou levar para casa um vale no valor da devoluo; d) Visualizao do estoque de cada filial da rede, permitindo que a partir de um princpio ativo seja visualizado todos os remdios genricos correspondentes; e) Controle do histrico de vendas de cada vendedor;

127

f)

O estoque de remdios controlados (tarja preta) s podem ser atualizado pelos farmacuticos. Caso outro funcionrio tente acessar esse estoque, necessrio guardar essa informao para posterior consulta pelo administrador do sistema;

g) Os clientes da farmcia devem poder consultar o preo dos remdios diretamente via os terminais disponveis em algumas filiais da farmcia.

128

10.LISTA DE EXERCCIOS TEORIA RELACIONAL


1. Explique o que significa ser um Administrador de Banco de Dados e quais so as responsabilidades inerentes ao cargo. 2. Apresente a descrio das siglas SGBD e DBMS. Conceitue o termo SGBD. 3. Relacione as principais caractersticas de um SGBD. 4. O que significa construir um modelo conceitual no desenvolvimento de um sistema de informao? 5. O que so metadados? 6. Cite alguns problemas tpicos apresentados por ambientes que utilizavam arquivos para o armazenamento das informaes. 7. Cite pelo menos trs SGBDs de mercado(utilizados comercialmente) e pesquise algumas informaes relacionadas aos mesmos para que seja possvel caracterizar suas principais funcionalidades. 8. Explique o que significa redundncia de dados. 9. Cite e associe os principais componentes de um SGBD. 10. Explique a(s) diferena(s) entre atributos, domnio de um atributo e valor de atributo? 11. Apresente os trs modelos lgicos de SGBD baseados em registros. 12. Explique o Gerenciamento de Transaes disponibilizado pelos SGBDs. 13. Relacione, explique e associe as etapas necessrias para a concepo de um sistema de informao. 14. Explique quais mtodos ou tcnicas para levantamento de requisitos podem ser utilizadas e como as mesmas podem ser aplicadas junto aos usurios. 15. Relacione e explique os conceitos pertinentes a modelagem EA Entidade Associao. 16. O que significa um atributo ser Identificador ou Chave Candidata? 17. Cite alguns exemplos de atributos descritores que podem ser encontrados em entidades. 18. O que significa definir a Cardinalidade em um modelo conceitual? 19. Apresente as notaes diagramticas possveis para a definio da Cardinalidade em um modelo conceitual. 20. Relacione os conceitos com suas respectivas definies: (a) Codpessoa (b) Cardinalidade (c) Pessoa (d) Valores inteiros positivos mltiplos de 5 (e) Documentao (f) System Architect (g) Rede ( ) Tcnica de levantamento de requisitos. ( ) Modelo lgico de dados baseado em registros. ( ) Ferramenta Case de Modelagem. ( ) Pode ser considerado um atributo identificador ou chave candidata. ( ) Representa uma Entidade no modelo Entidade Associao. ( ) Domnio de um atributo. ( ) Nmero de ocorrncias de uma entidade em relao a outra.

129

21. Defina os termos cardinalidade mxima e cardinalidade mnima. 22. O que SQL? Qual sua vantagem? 23. Explique os conceitos do Modelo Relacional apresentados a seguir: a) Chave primria b) NULL c) Domnio d) Chave Estrangeira 24. Relacione e explique pelo menos dois tipos de integridade impostas e caractersticas do Modelo Relacional. 25. Pesquise um banco de dados relacional na internet e explique como o mesmo permite escrever procedimentos armazenados. 26. Em relao ao conceito de Chave Primria, assinale a afirmao correta. a) ( ) Pode conter atributos com valor nulo. b) ( ) formada por, no mximo, um nico atributo. c) ( ) formada por, no mnimo, dois atributos. d) ( ) Identifica unicamente uma tupla. e) ( ) Identifica duas ou mais tuplas. 27. O Diagrama Entidade-Relacionamento, proposto por P. Chen, uma ferramenta tipicamente utilizada para a elaborao do seguinte modelo de dados: a) ( ) fsico b) ( ) interno c) ( ) externo d) ( ) conceitual e) ( ) hierrquico 28. Atomicidade uma propriedade de transao de um SGBD relacional que garante que: a) ( ) uma transao seja realizada de forma independente de outras transaes; b) ( ) uma operao de uma transao seja efetuada de forma independente de outras operaes; c) ( ) nenhuma operao de uma transao seja subdividida em tarefas menores pelo SGBD; d) ( ) todos os atributos manipulados por uma transao sejam atmicos; e) ( ) todas as operaes em um banco de dados, em uma transao, sejam executadas ou nenhuma delas o seja. 29. Os comandos SQL podem ser agrupados em categorias e ou componentes, de acordo com seu objetivo e funcionalidade. As principais categorias so: DML Linguagem de Manipulao de Dados DDL Linguagem de Definio de Dados DCL Linguagem de Controle de Dados Observe os seguintes comandos SQL: CREATE TABLE DELETE SELECT INSERT ALTER TABLE

130

UPDATE As categorias s quais pertencem os comandos SQL anteriores so, respectivamente: a) ( ) DDL, DDL, DML, DML, DML, DDL b) ( ) DDL, DML, DML, DML, DDL, DML c) ( ) DML, DCL, DCL, DML, DDL, DML d) ( ) DML, DCL, DML, DDL, DML, DML e) ( ) DML, DDL, DCL, DML, DCL, DCL 30. As linguagens usadas para definir e manipular bancos de dados, respectivamente, so: a) ( b) ( c) ( d) ( e) ( ) CDL e CML ) DDL e DML ) CDL e DML ) CML e SGML ) DDL e SGML

131

11.LISTA DE EXERCCIOS LGEBRA RELACIONAL


Considerando as tabelas: USUARIO, LIVRO, EMPRESTIMO e RESERVA. Apresentar somente a expresso em lgebra.

31. Cdigo e ttulo dos livros da biblioteca 3?


32. Ttulo de todos os livros? 33. Todos os emprstimos do dia 13/01/2008? 34. Ttulo dos livros pertencentes a biblioteca 1 ou biblioteca 2? 35. O nome de todos os usurios que j emprestaram livros no dia 13/01/2008? 36. Nome dos usurios com cdigo superior a 4? 37. Endereo do usurio 1? 38. Todos os emprstimos do usurio 6? 39. Todas as reservas do usurio 2? 40. Todas as reservas e emprstimos do usurio 4? 41. O ttulo de todos os livros que o usurio 1 emprestou? 42. O ttulo de todos os livros que o usurio 2 reservou? 43. O nome de todos os usurios que emprestaram o livro 1002? 44. O nome de todos os usurios que reservaram o livro 1002? 45. Todos os emprstimos da biblioteca 1? 46. Todos os usurios que realizaram reservas no ms 2 de 2006? 47. Todos os usurios que realizaram emprstimos no ms 1 de 2006? 48. Todos os usurios que j emprestaram livros com o ttulo 'Livro 01' ou 'Livro 02'? 49. Todos os livros que j sofreram emprstimo? 50. Todos os usurios que j realizaram emprstimo? Dado o esquema relacional a seguir, especificar as operaes em lgebra relacional para obter os resultados das interrogaes apresentadas: FORNECEDOR(CODFOR, NOMFOR, CODCON, NOMCID) PRODUTO(CODPRO, NOMPRO, DESCOR) PEDIDO(CODFOR, CODPRO, QTDPED) 51. Denominao dos fornecedores que fornecem o produto 'P2'? 52. Denominao dos fornecedores que fornecem pelo menos um produto cuja cor 'VERMELHO'? 53. Denominao dos produtos da cor 'AZUL' que tiveram pedidos com quantidade superior a 200? 54. Denominao dos fornecedores que fornecem todos os produtos?

132

Dadas as relaes: S A 3 5 1 7 9 2 1 1 2 B g a d d e e a f b C e j n e b c j e a D 3 7 21 2 34 7 2 34 22 R A 3 4 1 2 3 2 1 1 2

B a b b f j a a f b

C d f j c d c j e a

D 3 7 21 2 34 7 2 34 22

Resolva(demonstre):

B,C(R) 56. A(B = 'e'(S)) 57. A,D{[C = 'c'(R)]


55. 58.

R.A = S.A [

B = 'e'(S)]}

A{[A,B(B = 'b'(S))] U [A,B(B = 'b'(R))]}

Dado o esquema relacional a seguir, especificar as operaes em lgebra relacional para obter os resultados das interrogaes apresentadas: NATURALIDADE(CODNAT, DESNAT) ALUNO(CODALU, NOMALU, ENDALU, CODNAT) DISCIPLINA(CODDIS, NOMDIS, CHADIS) HISTORICO(CODALU, CODDIS, VLRNOT) 59. Quais alunos(NOME) tiveram nota superior a 7 nas disciplinas de 'MATEMTICA' e 'FSICA'? 60. Quais alunos(NOME) cursaram todas as disciplinas com carga horria maior que 60 horas, com nota superior a 6? 61. Quais disciplinas(NOME), todos os alunos que j a cursaram obtiveram nota superior a 5? 62. Quais alunos(NOME) naturais de 'JOINVILLE' obtiveram nota superior a 8 em disciplinas com carga horria superior a 45 horas?

133

Dado o esquema relacional a seguir, especificar as operaes em lgebra relacional para obter os resultados das interrogaes apresentadas: FORNECEDOR(CODFOR, NOMFOR, NOMCID) PECA(CODPEC, NOMPEC, PESO, COR) EMBARQUE(CODFOR, CODPEC, QTDEMB) 63. Buscar os dados dos fornecedores de Porto Alegre. 64. Buscar os dados das peas que pesam mais do que 5 gramas E no so pretas. 65. Buscar o nome das peas que no so pretas. 66. Buscar o nome das peas fornecidas pela Ceval S.A. 67. Buscar o nome de todas as peas leves (pesam menos que 10 gramas). 68. Buscar as quantidades das peas fornecidas pelo fornecedor de nome Ceval S.A. 69. Buscar o nome dos fornecedores de Canoas que fornecem pregos. 70. Buscar o nome dos fornecedores que fornecem todas as peas. 71. Buscar o nome das peas que so fornecidas por fornecedores de Porto Alegre em quantidade superior a 300. 72. Buscar o nome e a cidade dos fornecedores que realizam embarques em quantidades maiores que 500. 73. Buscar o nome dos fornecedores que no forneam nenhuma pea. Dado o esquema relacional a seguir, especificar as operaes em lgebra relacional para obter os resultados das interrogaes apresentadas: DEPARTAMENTO(CODDEP, NOMDEP, CODGER) EMPREGADO(CODEMP, NOMEMP, SALEMP, ENDEMP, DATNAS, CODDEP, CODSUP) PROJETO(CODPRJ, NOMPRJ, CODDEP, LOCAL) TRABALHA(CODEMP, CODPRJ, NUMHOR) DEPENDENTE(NOMDEP, SEXDEP, DATNAS, PARDEP, CODEMP) DEPARTAMENTO_LOCAL(CODDEP, LOCAL) 74. Quais os nomes dos gerentes de cada departamento. 75. Listar nome e endereo dos empregados que trabalham para o projeto Banco de Dados. 76. Para os projetos localizados em Belo Horizonte, listar seus nmeros, o nmero do departamento que os controlam, e o nome, endereo e data de nascimento de seu gerente. 77. Quais identidades e nomes dos empregados que no tm dependentes? 78. Quais os nomes dos empregados e os nmeros de departamento dos quais eles so gerentes, se o forem? 79. Listar os nomes dos empregados que trabalham em todos os projetos que o Manuel trabalha. 80. Quais empregados esto trabalhando menos de 40 horas por semana em projetos da empresa?

134

Dado o esquema relacional a seguir, especificar as operaes em lgebra relacional para obter os resultados das interrogaes apresentadas: AUTOMOVEL(CODAUT, NOMFAB, DESMOD, ANOAUT, PAIS, PRECO) REVENDORA(CGCREV, NOMREV, NOMPRO, NOMCID, UF) CONSUMIDOR(NUMIDE, NOMCON) NEGOCIO(NUMIDE, CGCREV, CODAUT, DATNEG, PRECO) GARAGEM(CGCREV, CODAUT, QTDAUT) 81. Listar os nomes dos fabricantes dos automveis na base de dados e os respectivos pases de fabricao originalmente. 82. Listar os estados onde se vende o modelo Xantia, do fabricante Citren. 83. Qual(is) o(s) carro(s) codigo e ano - de preo de tabela mais caro? 84. Listar o nome das revendedoras e de seus respectivos proprietrios que venderam em 2002 carros franceses ou italianos, fabricados em 2001, por valor at 30% acima do preo de tabela. 85. Quais os nomes das revendedoras que vendem todos os modelos do fabricante Peugeot? 86. Quais revendedoras no vendem automveis de origem francesa? 87. Quais os nomes dos proprietrios de revendedoras que j compraram algum carro nas revendedoras de outros proprietrios? 88. Quais os consumidores (identidade e nome) que compram apenas carros italianos?

135

12.LISTA DE EXERCCIOS - SQL


Considerando as tabelas: EMPREGADO e DEPARTAMENTO.

89. Selecione todos os registros da tabela EMPREGADO com todas as colunas.


90. Selecione somente os nomes diferentes da tabela EMPREGADO. 91. Quem trabalha no departamento 20? 92. Onde est localizado o departamento 20 (utilize a tabela DEPARTAMENTO)? 93. Selecione todos os empregados com nome e data de admisso da tabela EMPREGADO e troque o nome da coluna data de admisso para admisso. 94. Quais empregados ganham mais de 2000? 95. Selecione o Nome, Salrio e Nome do Departamento de cada empregado (utilize a tabela EMPREGADO E DEPARTAMENTO). 96. Quais empregados tem cargo diferente de ATENDENTE e VENDEDOR? 97. Selecione todos os empregados (Cdigo e Nome) em ordem decrescente de cdigo de empregado. 98. Existe algum empregado que tem o salrio menor que a comisso? 99. Selecione o nome, salrio e comisso da tabela EMPREGADO, selecionando apenas os empregados que tenham comisso. 100.Selecione o nome, salrio, comisso e salrio + comisso da tabela EMPREGADO. 101.Selecione o nome, salrio, comisso e salrio + comisso da tabela EMPREGADO selecionando apenas os empregados que tenham comisso. 102.Selecione o nome, salrio, comisso e salrio + comisso da tabela EMPREGADO selecionando apenas os empregados que tenham comisso e que a soma da comisso com o salrio seja maior que 1500. 103.Selecione o nome, salrio mensal e salrio hora (salrio/220) da tabela EMPREGADO. 104.Agora trunque o valor da diviso acima para quatro casas decimais. 105.Agora arredonde o valor da diviso da questo 15 para 4 casas decimais. 106.Selecione o maior salrio da tabela EMPREGADO. 107.Conte quantos empregados esto lotados no departamento VENDAS. 108.Qual a media salarial dos empregados? 109.Quais os empregados ganham entre 500 e 1500? 110.Quanto gasta a empresa em salrios e comisso para todos os empregados? 111.Quanto gasta a empresa em salrios por departamento? Considerando as tabelas: USUARIO, LIVRO, EMPRESTIMO e RESERVA. 112.Selecione todos os registros da tabela EMPRESTIMO, com todas as colunas. 113.Selecione o cdigo e nome, quantidade de emprstimos do usurio 2. 114.Selecione a data(exiba a coluna com o nome Data de Emprstimo) do ltimo emprstimo realizado. 115.Selecione o cdigo e quantidade de emprstimos de cada biblioteca.

136

116.Selecione o cdigo e quantidade de reservas de cada biblioteca. 117.Conte a quantidade de emprstimos de 2008. 118.Selecione o cdigo, nome e quantidade de reservas de todos os usurios. 119.Selecione somente os usurios com duas ou mais reservas. 120.Qual o livro com o maior nmero de emprstimos? 121.Qual o usurio com o maior nmero de reservas? 122.Quais livros da biblioteca 1 j foram emprestados pelo usurio 3? 123.Em que cidade se encontra o livro 3? 124.Selecione o cdigo e nome do usurio que possui emprstimos em 2006 ou reservas em 2006, na biblioteca 1. 125.Selecione o cdigo e nome do usurio que possui emprstimos em 2006 e no possui reservas em 2006, na biblioteca 1. 126.Selecione os dados de emprstimo de cada usurio. Liste todas as colunas da tabela emprstimo e todas as colunas da tabela usurio. Coloque em ordem de nome de usurio e data de emprstimo. 127.Conte o nmero de emprstimos dirios e calcule a mdia diria de emprstimos realizados na biblioteca 2. Considerando o esquema relacional a seguir, resolva com SQL: FORNECEDOR(CODFOR, NOMFOR, NOMCID) PECA(CODPEC, NOMPEC, PESO, COR) EMBARQUE(CODFOR, CODPEC, QTDEMB) 128.Conte o nmero de emprstimos dirios e calcule a mdia diria de emprstimos realizados na biblioteca 2. 129.Buscar os dados dos fornecedores de Porto Alegre. 130.Buscar os dados das peas que pesam mais do que 5 gramas E no so pretas. 131.Buscar o nome das peas que no so pretas. 132.Buscar o nome das peas fornecidas pela Ceval S.A. 133.Buscar o nome de todas as peas leves (pesam menos que 10 gramas). 134.Buscar as quantidades das peas fornecidas pelo fornecedor de nome Ceval S.A. 135.Buscar o nome dos fornecedores de Canoas que fornecem pregos. 136.Buscar o nome dos fornecedores que fornecem todas as peas. 137.Buscar o nome das peas que so fornecidas por fornecedores de Porto Alegre em quantidade superior a 300. 138.Buscar o nome e a cidade dos fornecedores que realizam embarques em quantidades maiores que 500. 139.Buscar o nome dos fornecedores que no forneam nenhuma pea.

137

Considerando o esquema relacional a seguir, resolva com SQL: ARTIGO(AUTOR, TITULO, UNIORI, ORGFIN, NOTA) EVENTO(EVENTO, LOCAL, MES, NUMPAR, UNIORG) ACEITO(EVENTO, AUTOR, TITULO) 140.Selecionar o ttulo e o autor de todos os trabalhos da UNOESC aceitos para apresentao em algum evento. 141.Selecionar, por ordem decrescente, a mdia das notas dos trabalhos de cada universidade e o nome da universidade. 142.Selecionar o ttulo e o autor dos trabalhos que foram aceitos para eventos organizados pela prpria universidade do autor do artigo. 143.Selecionar a programao de trabalhos que sero apresentados no ms de Outubro, ordenado por ttulo de trabalho. 144.Selecionar o nome dos autores com mais de um trabalho aceito para apresentao. 145.Selecionar o nome das universidades que tenham artigos com notas maiores do que todas as notas obtidas por artigos da UNOESC. 146.Selecionar o nome dos autores e o nmero de trabalhos de sua autoria que foram aceitos para apresentao em qualquer evento. 147.Selecionar os nomes dos eventos, os ttulos dos trabalhos aceitos para estes eventos, os rgos financiadores dos trabalhos e os locais onde os eventos ocorrero. 148.Selecionar os eventos onde foram aceitos trabalhos da UNOESC, mas no foram Aceitos trabalhos da UFRGS. 149.Selecionar o nmero total de participantes nos eventos realizados em Curitiba. 150.Selecionar o nmero de Artigos que contm os termos banco de dados em seu ttulo. 151.Selecionar os autores que tiveram trabalhos aceitos em TODOS os eventos cadastrados, ou seja, se existem trs eventos cadastrados, os autores selecionados tm que ter tido trabalhos aceitos nos trs eventos. 152.Selecionar os eventos que aceitaram artigos de TODAS as Universidades, ou seja, se existem dez Universidades que publicaram artigos, os eventos selecionados tm que ter artigos dessas dez Universidades. Considerando as tabelas: EMPREGADO e DEPARTAMENTO. 153. Inclua na tabela Empregado o seguinte registro: a. Numero: 1234 b. Nome: Z Carioca c. Cargo: aprendiz d. Data de Inicio: Hoje e. Salrio: 200 f. Departamento: 30 154.Atualize o cargo do Z Carioca para Programador. 155.Atualize em todos os registros a data de inicio para 15/10/1999. 156.Exclua os dados do Z Carioca da Tabela. 157.Atualize todos os salrios com base no clculo: salrio atual * 1.4 + 200.

138

158.Limpe o campo comisso para todos os empregados. 159.Atualize o campo comisso de todos os empregados com base na frmula: salrio atual / 2 + 100. 160.Atualize o valor da comisso de todos os empregados com base na frmula: comisso = 45.6% do salrio atual. 161.Para todos os cdigos de empregados pares atualize o salrio para duas vezes este mesmo valor. 162.Para os casos onde a comisso do empregado for menor que 40% do valor do salrio, mudar seu cargo para VENDEDOR. Considerando as tabelas: USUARIO, LIVRO, EMPRESTIMO E RESERVA. 163.Exclua da tabela de emprstimo os emprstimos cuja data de emprstimo igual a menor data de emprstimo de 2006. 164.Exclua da tabela de reserva as reservas cuja data de reserva igual a menor data de reserva de 2005. 165.Exclua os dados do usurio 3. 166.Inclua um novo usurio na tabela de usurio chamado testecom o cdigo 4. 167.Inclua um emprstimo na tabela de emprstimos para o usurio 4. 168.Passe todos os emprstimos de 2005 para o usurio 4. 169.Somente os livros da biblioteca 2 devem sofrer uma modificao em seu ttulo, os mesmos devem ter o ttulo no formato = ttulo atual || codigo da biblioteca a qual pertence. 170.Inclua uma linha de reserva para o usurio 4 para o livro 3. Considerando as tabelas: EMPREGADO, DEPARTAMENTO, USUARIO, LIVRO, EMPRESTIMO E RESERVA. 171.Relacione somente o nome de todos os usurios em ordem decrescente. 172.Exiba a lista de todos os emprstimos pares. 173.Exiba a lista de todas as reservas mltiplas de 2. 174.Quais so os usurios cujo nome comea com a letra A? 175.Exiba somente os primeiros 5 caracteres do ttulo de cada um dos livros. 176.Relacione todos os empregados cujo salrio supera 1630.45. 177.Em que data a empresa contratou o primeiro empregado? 178.Exiba o cdigo e nome de todos os empregados gerentes. 179.Quais so os livros que esto na lista (1,5,7)? 180.Quais so os livros cujo tamanho do ttulo supera 20 caracteres? 181.Quais so os emprstimos realizados anteriores a 2006? 182.Relacione todos os departamentos cujo departamento mltiplo de 3. 183.Mostre quais so os usurios que esto na lista (2,3,4). 184.Qual o endereo de usurio cadastrado mais longo? 185.Qual o nome de empregado mais longo? 186.Qual o nome de empregado mais curto? 187.Relacione o cdigo, nome e a cidade do departamento dos empregados admitidos em 1984.

139

188.Relacione o nome e o salrio de todos os empregados gerentes que no recebem comisso. 189.Qual gerente recebe mais de 2000 de comisso? 190.Qual biblioteca possui o livro com o ttulo MEU JACAR? 191.Exiba a lista de livros com a quantidade de emprstimos. Ordene a lista do livro com mais emprstimos at o livro com menos emprstimos. Exiba a lista de usurios com a quantidade de emprstimos. Ordene a lista do usurio com mais emprstimos at o usurio com menos emprstimos. 192.Mostre o nome e o salrio de cada empregado com o salrio reajustado em 23.45%. 193.Exiba o nome dos usurios que no possuem emprstimos. 194.Qual o maior cep de usurio cadastrado? 195.Qual o menor cep de usurio cadastrado? 196.Qual o resultado da soma de todos os salrios dos empregados dividido por 20? 197.Qual a hora atual do sistema? 198.Qual a data atual do sistema? 199.Qual a data/hora atual do sistema? 200.Qual o valor na tabela ASCII do caractere W? 201.Exiba o nome de todos os ttulos dos livros em letras minsculas. 202.Liste todos os livros cujo ttulo termina com a letra O. 203.Conte o nmero de usurios pares. 204.Conte o numero de livros que falam sobre BANCO DE DADOS. 205.Conte o nmero de livros da biblioteca 1. 206.Exiba o nome de todos os empregados do departamento CONTBIL e do departamento OPERACIONAL. 207.Qual a data da ltima reserva realizada em 2005? 208.Selecione o menor salrio da tabela empregado. 209.Exiba o maior e o menor salrio da tabela empregado. 210.Exiba somente o nome e o cep dos usurios. 211.Qual a mdia dos ceps dos usurios. 212.Exiba somente os usurios com cep maior que 60000000. 213.Exiba o ttulo do livro, o usurio e a data de emprstimo de cada livro. Ordene a lista final por livro, data de emprstimo. 214.Exiba o ttulo do livro, o usurio e a data de emprstimo de cada livro. Ordene a lista final por livro, data de emprstimo. 215.Exiba o ttulo do livro, o usurio e a data de reserva de cada livro. Ordene a lista final por livro, data de reserva. 216.Exclua os emprstimos do usurio 1. 217.Exclua as reservas do usurio 2. 218.Atualize a data de emprstimo para 12/01/2007 de todos os emprstimos do usurio 3. 219.Todos os empregados atendentes devem ser promovidos a vendedores. 220.Todos os gerentes devem receber uma comisso equivalente a 2/3 do seu salrio.

140

221.Todos os empregados devem passar a ter o sobrenome DA SILVA. 222.Exclua o empregado 1201. 223.Exclua o departamento 40. 224.Exclua o usurio 1. 225.Exclua todos os livros que possuem no ttulo a palavra PROGRAMAO. 226.Insira um novo livro com o ttulo XML. 227.Insira um novo empregado com todos os dados iguais aos do empregado 4356. 228.Exclua o usurio 4356. 229.Remova o salrio de todos os empregados. 230.Atualize os salrios dos empregados com base no ano de admisso: antes de 80 3000, entre 80 e 90 2500, entre 91 e 2000 2000, depois de 2000 1000. 231.Selecione todos os livros da biblioteca 2 cujo cdigo do livro seja maior que 7. 232.Selecione todos os livros cujo ttulo do livro possui os caracteres BANCO. 233.Selecione todos os usurios cujos cdigos estejam na lista (2,5,6,7,8). 234.Selecione todos os usurios que j emprestaram livros da biblioteca 1. 235.Selecione todos os empregados do departamento CONTBIL ou do departamento de PESQUISA. 236.Selecione os departamentos e conte os empregados por departamento. Conte somente os empregados que possuem comisso. 237.Selecione todos os livros que pertencem a biblioteca 2. 238.Selecione todos os usurios que realizaram emprstimos no ms de ABRIL. 239.Selecione todos os usurios que realizaram reservas entre o dia 05 e 14 do ms. 240.Selecione todos os usurios que possuem emprstimos e reservas. 241. Selecione os usurios que no possuem nenhum emprstimo no ms de JUNHO. 242. Selecione o usurio e a quantidade de emprstimos que o mesmo possui por biblioteca. Considerando o esquema relacional a seguir, resolva com SQL: MEDICO(CODMED, NOMMED, DATNAS, ESPECIALIDADE) PACIENTE(CODPAC, NOMPAC, DATBAS, PROBLEMA) CONSULTA(CODMED, CODPAC, DATCON) 243. Crie as tabelas do esquema relacional. 244. O nome dos mdicos com idade > 22 ou com especialidade diferente de traumatologia. 245. O nome e o problema dos pacientes com menos de 24 anos. 246. As consultas para o dia 26/09/96 aps as 15h. 247. Buscar todas as especialidades dos mdicos. 248. Buscar todas as datas de consultas com horrio aps as 10h. 249. Buscar todas as idades dos mdicos. 250. Buscar o nome de todos os pacientes que comeam com a letra C. 251. Buscar dados dos mdicos que no tm especialidade. 252. Buscar o nome dos mdicos com consultas marcadas para horrios mais tarde que todas as consultas da mdica Maria. 253. Buscar os dados de todas as consultas do paciente Carlos, ordenadas de forma decrescente pela

141

hora da consulta. 254. Buscar todas as datas de consultas e o total de consultas para esta data. 255. Buscar somente as datas e o total de consultas para horrios aps as 14 horas 256. Buscar somente as datas e o total de consultas para as datas onde haja mais de uma consulta marcada. 257. Buscar, para a tabela de mdicos, todas as idades e o total de mdicos com a mesma idade. 258. Buscar o nome dos mdicos com mais de uma consulta marcada. 259. Mostrar todos os dados da tabela de consultas. 260. Mostrar os dados dos mdicos classificados por ordem de cdigo. 261. Obter os nomes e cdigos de todos os mdicos cirurgies. 262. Fornecer os nomes e cdigos de todos os mdicos e seus respectivos dias de consulta. 263. Fornecer os nomes dos mdicos que possuem alguma consulta marcada com o paciente 4. 264. Mostrar os nomes dos mdicos que no tm consulta marcada com a paciente 4. 265. Mostrar os nomes dos mdicos que no tem consulta marcada com a paciente Maria. 266. Mostrar o cdigo dos pacientes que tem consulta marcada para o dia 23/09/96 ou com mdicos pediatras. 267. Mostrar os nomes dos mdicos que no fornecem consultas para os pacientes de obstetras. Considerando o esquema relacional a seguir, resolva com SQL: EMPREGADO(CODEMP, SALEMP, FUNEMP, CODDEP) DEPARTAMENTO (CODDEP, NOMDEP, CIDDEP) JOGA (CODEMP, CODTIM, POSICAO) TIME(CODTIM, NOMTIM, ENDTIM) 268. Mostrar os cdigos dos empregados que ganham acima da mdia dos salrios. 269. Mostrar os departamentos que no tem empregados. 270. Mostrar os departamentos com mdia salarial inferior a 500. 271. Mostrar os departamentos que possuem mais de 10 programadores. 272. Mostrar o nome do time do empregado de maior salrio. 273. Mostrar o maior salrio dos empregados que jogam na ponta direita. 274. Mostrar a posio e o cdigo dos empregados de maior salrio em cada departamento.

142

13.REFERNCIAS
CHEN, Peter. Modelagem de dados: a abordagem Entidade-Relacionamento para Projeto Lgico. So Paulo: Makron Books, 1990. 80p. CHEN, Peter. The Entity-Relationship Model-Toward a Unified View of Data. ACM Transactions on Database Systems, Vol. 1, No. 1. March 1976, Pages 9-36. CODD, E.F. Does Your DBMS Run by the Rules. Computerworld, Out 21, 1985a. CODD, E.F. Is Your DBMS Really Relational?. Computerworld, Out 14, 1985b. CODD, E.F. Relational Database: A Practical Foundation for Produtivity. CACM 25, N 2, Fev.1982. CONNOLLY, Thomas; BEGG, Carolyn. Database Systems: a practical approach to design, implementation, and management. 4 ed. England: Pearson Education Limited, 2005. COUGO, Paulo. Modelagem conceitual e projeto de bancos de dados. 3. ed. Rio de Janeiro: Campus, 1997. 284 p. ISBN 8535201580 DATE, C. J.. Introduo a sistemas de bancos de dados. Traduo da 8.ed. americana, 2. tiragem. Rio de Janeiro: Campus, 2004. 674p. ISBN 8535212736 DOUGLAS, Korry; DOUGLAS, Susan. PostgreSQL: the comprehensive guide to building, programming, and administering PostgreSQL database. 2. ed. USA: Developer's Library, 2006. 1006 p. ISBN 0672327562. ELMASRI, Ramez; NAVATHE, Shamkant B.. Sistemas de banco de dados. 4.ed. So Paulo: Addison Wesley Longman, 2006. 724 p. ISBN 8588639173 GANE, Chris. Desenvolvimento rpido de sistemas. Rio de Janeiro: LTC, 1988. [xi], 170 p. : (Cincia da computao) ISBN 8521606125 GARCIA-MOLINA, Hector; ULLMAN, Jeffrey D.; WIDOM, Jennifer. Implementao de sistemas de bancos de dados. Rio de Janeiro: Campus, 2001. 690p. ISBN 853520749X GETTING Joins. 2007. Disponvel em: <http://www.khankennels.com/blog/index.php/archives/2007/04/20/getting-joins>. Acesso em: 20 jan. 2008. GILLENSON, Mark L.. Fundamentos de sistemas de gerncia de banco de dados. Rio de Janeiro: LTC, 2006. 304p. ISBN 8521614977 GONZAGA, Jorge Luiz. Dominando o PostgreSQL. Rio de Janeiro: Cincia Moderna, 2007. 228 p. ISBN 9788573935592. HARRINGTON, Jan L.. Projeto de banco de dados relacionais: teoria e prtica. Rio de Janeiro: Campus, 2002. 360p. ISBN 8535211128 HEUSER, Carlos Alberto. Projeto de banco de dados. 5. ed. Porto Alegre: Sagra Luzzatto, 2004. 236 p. (Livros Didticos ;v.4) ISBN 8524105909

143

KROENKE, David. Banco de dados: fundamentos, projeto e implementao. 6. ed. Rio de Janeiro: LTC, 1998. 382 p. MACHADO, Felipe Nery Rodrigues. Banco de dados: projeto e implementao. So Paulo: rica, 2004. 398p. ISBN 8536500190 MANZANO, Jos Augusto N. G. PostgreSQL 8.3.0: interativo : guia de orientao e desenvolvimento para windows. 1. ed. So Paulo: rica, 2008. 240 p. : ISBN 9788536501987 MAUSS, Jason. Database Naming Conventions Version 1.1. 2004. Disponvel em: <http://weblogs.asp.net/jamauss/pages/DatabaseNamingConventions.aspx>. Acesso em: 30 jul. 2009. ORACLE Naming Conventions. 2009. Disponvel em: <http://ss64.com/ora/syntax-naming.html>. Acesso em: 30 jul. 2009. PLEW, Ronald R.; STEPHENS, Ryan K.. Aprenda em 24 horas SQL, segunda edio. 2. ed. Rio de Janeiro: Campus, 2000. 394 p. ISBN 8535206647 POMPILHO, S.. Anlise essencial: guia prtico de anlise de sistemas. Rio de Janeiro: Cincia Moderna, 2002. 269p. ISBN 8573932023 RAMALHO, Jos Antonio Alves. SQL: a linguagem do banco de dados. So Paulo: Berkeley, 1999. 627p. ISBN 8572515011 SHASHA, Dennis. Database tuning: principles, experiments, and troubleshooting techniques. 5. ed. San Francisco: Elsevier, 2007. 414 p. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S.. Sistema de banco de dados. 3. ed., rev. So Paulo: Makron Books, 2007. 778 p. ISBN 8534610738 TOFFLER, Alvin; TOFFLER, Heidi. Criando uma nova civilizao: a poltica da terceira onda. Rio de Janeiro: Record, 1994. 142 p. ISBN 850104458X WATT, Justin. Essential Database Naming Conventions (and Style). 2004. Disponvel em: <http://justinsomnia.org/writings/naming_conventions.html>. Acesso em: 20 jan. 2008. YOURDON, Edward. Anlise estruturada moderna. Rio de Janeiro: Campus, 1990. 836p. : (Yourdon Press) ISBN 8570016158

144

ANEXOS

145

ANEXO 01
CONVENO PARA NOMEAO DE OBJETOS DE UMA BASE DE DADOS
1. Quanto ao Estilo a) Use caracteres minsculos i. Elimine problemas de erros com caracteres, principalmente em sistemas case sensitive; ii. aumenta velocidade na digitao e a corretude dos termos; iii. diferencie nomes de tabelas e colunas das palavras SQL(escritas em maisculo). b) Separe palavras usando o caractere underline(_), nunca use espaos i. promova a legibilidade(ex.: nome_pessoa vs. Nomepessoa); ii. evite o uso de caracteres especiais isolando nomes(ex.: [nome_pessoa]); iii. oferea uma certa independncia de plataforma. c) Evite usar nmeros 2. Nomes de tabelas a) Escolha nomes curtos, sem ambiguidade, usando no mais que uma ou duas palavras i. Facilita a distino entre as tabelas; tabela. b) Atribua nomes no singular, nunca no plural i. Promove consistncia na nomeao de campos chave primria; ii. Facilita a organizao alfabtica das tabelas; iii. Melhora a gramtica SQL(Ex.: SELECT pessoa.nome_pessoa). c) Evite abreviaes, concatenaes ou acrnimos i. Promove a auto-documentao; ii. Facilita a leitura e o entendimento tanto do leitor como do desenvolvedor. d) Identifique tabelas relacionadas com o nome da tabela a qual esta se relaciona: i. Facilita o agrupamento das tabelas(ex.: pessoa_endereco); ii. Previne a duplicidade de nomes entre tabelas relacionadas. e) Para tabelas relacionadas a mais de uma tabela, utilize como nome a concatenao de todas as tabelas as quais esta se relaciona i. Facilita o relacionamento das tabelas; ii. Expressa que a tabela composta. ii. Facilita a nomeao de colunas(nomes nicos) utilizando abreviaes do nome da

146

3. Colunas/Atributos/Campos a) A chave primria pode ser nomeada concatenando-se o nome da tabela e a abreviao pk ou id i. Facilita a deduo do nome da chave primria; ii. Torna consistentes o nome da chave primria em relao a chave estrangeira; iii. Previne a necessidade do uso de nomes prprios gerados pelo SGBD. b) Coloque como prefixo para cada nome de coluna o nome da tabela(ex. pessoa_nome) i. Evita que nomes de colunas sejam confundidos com palavras reservadas; ii. Facilita a definio de nomes nicos de coluna; iii. Torna os nomes de coluna consistentes para a nomeao de chaves primrias; iv. Diferencia chaves estrangeiras de colunas nativas da prpria tabela; v. Mantm a semntica dos nomes das colunas; vi. Previne que uma coluna receba o mesmo nome de uma tabela; vii. Esta opo pode ser ignorada caso existam mais de 30 tabelas no Banco de Dados, ou caso a tabela possua mais de 30 colunas ou os comandos SQL sejam sempre formados pelo conjunto Nome_Tabela.Nome_Coluna. c) O nome da chave estrangeira deve ser idntico ao nome da chave primria da tabela a qual se refere. Fonte: Adaptado de Watt(2004).

147

ANEXO 02

PADRO PARA DEFINIO DAS TABELAS DO MODELO RELACIONAL(MODELO E-R)


Nome da Tabela Coluna: Tipo(*) (PK) ou (FK)

(*)Como tipos de dados vlidos podem ser utilizados: Alfa(Varchar), Inteiro(Integer), Real(Decimal), Data(Date), Hora(Time), Lgico(Boolean) e Binrio(Blob ou Bytea no Postgres). Notao para os relacionamentos: utilizar notao Engenharia da Informao.

148

Potrebbero piacerti anche