Você está na página 1de 49

Unimar - Universidade de Marlia

F.C.T.

Banco de Dados

Autor: Unimar

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 1

Unimar - Universidade de Marlia

F.C.T.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 2

Unimar - Universidade de Marlia

F.C.T.

Apresentao
Este curso tem como objetivo, oferecer uma noo geral sobre a construo de sistemas de banco de dados. Para isto, necessrio estudar modelos para a construo de projetos lgicos de bancos de dados, modelos para a construo de projetos fsicos de banco de dados, tcnicas de controle de dependncia de dados e mtodos de consultas. Para construo dos modelos lgicos, ser estudado o modelo Entidade Relacionamento, utilizando a abordagem proposta em [ELMAS89] que oferece uma notao rica em recursos, permitindo a modelagem de entidades normais, fracas, atributos simples, compostos, multivalorados, derivados e a modelagens de objetos mais complexos como classes e subclasses (modelo Entidade Relacionamento Extendido). Para construo dos modelos fsicos, ser estudado o modelo Relacional como originalmente proposto por Codd. Para eliminar dependncia de dados, utilizaremos a normalizao, abordando a 1a, a 2a, a 3 Formas Normais, propostas originalmente por Codd.
a

Para a elaborao de consultas, ser estudado a lgebra Relacional, que nada mais do que uma forma cannica para as linguagens de consulta e a linguagem de consultas SQL.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 3

Unimar - Universidade de Marlia

F.C.T.

1. Introduo e Conceitos Gerais


A tecnologia aplicada aos mtodos de armazenamento de informaes vem crescendo e gerando um impacto cada vez maior no uso de computadores, em qualquer rea em que os mesmos podem ser aplicados. Um banco de dados pode ser definido como um conjunto de dados devidamente relacionados. Por dados podemos compreender como fatos conhecidos que podem ser armazenados e que possuem um significado implcito. Porm, o significado do termo banco de dados mais restrito que simplesmente a definio dada acima. Um banco de dados possui as seguintes propriedades: um banco de dados uma coleo lgica coerente de dados com um significado inerente; uma disposio desordenada dos dados no pode ser referenciada como um banco de dados; um banco de dados projetado, construdo e populado com dados para um propsito especfico; um banco de dados possui um conjunto pr definido de usurios e aplicaes; um banco de dados representa algum aspecto do mundo real, o qual chamado de mini-mundo ; qualquer alterao efetuada no mini-mundo automaticamente refletida no banco de dados. Um banco de dados pode ser criado e mantido por um conjunto de aplicaes desenvolvidas especialmente para esta tarefa ou por um Sistema Gerenciador de Banco de Dados (SGBD). Um SGBD permite aos usurios criarem e manipularem bancos de dados de propsito geral. O conjunto formado por um banco de dados mais as aplicaes que manipulam o mesmo chamado de Sistema de Banco de Dados.

1.1. Abordagem Banco de Dados X Abordagem Processamento Tradicional de Arquivos


1.1.1. Auto Informao
Uma caracterstica importante da abordagem Banco de Dados que o SGBD mantm no somente os dados mas tambm a forma como os mesmos so armazenados, contendo uma descrio completa do banco de dados. Estas informaes so armazenadas no catlogo do SGBD, o qual contm informaes como a estrutura de cada arquivo, o tipo e o formato de armazenamento de cada tipo de dado, restries, etc. A informao armazenada no catlogo chamada de Meta Dados. No processamento tradicional de arquivos, o programa que ir manipular os dados deve conter este tipo de informao, ficando limitado a manipular as informaes que o mesmo conhece. Utilizando a abordagem banco de dados, a aplicao pode manipular diversas bases de dados diferentes.

1.1.2. Separao entre Programas e Dados


No processamento tradicional de arquivos, a estrutura dos dados est incorporada ao programa de acesso. Desta forma, qualquer alterao na estrutura de arquivos implica na GEEK BRASIL http://www.geekbrasil.com.br Pgina 4

Unimar - Universidade de Marlia

F.C.T.

alterao no cdigo fonte de todos os programas. J na abordagem banco de dados, a estrutura alterada apenas no catlogo, no alterando os programas.

Programas de Aplicao/Consulta

Sistema de Banco de Dados

Software para processar manipulao

SGBD

Software de Acesso aos Dados

Meta Dados

Dados

Figura 1. Um ambiente de Sistema de Banco de Dados

1.1.3. Abstrao de Dados


O SGBD deve fornecer ao usurio uma representao conceitual dos dados, sem fornecer muitos detalhes de como as informaes so armazenadas. Um modelo de dados uma abstrao de dados que utilizada para fornecer esta representao conceitual utilizando conceitos lgicos como objetos, suas propriedades e seus relacionamentos. A estrutura detalhada e a organizao de cada arquivo so descritas no catlogo.

1.1.4. Mltiplas Vises de Dados


Como um conjunto de informaes pode ser utilizada por um conjunto diferenciado de usurios, importante que estes usurios possam ter vises diferentes da base de dados. Uma viso definida como um subconjunto de uma base de dados, formando deste modo, um conjunto virtual de informaes.

1.2. Usurios
Para um grande banco de dados, existe um grande nmero de pessoas envolvidas, desde o projeto, uso at manuteno.

1.2.1. Administrador de Banco de Dados (DBA)


GEEK BRASIL http://www.geekbrasil.com.br Pgina 5

Unimar - Universidade de Marlia

F.C.T.

Em um ambiente de banco de dados, o recurso primrio o banco de dados por si s e o recurso secundrio o SGBD e os softwares relacionados. A administrao destes recursos cabe ao Administrador de Banco de Dados, o qual responsvel pela autorizao de acesso ao banco de dados e pela coordenao e monitorao de seu uso.

1.2.2. Projetista de Banco de Dados


O Projetista de Banco de Dados responsvel pela identificao dos dados que devem ser armazenados no banco de dados, escolhendo a estrutura correta para representar e armazenar dados. Muitas vezes, os projetistas de banco de dados atuam como staff do DBA, assumindo outras responsabilidades aps a construo do banco de dados. funo do projetista tambm avaliar as necessidades de cada grupo de usurios para definir as vises que sero necessrias, integrando-as, fazendo com que o banco de dados seja capaz de atender a todas as necessidades dos usurios.

1.2.3. Usurios Finais


Existem basicamente trs categorias de usurios finais que so os usurios finais do banco de dados, fazendo consultas, atualizaes e gerando documentos: usurios casuais: acessam o banco de dados casualmente, mas que podem necessitar de diferentes informaes a cada acesso; utilizam sofisticadas linguagens de consulta para especificar suas necessidades; usurios novatos ou paramtricos: utilizam pores pr-definidas do banco de dados, utilizando consultas preestabelecidas que j foram exaustivamente testadas; usurios sofisticados: so usurios que esto familiarizados com o SGBD e realizam consultas complexas.

1.2.4. Analistas de Sistemas e Programadores de Aplicaes


Os analistas determinam os requisitos dos usurios finais e desenvolvem especificaes para transaes que atendam estes requisitos, e os programadores implementam estas especificaes como programas, testando, depurando, documentando e dando manuteno no mesmo. importante que, tanto analistas quanto programadores, estejam a par dos recursos oferecidos pelo SGBD.

1.3. Vantagens e desvantagens do uso de um SGBD


1.3.1. Controle de Redundncia
No processamento tradicional de arquivos, cada grupo de usurios deve manter seu prprio conjunto de arquivos e dados. Desta forma, acaba ocorrendo redundncias que prejudicam o sistema com problemas como: toda vez que for necessrio atualizar um arquivo de um grupo, ento todos os grupos devem ser atualizados para manter a integridade dos dados no ambiente como um todo;

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 6

Unimar - Universidade de Marlia

F.C.T.

a redundncia desnecessria de dados levam ao armazenamento excessivo de informaes, ocupando espao que poderia estar sendo utilizado com outras informaes.

1.3.2. Compartilhamento de Dados


Um SGBD multi-usurio deve permitir que mltiplos usurios acessem o banco de dados ao mesmo tempo. Este fator essencial para que mltiplas aplicaes integradas possam acessar o banco. O SGBD multi-usurio deve manter o controle de concorrncia para assegurar que o resultado de atualizaes sejam corretos. Um banco de dados multi-usurios deve fornecer recursos para a construo de mltiplas vises.

1.3.3. Restrio a Acesso no Autorizado


Um SGBD deve fornece um subsistema de autorizao e segurana, o qual utilizado pelo DBA para criar contas e especificar as restries destas contas; o controle de restries se aplica tanto ao acesso aos dados quanto ao uso de softwares inerentes ao SGBD.

1.3.4. Representao de Relacionamentos Complexos entre Dados


Um banco de dados pode incluir uma variedade de dados que esto interrelacionados de vrias formas. Um SGBD deve fornecer recursos para se representar uma grande variedade de relacionamentos entre os dados, bem como, recuperar e atualizar os dados de maneira prtica e eficiente.

1.3.5. Tolerncia a Falhas


Um SGBD deve fornecer recursos para recuperao de falhas tanto de software quanto de hardware.

1.3.6. Quando no Utilizar um SGBD


Em algumas situaes, o uso de um SGBD pode representar uma carga desnecessria aos custos quando comparado abordagem processamento tradicional de arquivos como por exemplo: alto investimento inicial na compra de software e hardware adicionais; generalidade que um SGBD fornece na definio e processamento de dados; sobrecarga na proviso de controle de segurana, controle de concorrncia, recuperao e integrao de funes. Problemas adicionais podem surgir caso os projetistas de banco de dados ou os administradores de banco de dados no elaborem os projetos corretamente ou se as aplicaes no so implementadas de forma apropriada. Se o DBA no administrar o banco de dados de forma apropriada, tanto a segurana quanto a integridade dos sistemas podem ser comprometidas. A sobrecarga causada pelo uso de um SGBD e a m administrao justificam a utilizao da abordagem processamento tradicional de arquivos em casos como: GEEK BRASIL http://www.geekbrasil.com.br Pgina 7

Unimar - Universidade de Marlia

F.C.T.

o banco de dados e as aplicaes so simples, bem definidas e no se espera mudanas no projeto; a necessidade de processamento em tempo real de certas aplicaes, que so terrivelmente prejudicadas pela sobrecarga causada pelo uso de um SGBD; no haver mltiplo acesso ao banco de dados.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 8

Unimar - Universidade de Marlia

F.C.T.

2. Conceitos e Arquiteturas de um SGBD


2.1. Modelos de Dados
Uma das principais caractersticas da abordagem banco de dados, que a mesma fornece alguns nveis de abstrao de dados omitindo ao usurio final, detalhes de como estes dados so armazenados. Um modelo de dados um conjunto de conceitos que podem ser utilizados para descrever a estrutura lgica e fsica de um banco de dados. Por estrutura podemos compreender o tipo dos dados, os relacionamentos e as restries que podem recair sobre os dados. Os modelos de dados podem ser basicamente de dois tipos: alto nvel: ou modelo de dados conceitual, que fornece uma viso mais prxima do modo como os usurios visualizam os dados realmente; baixo nvel: ou modelo de dados fsico, que fornece uma viso mais detalhada do modo como os dados esto realmente armazenados no computador.

2.2. Esquemas e Instncias


Em qualquer modelo de dados utilizado, importante distinguir a descrio do banco de dados do banco de dados por si prprio. A descrio de um banco de dados chamada de esquema de um banco de dados e especificada durante o projeto do banco de dados. Geralmente, poucas mudanas ocorrem no esquema do banco de dados. Os dados armazenados em um banco de dados em um determinado instante do tempo formam um conjunto chamado de instncia do banco de dados. A instncia altera toda vez que uma alterao no banco de dados feita. O SGBD responsvel por garantir que toda instncia do banco de dados satisfaa ao esquema do banco de dados, respeitando sua estrutura e suas restries. O esquema de um banco de dados tambm pode ser chamado de intenso de um banco de dados e a instncia de extenso de um banco de dados.

2.3. A Arquitetura Trs Esquemas


A principal meta da arquitetura trs esquemas (figura 2) separar as aplicaes do usurio do banco de dados fsico. Os esquemas podem ser definidos como: nvel interno: ou esquema interno, o qual descreve a estrutura de armazenamento fsico do banco de dados; utiliza um modelo de dados e descreve detalhadamente os dados armazenados e os caminhos de acesso ao banco de dados; nvel conceitual: ou esquema conceitual, o qual descreve a estrutura do banco de dados como um todo; uma descrio global do banco de dados, que no fornece detalhes do modo como os dados esto fisicamente armazenados;

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 9

Unimar - Universidade de Marlia

F.C.T.

nvel externo: ou esquema de viso, o qual descreve as vises do banco de dados para um grupo de usurios; cada viso descreve quais pores do banco de dados um grupo de usurios ter acesso.

Usurios Finais

NVEL EXTERNO

Viso Externa 1

...

Viso Externa n

Mapeamento Conceitual Externo

NVEL CONCEITUAL

Esquema Conceitual

Mapeamento Conceitual Interno

NVEL INTERNO

Esquema Interno

Banco de Dados Armazenado

Figura 2: Arquitetura Trs Esquemas

2.4. Independncia de Dados


A independncia de dados pode ser definida como a capacidade de se alterar um esquema em um nvel em um banco de dados sem ter que alterar um nvel superior (figura 2). Existem dois tipos de independncia de dados: independncia de dados lgica: a capacidade de alterar o esquema conceitual sem ter que alterar o esquema externo ou as aplicaes do usurio; GEEK BRASIL http://www.geekbrasil.com.br Pgina 10

Unimar - Universidade de Marlia

F.C.T.

independncia de dados fsica: a capacidade de alterar o esquema interno sem ter que alterar o esquema conceitual, o esquema externo ou as aplicaes do usurio.

2.5. As Linguagens para Manipulao de Dados


Para a definio dos esquemas conceitual e interno pode-se utilizar uma linguagem chamada DDL (Data Definition Language - Linguagem de Definio de Dados). O SGBD possui um compilador DDL que permite a execuo das declaraes para identificar as descries dos esquemas e para armazen-las no catlogo do SGBD. A DDL utilizada em SGBDs onde a separao entre os nveis interno e conceitual no muito clara. Em um SGBD em que a separao entre os nveis conceitual e interno so bem claras, utilizado uma outra linguagem, a SDL (Storage Definition Language - Linguagem de Definio de Armazenamento) para a especificao do esquema interno. A especificao do esquema conceitual fica por conta da DDL. Em um SGBD que utiliza a arquitetura trs esquemas, necessria a utilizao de mais uma linguagem para a definio de vises, a VDL (Vision Definition Language - Linguagem de Definio de Vises). Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se uma linguagem para fazer a manipulao dos dados, a DML (Data Manipulation Language Linguagem de Manipulao de Dados).

2.6. Os Mdulos Componentes de um SGBD


Um SGBD um sistema complexo, formado por um conjunto muito grande de mdulos. A figura 3 mostra um esquema da estrutura de funcionamento de um SGBD.

2.7. Classificao dos SGBDs


O principal critrio para se classificar um SGBD o modelo de dados no qual baseado. A grande maioria dos SGBDs conteporneos so baseados no modelo relacional, alguns em modelos conceituais e alguns em modelos orientados a objetos. Outras classificaes so: usurios: um SGBD pode ser mono-usurio, comumente utilizado em computadores pessoais ou multi-usurios, utilizado em estaes de trabalho, mini-computadores e mquinas de grande porte; localizao: um SGBD pode ser localizado ou distribudo; se ele for localizado, ento todos os dados estaro em uma mquina (ou em um nico disco) ou distribudo, onde os dados estaro distribudos por diversas mquinas (ou diversos discos); ambiente: ambiente homogneo o ambiente composto por um nico SGBD e um ambiente heterogneo o ambiente compostos por diferentes SGBDs.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 11

Unimar - Universidade de Marlia

F.C.T.

Usurios usurios simples programadores de aplicaes usurios ocasionais

DBA

programas de aplicao

chamadas de rotina

consultas

esquema de banco de dados

pr-compilador da linguagem de manipulao de dados

processador de consultas

compilador da linguagem de definio de dados

cdigo objeto dos programas de aplicao

gerenciador do banco de dados

SGBD

gerenciador de arquivos

arquivo de dados dicionrio de dados Memria de Disco

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 12

Unimar - Universidade de Marlia Figura 3: Estrutura de um Sistema Gerenciador de Banco de Dados

F.C.T.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 13

Unimar - Universidade de Marlia

F.C.T.

3. Modelagem de Dados Utilizando o Modelo Entidade Relacionamento (ER)


O modelo Entidade-Relacionamento um modelo de dados conceitual de alto nvel, cujos conceitos foram projetados para estar o mais prximo possvel da viso que o usurio tem dos dados, no se preocupando em representar como estes dados estaro realmente armazenados. O modelo ER utilizado principalmente durante o processo de projeto de banco de dados.

3.1. Modelo de Dados Conceitual de Alto Nvel


A figura 4 faz uma descrio simplificada do processo de projeto de um banco de dados.

Mini-Mundo

Anlise e Coleta de Requisitos Requisitos do Banco de Dados

Projeto Conceitual

Esquema Conceitual (Alto Nvel) Mapeamento do Modelo de Dados Esquema Conceitual (Modelo do SGBD) Projeto Fsico

Catlogo do BD

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 14

Unimar - Universidade de Marlia Figura 4: Fases do Projeto de um Banco de Dados

F.C.T.

3.2. Entidades e Atributos


O objeto bsico tratado pelo modelo ER a entidade, que pode ser definida como um objeto do mundo real, concreto ou abstrato e que possui existncia independente. Cada entidade possui um conjunto particular de propriedades que a descreve chamado atributos. Um atributo pode ser dividido em diversas sub-partes com significado independente entre si, recebendo o nome de atributo composto. Um atributo que no pode ser subdividido chamado de atributo simples ou atmico. Os atributos que podem assumir apenas um determinado valor em uma determinada instncia denominado atributo simplesmente valorado, enquanto que um atributo que pode assumir diversos valores em uma mesma instncia denominado multi valorado. Um atributo que gerado a partir de outro atributo chamado de atributo derivado.

3.3. Tipos Entidade, Conjunto de Valores, Atributo Chave


Um banco de dados costuma conter grupos de entidades que so similares, possuindo os mesmos atributos, porm, cada entidade com seus prprios valores para cada atributo. Este conjunto de entidades similares definem um tipo entidade. Cada tipo entidade identificada por seu nome e pelo conjunto de atributos que definem suas propriedades. A descrio do tipo entidade chamada de esquema do tipo entidade, especificando o nome do tipo entidade, o nome de cada um de seus atributos e qualquer restrio que incida sobre as entidades. Uma restrio muito importante em uma entidade de um determinado tipo entidade a chave. Um tipo entidade possui um atributo cujos valores so distintos para cada entidade individual. Este atributo chamado atributo chave e seus valores podem ser utilizados para identificar cada entidade de forma nica. Muitas vezes, uma chave pode ser formada pela composio de dois ou mais atributos. Uma entidade pode tambm ter mais de um atributo chave. Cada atributo simples de um tipo entidade est associado com um conjunto de valores denominado domnio, o qual especifica o conjunto de valores que podem ser designados para este determinado atributo para cada entidade.

3.4. Tipos e Instncias de Relacionamento


Alm de conhecer detalhadamente os tipos entidade, muito importante conhecer tambm os relacionamentos entre estes tipos entidades. Um tipo relacionamento R entre n entidades E1, E2, ..., En, um conjunto de associaes entre entidades deste tipo. Informalmente falando, cada instncia de relacionamento r1 em R uma associao de entidades, onde a associao inclui exatamente uma entidade de cada tipo entidade participante no tipo relacionamento. Isto significa que estas entidades esto relacionadas de alguma forma no mini-mundo. A figura 5 mostra um exemplo entre dois tipos entidade (empregado e departamento) e o relacionamento entre eles (trabalha para). Repare que para cada relacionamento, participam apenas uma entidade de cada tipo entidade, porm, uma entidade pode participar de mais do que um relacionamento. GEEK BRASIL http://www.geekbrasil.com.br Pgina 15

Unimar - Universidade de Marlia

F.C.T.

Trabalha Para EMPREGADO DEPARTAMENTO

e1 e2 e3 e4 e5 e6 e7

d1 d2 d3

Figura 5: Exemplo de um Relaciomento

3.5. Grau de um Relacionamento


O grau de um tipo relacionamento o nmero de tipos entidade que participam do tipo relacionamento. No exemplo da figura 5, temos um relacionamento binrio. O grau de um relacionamento ilimitado, porm, a partir do grau 3 (ternrio), a compreenso e a dificuldade de se desenvolver a relao corretamente se tornam extremamente complexas.

3.6. Outras Caractersticas de um Relacionamento


3.6.1. Relacionamentos como Atributos
Algumas vezes conveniente pensar em um relacionamento como um atributo. Considere o exemplo da figura 5. Podemos pensar departamento como sendo um atributo da entidade empregado, ou empregado, como um atributo multivalorado da entidade departamento. Se uma entidade no possuir existncia muito bem definida, talvez seja mais interessante para a coesividade do modelo lgico que ela seja representada como um atributo.

3.6.2. Nomes de Papis e Relacionamentos Recursivos


Cada tipo entidade que participa de um tipo relacionamento desempenha um papel particular no relacionamento. O nome do papel representa o papel que uma entidade de um tipo entidade participante desempenha no relacionamento. No exemplo da figura 5, ns temos o papel empregado ou trabalhador para o tipo entidade EMPREGADO e o papel departamento ou empregador para a entidade DEPARTAMENTO. Nomes de papis no so necessariamente importantes quando todas as entidades participantes desempenham papis diferentes. Algumas GEEK BRASIL http://www.geekbrasil.com.br Pgina 16

Unimar - Universidade de Marlia

F.C.T.

vezes, o papel torna-se essencial para distinguir o significado de cada participao. Isto muito comum em elacionamentos recursivos. Um relacionamento recursivo um relacionamento entre entidades do mesmo tipo entidade. Veja o exemplo da figura 6.

EMPREGADO

e1 e2 e3 e4 e5 Supervisiona Supervisionado Supervisiona

Figura 6 - Um Relacionamento Recursivo No exemplo, temos um relacionamento entre o tipo entidade EMPREGADO, onde um empregado pode supervisionar outro empregado e um empregado pode ser supervisionado por outro empregado.

3.6.3. Restries em Tipos Relacionamentos


Geralmente, os tipos relacionamentos sofrem certas restries que limitam as possveis combinaes das entidades participantes. Estas restries so derivadas de restries impostas pelo estado destas entidades no mini-mundo. Veja o exemplo da figura 7.

Gerencia EMPREGADO e1 e2 e3 e4 e5 GEEK BRASIL http://www.geekbrasil.com.br e6 e7 DEPARTAMENTO

d1 d2 d3 Pgina 17

Unimar - Universidade de Marlia

F.C.T.

Figura 7 - Relacionamento EMPREGADO gerencia DEPARTAMENTO No exemplo da figura 7, temos a seguinte situao: um empregado pode gerenciar apenas um departamento, enquanto que um departamento, pode ser gerenciado por apenas um empregado. A este tipo de restrio, ns chamamos cardinalidade. A cardinalidade indica o nmero de relacionamentos dos quais uma entidade pode participar. A cardinalidade pode ser: 1:1, 1:N, M:N. No exemplo da figura 7, a cardinalidade 1:1, pois cada entidade empregado pode gerenciar apenas um departamento e um departamento pode ser gerenciado por apenas um empregado. No exemplo da figura 5, no relacionamento EMPREGADO Trabalha Para DEPARTAMENTO, o relacionamento 1:N, pois um empregado pode trabalhar em apenas um departamento, enquanto que um departamento pode possuir vrios empregados. Na figura 8 temos um exemplo de um relacionamento com cardinalidade N:M.

Trabalha Em EMPREGADO e1 e2 e3 e4 PROJETO

p1 p2 p3

Figura 8 - Relacionamento N:M No exemplo da figura 8, ns temos que um empregado pode trabalhar em vrios projetos enquanto que um projeto pode ter vrios empregados trabalhando. Outra restrio muito importante a participao. A participao define a existncia de uma entidade atravs do relacionamento, podendo ser parcial ou total. Veja o exemplo da figura 7. A participao do empregado parcial pois nem todo empregado gerencia um departamento, porm a participao do departamento neste relacionamento total pois todo departamento precisa ser gerenciado por um empregado. Desta forma, todas as entidades do tipo entidade DEPARTAMENTO precisam participar do relacionamento, mas nem todas as entidade do tipo entidade EMPREGADO precisam participar do relacionamento. J no exemplo GEEK BRASIL http://www.geekbrasil.com.br Pgina 18

Unimar - Universidade de Marlia

F.C.T.

da figura 5, ambas as participaes so totais pois todo empregado precisa trabalhar em um departamento e todo departamento tem que ter empregados trabalhando nele. Estas restries so chamadas de restries estruturais. Algumas vezes, torna-se necessrio armazenar um atributo no tipo relacionamento. Veja o exemplo da figura 7. Eu posso querer saber em que dia o empregado passou a gerenciar o departamento. difcil estabelecer a qual tipo entidade pertence atributo, pois o mesmo definido apenas pela existncia do relacionamento. Quando temos relacionamentos com cardinalidade 1:1, podemos colocar o atributo em uma das entidades, de preferncia, em uma cujo tipo entidade tenha participao total. No caso, o atributo poderia ir para o tipo entidade departamento. Isto porque nem todo empregado participar do relacionamento. Caso a cardinalidade seja 1:N, ento podemos colocar o atributo no tipo entidade com participao N. Porm, se a cardinalidade for N:M, ento o atributo dever mesmo ficar no tipo relao. Veja o exemplo da figura 8. Caso queiramos armazenar quantas horas cada empregado trabalhou em cada projeto, ento este dever ser um atributo do relacionamento.

3.6.4. Tipos Entidades Fracas


Alguns tipos entidade podem no ter um atributo chave por si s. Isto implica que no poderemos distinguir algumas entidades por que as combinaes dos valores de seus atributos podem ser idnticas. Estes tipos entidade so chamados entidades fracas. As entidades deste tipo precisam estar relacionadas com uma entidade pertencente ao tipo entidade proprietria. Este relacionamento chamado de relacionamento identificador. Veja o exemplo da figura 9.

Possui Dependentes EMPREGADO DEPENDENTE e1 e2

p1 p2 p3

Figura 9 - Relacionamento com uma Entidade Fraca (Dependente) O tipo entidade DEPENDENTE uma entidade fraca pois no possui um mtodo de identificar uma entidade nica. O EMPREGADO no uma entidade fraca pois possui um atributo para identificao (atributo chave). O nmero do RG de um empregado identifica um nico empregado. Porm, um dependente de 5 anos de idade no possui necessariamente um documento. Desta forma, esta entidade um tipo entidade fraca. Um tipo entidade fraca possui uma chave parcial, que juntamente com a chave primria da entidade proprietria forma uma chave primria composta. Neste exemplo: a chave primria do EMPREGADO o RG. A chave parcial do DEPENDENTE o seu nome, pois dois irmos no podem ter o mesmo nome. Desta forma, a chave primria desta entidade fica sendo o RG do pai ou me mais o nome do dependente. GEEK BRASIL http://www.geekbrasil.com.br Pgina 19

Unimar - Universidade de Marlia

F.C.T.

Todos os exemplos vistos acima foram para relacionamentos binrios, ou seja, entre dois tipos entidades diferentes ou recursivos. Porm, o modelo entidade relacionamento no se restringe apenas relacionamentos binrios. O nmero de entidades que participam de um tipo relacionamento irrestrito e armazenam muito mais informaes do que diversos relacionamentos binrios. Considere o seguinte exemplo: Um motorista pode efetuar uma viagem para uma localidade dirigindo um determinado caminho em uma determinada data. Se efetuarmos trs relacionamentos binrios, no teremos estas informaes de forma completa como se criassemos um relacionamento ternrio. Veja o resultado como fica no exemplo da figura 10.

data 1

data 2

M1 M2 M3 M4

C1 C2 C3

data 3 data 4 data 5 L1 L2 L3

Figura 10 - Relacionamento Ternrio

3.7. Diagrama Entidade Relacionamento


O diagrama Entidade Relacionamento composto por um conjunto de objetos grficos que visa representar todos os objetos do modelo Entidade Relacionamento tais como entidades, atributos, atributos chaves, relacionamentos, restries estruturais, etc.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 20

Unimar - Universidade de Marlia

F.C.T.

O diagrama ER fornece uma viso lgica do banco de dados, fornecendo um conceito mais generalizado de como esto estruturados os dados de um sistema. Os objetos que compem o diagrama ER esto listados a seguir, na figura 11.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 21

Unimar - Universidade de Marlia

F.C.T.

TIPO ENTIDADE

ATRIBUTO

TIPO ENTIDADE FRACA

ATRIBUTO CHAVE ATRIBUTO MULTI VALORADO

TIPO RELACIONAMENTO

ATRIBUTO COMPOSTO TIPO RELACIONAMENTO IDENTIFICADOR

ATRIBUTO DERIVADO

E1

E2

E1

E2

Taxa de Cardinalidade 1:N para E1:E2 em R

Participao Parcial de E1 em R, Participao Total de E2 em R

(min, max)

E1

Restrio Estrutural (min,max) na Participao de E1 em R

Figura 11- Objetos que Compem o Diagrama ER

3.8. Modelo Entidade Relacionamento Extendido


Os conceitos do modelo Entidade Relacionamento discutidos anteriormente so suficientes para representar logicamente a maioria das aplicaes de banco de dados. Porm, com o surgimento de novas aplicaes, surgiu tambm a necessidade de novas semnticas para a modelagem de informaes mais complexas. O modelo Entidade Relacionamento Extendido (ERE) visa fornecer esta semntica para permitir a representao de informaes complexas. importante frisar que embora o modelo ERE trate classes e subclasses, ele no possui a mesma semntica de um modelo orientado a objetos. O modelo ERE engloba todos os conceitos do modelo ER mais os conceitos de subclasse, superclasse, generalizao e especializao e o conceito de herana de atributos.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 22

Unimar - Universidade de Marlia

F.C.T.

3.8.1. Subclasses, Superclasses e Especializaes


O primeiro conceito do modelo ERE que ser abordado o de subclasse de um tipo entidade. Como visto anteriormente, um tipo entidade utilizado para representar um conjunto de entidades do mesmo tipo. Em muitos casos, um tipo entidade possui diversos subgrupos adicionais de entidades que so significativas e precisam ser representadas explicitamente devido ao seu significado aplicao de banco de dados. Leve em considerao o seguinte exemplo: Para um banco de dados de uma empresa temos o tipo entidade empregado, o qual possui as seguintes caractersticas: nome, rg, cic, nmero funcional, endereo completo (rua, nmero, complemento, cep, bairro, cidade), sexo, data de nascimento e telefone (ddd e nmero); caso o(a) funcionrio(a) seja um(a) engenheiro(a), ento deseja-se armazenar as seguintes informaes: nmero do CREA e especialidade (Civil, Mecnico, Eltro/Eletrnico); caso o(a) funcionrio(a) seja um(a) secretrio(a), ento deseja-se armazenar as seguinte informaes: qualificao (bi ou tri lngue) e os idiomas no qual possui fluncia verbal e escrita. Se as informaes nmero do CREA, especialidade, tipo e idiomas forem representadas diretamente no tipo entidade empregado estaremos representando informaes de um conjunto limitados de entidades empregado para os todos os funcionrios da empresa. Neste caso, podemo criar duas subclasses do tipo entidade empregado: engenheiro e secretria, as quais iro conter as informaes acima citadas. Alm disto, engenheiro e secretria podem ter relacionamentos especficos. Uma entidade no pode existir meramente como componente de uma subclasse. Antes de ser componente de uma subclasse, uma entidade deve ser componente de uma superclasse. Isto leva ao conceito de herana de atributos; ou seja, a subclasse herda todos os atributos da superclasse. Isto porque a entidade de subclasse representa as mesmas caracterscticas de uma mesma entidade da superclasse. Uma subclasse pode herdar atributos de superclasses diferentes. A figura 12 mostra a representao diagramtica do exemplo acima.
nome no. funcional sexo rg dt. nasc.

Empregado
endereo

Funo d
qualificao No registro

GEEK especializao http://www.geekbrasil.com.br BRASIL

Engenheiro

Secretria

idiomas Pgina 23

Unimar - Universidade de Marlia

F.C.T.

Figura 12 - Representao de Superclasse e Subclasses

3.8.3. Especializao
Especializao o processo de definio de um conjunto de classes de um tipo entidade; este tipo entidade chamado de superclasse da especializao. O conjunto de subclasses formado baseado em alguma caracterstica que distingua as entidades entre si. No exemplo da figura 12, temos uma especializao, a qual podemos chamar de funo. Veja agora no exemplo da figura 13, temos a entidade empregado e duas especializaes.

Empregado

Funo d

Categoria Salarial d

Engenheiro

Secretria

Horista

Mensalista

Figura 13 - Duas Especializaes para Empregado: Funo e Categoria Salarial Como visto anteriormente, uma subclasse pode ter relacionamentos especficos com outras entidades ou com a prpria entidade que a sua superclasse. Veja o exemplo da figura 14.

N Projeto liderado desenvolvido por Funo N 1 lidera


d

Empregado

N Engenheiro GEEK BRASIL http://www.geekbrasil.com.br participa Secretria Pgina 24

Unimar - Universidade de Marlia

F.C.T.

Figura 14 - Relacionamentos Entre Subclasses e Entidades

O processo de especializao nos permite: definir um conjunto de subclasses de um tipo entidade; associar atributos especficos adicionais para cada subclasse; estabelecer tipos relacionamentos especficos entre subclasses e outros tipos entidades.

3.8.4. Generalizao
A generalizao pode ser pensada como um processo de abstrao reverso ao da especializao, no qual so suprimidas as diferenas entre diversos tipos entidades, identificando suas caractersticas comuns e generalizando estas entidades em uma superclasse

no. funcional No registro

no. funcional

qualificao

especializao

Engenheiro

Secretria

idiomas

nome

rg

nome

rg

Figura 15 - Tipos Entidades Engenheiro e Secretria

nome no. funcional

rg

Empregado Funo d
qualificao

no registro

especializao GEEK BRASIL http://www.geekbrasil.com.br

Engenheiro

Secretria

Pgina 25

idiomas

Unimar - Universidade de Marlia

F.C.T.

Figura 16 - Generalizao Empregado para os Tipos Entidades Engenheiro e Secretria importante destacar que existe diferena semntica entre a especializao e a generalizao. Na especializao, podemos notar que a ligao entre a superclasse e as subclasses feita atravs de um trao simples, indicando participao parcial por parte da superclasse. Analisando o exemplo da figura 12, observado que um empregado no obrigado a ser um engenheiro ou uma secretria. Na generalizao, podemos notar que a ligao entre a superclasse e as subclasses feita atravs de um trao duplo, indicando participao total por parte da superclasse. Analisando o exemplo da figura 16, observado que um empregado obrigado a ser um engenheiro ou uma secretria. A letra d dentro do crculo que especifica uma especializao ou uma generalizao significa disjuno. Uma disjuno em uma especializao ou generalizao indica que uma entidade do tipo entidade que representa a superclasse pode assumir apenas um papel dentro da mesma. Analisando o exemplo da figura 13. Temos duas especializaes para a superclasse Empregado, as quais so restringidas atravs de uma disjuno. Neste caso, um empregado pode ser um engenheiro ou uma secretria e o mesmo pode ser horista ou mensalista. Alm da disjuno podemos ter um overlap, representado pela letra o. No caso do overlap, uma entidade de uma superclasse pode ser membro de mais que uma subclasse em uma especializao ou generalizao. Analise a generalizao no exemplo da figura 17. Suponha que uma pea fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sido manufaturada e torneada.

Descrio no. da pea

Pea

o
No. Projeto Data

Ordem Servio

Manufaturada

Torneada

Preo

Figura 17 - Uma Generalizao com Overlap

3.8.5. Lattice ou Mltipla Herana


GEEK BRASIL http://www.geekbrasil.com.br Pgina 26

Unimar - Universidade de Marlia

F.C.T.

Uma subclasse pode ser definida atravs de um lattice, ou mltipla herana, ou seja, ela pode ter diversas superclasses, herdando caractersticas de todas. Leve em considerao o seguinte exemplo: Uma construtora possui diversos funcionrios, os quais podem ser engenheiros ou secretrias. Um funcionrio pode tambm ser assalariado ou horista. Todo gerente de departamento da construtora deve ser um engenheiro e assalariado. O modelo lgico da expresso acima tem o seguinte formato:

Empregado

Funo d

Categoria Salarial d

Secretaria

Engenheiro

Mensalista

Horista

Gerente

Figura 18 - Um Lattice com a Subclasse Gerente Compartilhada Neste caso ento, um gerente ser um funcionrio que alm de possuir as caractersticas prprias de Gerente, herdar as caractersticas de Engenheiro e de Mensalista.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 27

Unimar - Universidade de Marlia

F.C.T.

4. O Modelo Relacional
O modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os dados como uma coleo de relaes, onde cada relao representada por uma tabela, ou falando de uma forma mais direta, um arquivo. Porm, um arquivo mais restrito que uma tabela. Toda tabela pode ser considerada um arquivo, porm, nem todo arquivo pode ser considerado uma tabela. Quando uma relao pensada como uma tabela de valores, cada linha nesta tabela representa uma coleo de dados relacionados. Estes valores podem ser interpretados como fatos descrevendo uma instncia de uma entidade ou de um relacionamento. O nome da tabela e das colunas desta tabela so utilizados para facilitar a interpretao dos valores armazenados em cada linha da tabela. Todos os valores em uma coluna so necessariamente do mesmo tipo. Na terminologia do modelo relacional, cada tabela chamada de relao; uma linha de uma tabela chamada de tupla; o nome de cada coluna chamado de atributo; o tipo de dado que descreve cada coluna chamado de domnio.

4.1. Domnios, Tuplas, Atributos e Relaes


Um domnio D um conjunto de valores atmicos, sendo que por atmico, podemos compreender que cada valor do domnio indivisvel. Durante a especificao do domnio importante destacar o tipo, o tamanho e a faixa do atributo que est sendo especificado. Por exemplo: Coluna Tipo RG Nome Salrio Numrico Caracter Numrico Tamanho 10,0 30 5,2 Faixa 03000000-25999999 a-z, A-Z 00100,00-12999,99

Um esquema de relao R, denotado por R(A1, A2, ... , An), onde cada atributo Ai o nome do papel desempenhado por um domnio D no esquema relao R, onde D chamado domnio de Ai e denotado por dom(Ai). O grau de uma relao R o nmero de atributos presentes em seu esquema de relao. A instncia r de um esquema relao denotado por r(R) um conjunto de n-tuplas r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domnio D. O valor nulo tambm pode fazer parte do domnio de um atributo e representa um valor no conhecido para uma determinada tupla.

4.2. Atributo Chave de uma Relao


Uma relao pode ser definida como um conjunto de tuplas distintas. Isto implica que a combinao dos valores dos atributos em uma tupla no pode se repetir na mesma tabela. Existir sempre um subconjunto de atributos em uma tabela que garantem que no haver valores repetidos para as diversas tuplas da mesma, garantindo que t1[SC] t2[SC].

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 28

Unimar - Universidade de Marlia

F.C.T.

SC chamada de superchave de um esquema de relao. Toda relao possui ao menos uma superchave - o conjunto de todos os seus atributos. Uma chave C de um esquema de relao R uma superchave de R com a propriedade adicional que removendo qualquer atributo A de K, resta ainda um conjunto de atributos K que no uma superchave de R. Uma chave uma superchave da qual no se pode extrair atributos. Por exemplo, o conjunto: (RA, Nome, Endereo) uma superchave para estudante, porm, no uma chave pois se tirarmos o campo Endereo continuaremos a ter uma superchave. J o conjunto (Nome da Revista, Volume, No da Revista) uma superchave e uma chave, pois qualquer um dos atributos que retirarmos, deixaremos de ter uma superchave, ou seja, (Nome da Revista, Volume) no identifica uma nica tupla. Em outras palavras, uma superchave uma chave composta, ou seja, uma chave formada por mais que um atributo. Veja o exemplo abaixo:

Tabela DEPENDENTES RG Responsvel 10101010 10101010 20202020 20202020 30303030 Nome Dependente Jorge Luiz Fernanda Angelo Fernanda Dt. Nascimento 27/12/86 18/11/79 14/02/69 10/02/95 01/05/90 Relao Filho Filho Conjuge Filho Filho Sexo Masculino Masculino Feminino Masculino Feminino

Quando uma relao possui mais que uma chave (no confundir com chave composta) como por exemplo RG e CIC para empregados - cada uma destas chaves so chamadas de chaves candidatas. Uma destas chaves candidatas deve ser escolhida como chave primria. Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um relacionamento entre as tabelas R1 e R2.

Tabela DEPARTAMENTO Nome Contabilidade Engenharia Civil Engenharia Mecnica Nmero 1 2 3 RG Gerente 10101010 30303030 20202020

Tabela EMPREGADO Nome Joo Luiz Fernando Ricardo RG 10101010 20202020 30303030 CIC 11111111 22222222 33333333 Depto. 1 2 2 RG Supervisor NULO 10101010 10101010 Salrio 3.000,00 2.500,00 2.300,00

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 29

Unimar - Universidade de Marlia

F.C.T.

Jorge Renato

40404040 50505050

44444444 55555555

2 3

20202020 20202020

4.200,00 1.300,00

4.3. Mapeamento do Modelo Entidade Relacionamento para o Modelo Relacional


O mapeamento do modelo entidade relacionamento para o Modelo Relacional segue oito passos bsicos a saber: 1. Para cada entidade E no modelo ER criada uma tabela T1 no Modelo Relacional que inclua todos os atributos simples de E; para cada atributo composto, so inseridos apenas os componentes simples de cada um; um dos atributos chaves de E deve ser escolhida como a chave primria de T1; 2. Para cada entidade fraca EF com entidade proprietria E no modelo ER, criada uma tabela T1 no Modelo Relacional incluindo todos os atributos simples de EF; para cada atributo composto , so inseridos apenas os componentes simples de cada um; a chave primria desta relao T1 ser composta pela chave parcial da entidade fraca EF mais a chave primria da entidade proprietria E; 3. Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que geraram as tabelas T1 e T2 respectivamente, devemos escolher a chave primria de uma das relaes (T1, T2)e inser-la como chave estrangeira na outra relao; se um dos lados do relacionamento tiver participao total e outro parcial, ento interessante que a chave do lado com participao parcial seja inserido como chave estrangeira no lado que tem participao total; 4. Para cada relacionamento regular com cardinalidade 1:N entre entidades E1 e E2 respectivamente e que geraram as tabelas T1 e T2 respectivamente, deve-se inserir a chave primria de T1 como chave estrangeira em T2; 5. Para cada relacionamento regular com cardinalidade N:N entre entidades E1 e E2, criase uma nova tabela T1, contendo todos os atributos do relacionamento mais o atributo chave de E1 e o atributo chave de E2; a chave primria de T1 ser composta pelos atributos chave de E1 e E2; 6. Para cada atributo multivalorado A1, cria-se uma tabela T1, contendo o atributo multivalorado A1, mais o atributo chave C da tabela que representa a entidade ou relacionamento que contm A1; a chave primria de T1 ser composta por A1 mais C; se A1 for composto, ento a tabela T1 dever conter todos os atributos de A1; 7. Para cada relacionamento n-rio, n > 2, cria-se uma tabela T1, contendo todos os atributos do relacionamento; a chave primria de T1 ser composta pelos atributos chaves das entidades participantes do relacionamento; 8. Converta cada especializao com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde os atributos de SC so {c, a1, a2, ..., an} onde c a chave primria de SC, em tabelas utilizando uma das seguintes opes: 8.1. Crie uma tabela T para SC com os atributos A(T) = {c, a1, a2, ..., an} e chave C(T) = c; crie uma tabela Ti para cada subclasse Si , 1 i m, com os atributos A(Ti) = {c} A(Si), onde C(T) = c; GEEK BRASIL http://www.geekbrasil.com.br Pgina 30

Unimar - Universidade de Marlia

F.C.T.

8.2. Crie uma tabela Ti para cada subclasse Si, 1 i m, com os atributos A(Ti) = A(Si) {c, a1, a2, ..., an} e C(Ti) = c; 8.3. Crie uma tabela T com os atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t} e C(T) = c, onde t um atributo tipo que indica a subclasse qual cada tupla pertence, caso isto venha a ocorrer; 8.4. Crie uma tabela T com atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t1, t2, ..., tm} e C(T) = c; esta opo para generalizaes com overlapping, e cada ti, 1 i m, um atributo booleano indicando se a tupla pertence ou no subclasse Si; embora funcional, esta opo pode gerar uma quantidade muito grande de valores nulos;
1o Passo - Entidades Normais 2o Passo - Entidades Fracas

E c 3o Passo - Relacionamentos 1:1 E ou E

EF

4o Passo - Relacionamentos 1:N E 1 N E

5o Passo - Relacionamentos N:N E N N E

6o Passo - Atrbs. Multi Valorados E E E


mv

E E ou E 7o Passo - Relacionamento n-rio E E

Figura 19 - Mapeamento para o Modelo Relacional

4.4. Dependncia Funcional e Normalizao


4.4.1. Dependncia Funcional
Uma dependncia funcional uma restrio entre dois conjuntos de atributos de uma base de dados. Suponha que o esquema de uma base de dados R possua n atributos A1, A2, ..., An; pense em R = { A1, A2, ... , An } como a representao universal da base de dados. Uma dependncia funcional, representada por X Y entre dois conjuntos de atributos X e Y que so subconjuntos de R especificam uma restrio nas tuplas que podem compor uma instncia relao r de R. A restrio estabelece que para qualquer par de tuplas t1 e t2 em r de forma que t1.[X] = t2.[X], obrigado a existir t1.[Y] = t2.[Y]. Isto significa que os valores do componente Y em uma tupla em r depende de, ou determinada pelos valores do componente X. Para X Y l-se: Y funcionalmente dependente de X, ou X infere sobre Y. GEEK BRASIL http://www.geekbrasil.com.br Pgina 31

Unimar - Universidade de Marlia

F.C.T.

Para a base de dados do apndice A temos como exemplo as seguintes dependncias funcionais: 1. RG { Nome, CIC, Depto., RG_Supervisor, Salrio } { Nome_Projeto, Localizao } Horas

2. Nmero_Projeto

3. { RG_Empregado, Nmero_Projeto } alm de outras.

A dependncia 1 implica que o nmero de um RG define de forma nica o nome do empregado e o CIC do empregado. A dependncia 2 implica que o nmero do projeto define de forma nica o nome do projeto e sua localizao e a dependncia 3 implica que o RG do empregado mais o nmero do projeto define de forma nica o nmero de horas que o empregado trabalhou no projeto. A especificao das inferncias deve ser elaborada pelo projetista de banco de dados em conjunto com o analista de sistemas, pois os mesmos devero ter conhecimento da semntica da base de dados.

4.4.2. Normalizao
O processo de normalizao pode ser visto como o processo no qual so eliminados esquemas de relaes (tabelas) no satisfatrios, decompondo-os, atravs da separao de seus atributos em esquemas de relaes menos complexas mas que satisfaam as propriedades desejadas. O processo de normalizao como foi proposto inicialmente por Codd conduz um esquema de relao atravs de um bateria de testes para certificar se o mesmo est na 1a, 2a e 3a Formas Normais. Estas trs Formas Normais so baseadas em dependncias funcionais dos atributos do esquema de relao. 4.4.2.1. 1a Forma Normal A 1a Forma Normal prega que todos os atributos de uma tabela devem ser atmicos (indivisveis), ou seja, no so permitidos atributos multivalorados, atributos compostos ou atributos multivalorados compostos. Leve em considerao o esquema a seguir: CLIENTE 1. Cdigo 2. { Telefone } 3. Endereo: ( Rua, Nmero, Cidade ) gerando a tabela resultante: Cliente Cdigo Telefone 1 Telefone n Endereo Rua No Cidade

sendo que a mesma no est na 1a Forma Normal pois seus atributos no so atmicos. Para que a tabela acima fique na 1a Forma Normal temos que eliminar os atributos no atmicos, gerando as seguintes tabelas como resultado: Cliente Cdigo Rua Nmero Cidade Pgina 32

GEEK BRASIL http://www.geekbrasil.com.br

Unimar - Universidade de Marlia

F.C.T.

Cliente_Telefone

Cdigo_Cliente

Telefone_Client e

4.4.2.2. 2a Forma Normal A 2a Forma Normal prega o conceito da dependncia funcional total. Uma dependncia funcional X Y total se removemos um atributo A qualquer do componente X e desta forma, a dependncia funcional deixa de existir. A dependncia funcional X Y uma dependncia funcional parcial se existir um atributo A qualquer do componente X que pode ser removido e a dependncia funcional X Y no deixa de existir. Veja a dependncia funcional 3 do tem 4.4.1. Dependncia Funcional: { RG_Empregado, Nmero_Projeto } Horas

uma dependncia funcional total, pois se removermos o atributo RG_Empregado ou o atributo Nmero_Projeto, a dependncia funcional deixa de existir. Uma tabela T est na 2a Forma Normal se estiver na 1a Forma Normal e todo atributo que no compem a chave primria C for totalmente funcionalmente dependente da chave primria C. Se uma tabela no est na 2a Forma Normal a mesma pode ser normalizada gerando outras tabelas cujos atributos que no faam parte da chave primria sejam totalmente funcionalmente dependente da mesma, ficando a tabela na 2a Forma Normal. 4.4.2.3. 3a Forma Normal A 3a Forma Normal prega o conceito de dependncia transitiva. Uma dependncia funcional X Y em uma tabela T uma dependncia transitiva se existir um conjunto de atributos Z que no um subconjunto de chaves de T e as dependncias X Z, Z Y, so vlidas. Considere a seguinte tabela como exemplo:
Empregado RG Nome No_Departamento Nome_Depto RG_Ger_Depto

onde temos a seguinte dependncia transitiva: RG RG { Nome_Depto, RG_Ger_Depto } No_Departamento { Nome_Depto, RG_Ger_Depto }

No_Departamento

Porm, verifique o caso da tabela abaixo:


Empregado RG CIC Nome No_Funcional

Neste caso, a dependncia transitiva: RG RG CIC { Nome, No_Funcional } CIC { Nome, No_Funcional } Pgina 33

GEEK BRASIL http://www.geekbrasil.com.br

Unimar - Universidade de Marlia no valida pois o atributo CIC uma chave candidata.

F.C.T.

Uma tabela est na 3a Forma Normal se estiver na 2a Forma Normal e no houver dependncia transitiva entre atributos no chave.

4.5. A lgebra Relacional


A lgebra relacional uma coleo de operaes cannicas que so utilizadas para manipular as relaes. Estas operaes so utilizadas para selecionar tuplas de relaes individuais e para combinar tuplas relacionadas de relaes diferentes para especificar uma consulta em um determinado banco de dados. O resultado de cada operao uma nova operao, a qual tambm pode ser manipulada pela lgebra relacional. Todos os exemplos envolvendo lgebra relacional implicam na utilizao do banco de dados descrito no apndice A.

4.5.1. A Operao Select


A operao select utilizada para selecionar um subconjunto de tuplas de uma relao, sendo que estas tuplas devem satisfazer uma condio de seleo. A forma geral de uma operao select :

<condio de seleo> ( <nome da relao> )


A letra grega utilizada para representar a operao de seleo; <condio de seleo> uma expresso booleana aplicada sobre os atributos da relao e <nome da relao> o nome da relao sobre a qual ser aplicada a operao select. Exemplos: consulta1 =

salrio < 2.500,00 (EMPREGADO)

gera a seguinte tabela como resultado:


Tabela consulta1 Nome Ricardo Renato RG 30303030 50505050 CIC 33333333 55555555 Depto. 2 3 RG Supervisor 10101010 20202020 Salrio 2.300,00 1.300,00

consulta2 =

(relao = Filho) .and. (sexo = Feminino) (DEPENDENTES)

gera a seguinte tabela como resultado:


Tabela consulta2 RG Responsvel Nome Dependente Dt. Nascimento Relao Sexo

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 34

Unimar - Universidade de Marlia

F.C.T.

30303030

Adreia

01/05/90

Filho

Feminino

As operaes relacionais que podem ser aplicadas na operao select so: <, >, , , =, alm dos operadores booleanos: and, or, not. A operao select unria, ou seja, s pode ser aplicada a uma nica relao. No possvel aplicar a operao sobre tuplas de relaes distintas.

4.5.2. A Operao Project


A operao project seleciona um conjunto determinado de colunas de uma relao. A forma geral de uma operao project :

<lista de atributos> (<nome da relao>)


A letra grega representa a operao project, <lista de atributos> representa a lista de atributos que o usurio deseja selecionar e <nome da relao> representa a relao sobre a qual a operao project ser aplicada. Exemplos: consulta3 =

Nome,

Dt. Nascimento

(DEPENDENTES)

gera a seguinte tabela como resultado:


Tabela consulta3 Nome Dependente Jorge Luiz Fernanda Angelo Adreia Dt. Nascimento 27/12/86 18/11/79 14/02/69 10/02/95 01/05/90

4.5.3. Sequencialidade de Operaes


As operaes project e select podem ser utilizadas de forma combinada, permitindo que apenas determinadas colunas de determinadas tuplas possam ser selecionadas. GEEK BRASIL http://www.geekbrasil.com.br Pgina 35

Unimar - Universidade de Marlia A forma geral de uma operao sequencializada :

F.C.T.

<lista de atributos> (<condio de seleo> (<nome da relao>))


Veja o seguinte exemplo: consulta4 =

nome, depto., salario (salario < 2.500,00 (EMPREGADO))

produz a tabela a seguir como resultado:

Tabela consulta4 Nome Ricardo Renato Depto. 2 3 Salrio 2.300,00 1.300,00

A consulta4 pode ser reescrita da seguinte forma: consulta5 =

salario < 2.500,00(EMPREGADO)


RG 30303030 50505050 CIC 33333333 55555555 Depto. 2 3 RG Supervisor 10101010 20202020 Salrio 2.300,00 1.300,00

Tabela consulta5 Nome Ricardo Renato

consulta6 =

nome, depto., salario (CONSULTA5)


Tabela consulta6 Nome Ricardo Renato Depto. 2 3 Salrio 2.300,00 1.300,00

porm mais elegante utilizar a forma descrita na consulta4.

4.5.4. Operaes Matemticas


Levando em considerao que as relaes podem ser tratadas como conjuntos, podemos ento aplicar um conjunto de operaes matemticas sobre as mesmas. Estas operaes so: unio () , interseco () e diferena (). Este conjunto de operaes no unrio, ou seja, podem ser aplicadas sobre mais de uma tabela, porm, existe a necessidade das tabelas possuirem tuplas exatamente do mesmo tipo. Estas operaes podem ser definidas da seguinte forma: GEEK BRASIL http://www.geekbrasil.com.br Pgina 36

Unimar - Universidade de Marlia

F.C.T.

unio - o resultado desta operao representada por R S uma relao T que inclui todas as tuplas que se encontram em R e todas as tuplas que se encontram em S; interseco - o resultado desta operao representada por R S uma relao T que inclui as tuplas que se encontram em R e em S ao mesmo tempo; diferena - o resultado desta operao representada por R S uma relao T que inclui todas as tuplas que esto em R mas no esto em S. Leve em considerao a seguinte consulta: Selecione todos os empregados que trabalham no departamento nmero 2 ou que supervisionam empregados que trabalham no departamento nmero 2. Vamos primeiro selecionar todos os funcionrios que trabalham no departamento nmero 2.

consulta7 =
Nome Fernando Ricardo Jorge

depto = 2 (EMPREGADOS)
RG 20202020 30303030 40404040 CIC 22222222 33333333 44444444 Depto. 2 2 2 RG Supervisor 10101010 10101010 20202020 Salrio 2.500,00 2.300,00 4.200,00

Tabela consulta7

Vamos agora selecionar os supervisores dos empregados que trabalham no departamento nmero 2.

consulta8 =

rg_supervisor (CONSULTA7)

Tabela consulta8 RG Supervisor 10101010 20202020

Vamos projetar apenas o rg dos empregados selecionados:

consulta9 =

rg(CONSULTA7)
Pgina 37

Tabela consulta9

GEEK BRASIL http://www.geekbrasil.com.br

Unimar - Universidade de Marlia

F.C.T.

RG 20202020 30303030 40404040

E por fim, vamos unir as duas tabelas, obtendo o resultado final.

consulta10
RG

= CONSULTA8 CONSULTA9

Tabela consulta10

20202020 30303030 40404040 10101010

Leve em considerao a prxima consulta: selecione todos os empregados que desenvolvem algum projeto e que trabalham no departamento nmero 2; Vamos primeiro selecionar todos os empregados que trabalham em um projeto.

consulta11 =

rg_empregado(EMPREGADO/PROJETO)

Tabela consulta11 RG_Empregado 20202020 30303030 40404040 50505050

Vamos agora selecionar todos os empregados que trabalham no departamento 2.

consulta12 =

rg (depto = 2 (EMPREGADOS))
Tabela consulta12

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 38

Unimar - Universidade de Marlia

F.C.T.

RG 20202020 30303030 40404040

Obtemos ento todos os empregados que trabalham no departamento 2 e que desenvolvem algum projeto.

consulta13

= CONSULTA11 CONSULTA12
Tabela consulta13 RG 20202020 30303030 40404040

Leve em considerao a seguinte consulta: selecione todos os usurios que no desenvolvem projetos;

consulta14 =

rg_empregado (EMPREGADO/PROJETO)

Tabela consulta14 RG Empregado 20202020 30303030 40404040 50505050

consulta15 =

rg (EMPREGADOS)
Tabela consulta15 RG 10101010 20202020 30303030 40404040

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 39

Unimar - Universidade de Marlia

F.C.T.

50505050

consulta16 = CONSULTA15 CONSULTA14


Tabela consulta16 RG 10101010

4.5.5. Produto Cartesiano


O produto cartesiano uma operao binria que combina todas as tuplas de duas tabelas. Diferente da operao unio, o produto cartesiano no exige que as tuplas das tabelas possuam exatamente o mesmo tipo. O produto cartesiano permite ento a consulta entre tabelas relacionadas utilizando uma condio de seleo apropriada. O resultado de um produto cartesiano uma nova tabela formada pela combinao das tuplas das tabelas sobre as quais aplicou-se a operao. O formato geral do produto cartesiano entre duas tabelas R e S : RS Leve em considerao a seguinte consulta: encontre todos os funcionrios que desenvolvem projetos em Campinas;

consulta16 = EMPREGADO/PROJETO PROJETO


Tabela consulta16 RG Empregado 20202020 20202020 20202020 20202020 20202020 20202020 30303030 30303030 30303030 40404040 40404040 Nmero Projeto 5 5 5 10 10 10 5 5 5 20 20 Nome Financeiro 1 Motor 3 Prdio Central Financeiro 1 Motor 3 Prdio Central Financeiro 1 Motor 3 Prdio Central Financeiro 1 Motor 3 Nmero 5 10 20 5 10 20 5 10 20 5 10 Localizao So Paulo Rio Claro Campinas So Paulo Rio Claro Campinas So Paulo Rio Claro Campinas So Paulo Rio Claro

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 40

Unimar - Universidade de Marlia

F.C.T.

40404040 50505050 50505050 50505050

20 20 20 20

Prdio Central Financeiro 1 Motor 3 Prdio Central

20 5 10 20

Campinas So Paulo Rio Claro Campinas

Vamos agora selecionar as tuplas resultantes que esto devidamente relacionadas que so as que possuem o mesmo valor em nmero do projeto e nmero e cuja localizao seja Campinas. consulta17

= rg_empregado, (CONSULTA16) ) Campinas)

nmero

((nmero_projeto

nmero)

.and.

(localizao

Tabela consulta17 RG 40404040 50505050 Nmero 20 20

A operao produto cartesiano no muito utilizada por no oferecer um resultado otimizado. Veja o tem seguinte.

4.5.6. Operao Juno


A operao juno atua de forma similar operao produto cartesiano, porm, a tabela resultante conter apenas as combinaes das tuplas que se relacionam de acordo com uma determinada condio de juno. A forma geral da operao juno entre duas tabelas R e S a seguinte:

<condio de juno> S

Leve em considerao a consulta a seguir: encontre todos os funcionrios que desenvolvem projetos em Campinas; consulta18 = EMPREGADOS/PROJETOS
Tabela consulta18 RG_Empregado 20202020 20202020 30303030 40404040 50505050 Nmero_Projeto 5 10 5 20 20 Nome Financeiro 1 Motor 3 Financeiro 1 Prdio Central Prdio Central Nmero 5 10 5 20 20 Localizao So Paulo Rio Claro So Paulo Campinas Campinas

nmero_projeto = nmero PROJETOS

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 41

Unimar - Universidade de Marlia

F.C.T.

consulta19 =

localizao = Campinas (CONSULTA18)


Nmero_Projeto 20 20 Nome Prdio Central Prdio Central Nmero 20 20 Localizao Campinas Campinas

Tabela consulta18 RG_Empregado 40404040 50505050

4.6. SQL - Structured Query Language


SQL um conjunto de declaraes que utilizado para acessar os dados utilizando gerenciadores de banco de dados. Nem todos os gerenciadores utilizam SQL. SQL no uma linguagem procedural pois processa conjuntos de registros, ao invs de um por vez, provendo navegao automtica atravs dos dados, permitindo ao usurio manipular tipos complexos de dados. SQL pode ser utilizada para todas as atividades relativas a um banco de dados podendo ser utilizada pelo administrador de sistemas, pelo DBA, por programadores, sistemas de suporte tomada de decises e outros usurios finais.

4.6.1. Definio de Dados Utilizando SQL


4.6.1.1. Comando CREATE TABLE O comando create table permite ao usurio criar uma nova tabela (ou relao). Para cada atributo da relao definido um nome, um tipo, mscara e algumas restries. Os tipos de uma coluna so: char(n): caracteres e strings onde n o nmero de caracteres; integer: inteiros float: ponto flutuante; decimal(m,n): onde m o nmero de casas inteiras e n o nmero de casas decimais. A restrio not null indica que o atributo deve ser obrigatoriamente preenchido; se no for especificado, ento o default que o atributo possa assumir o valor nulo. A forma geral do comando create table ento : create table <nome_tabela> ( <nome_coluna1> <tipo_coluna1> <nome_coluna2> <tipo_coluna2> : <nome_colunan> <tipo_colunan> <NOT NULL>, <NOT NULL>, <NOT NULL> );

Por exemplo, para criar a tabela EMPREGADOS do apndice A, teramos o seguinte comando: create table EMPREGADOS ( nome rg char (30) integer NOT NULL, NOT NULL, Pgina 42

GEEK BRASIL http://www.geekbrasil.com.br

Unimar - Universidade de Marlia cic depto rg_supervisor salario, 4.6.1.2. Comando DROP TABLE integer, integer integer, decimal (7,2)

F.C.T.

NOT NULL, NOT NULL );

O comando drop table permite a excluso de uma tabela (relao) em um banco de dados. A forma geral para o comando drop table : drop table <nome_tabela>; Por exemplo, para eliminar a tabela EMPREGADOS do apndice A teramos o seguinte comando: drop table EMPREGADOS; Observe que neste caso, a chave da tabela EMPREGADOS, (rg) utilizada como chave estrangeira ou como chave primria composta em diversos tabelas que devem ser devidamente corrigidas. Este processo no assim to simples pois, como vemos neste caso, a excluso da tabela EMPREGADOS implica na alterao do projeto fsico de diversas tabelas. Isto acaba implicando na construo de uma nova base de dados. 4.6.1.3. Comando ALTER TABLE O comando alter table permite que o usurio faa a incluso de novos atributos em uma tabela. A forma geral para o comando alter table a seguinte: alter table <nome_tabela> add <nome_coluna> <tipo_coluna>; No caso do comando alter table, a restrio NOT NULL no permitida pois assim que se insere um novo atributo na tabela, o valor para o mesmo em todas as tuplas da tabela recebero o valor NULL.

4.6.2. Consultas em SQL


4.6.2.1. O comando SELECT O comando select permite a seleo de tuplas e atributos em uma ou mais tabelas. A forma bsica para o uso do comando select : select from where <lista de atributos> <lista de tabelas> <condies>;

Por exemplo, para selecionar o nome e o rg dos funcionrios que trabalham no departamento nmero 2 na tabela EMPREGADOS utilizamos o seguinte comando: select nome, rg from EMPREGADOS where depto = 2; obteremos ento o seguinte resultado: GEEK BRASIL http://www.geekbrasil.com.br Pgina 43

Unimar - Universidade de Marlia

F.C.T.

Nome Fernando Ricardo Jorge

RG 20202020 30303030 40404040

A consulta acima originria da seguinte funo em lgebra relacional:

nome, rg (depto = 2 (EMPREGADOS));


Em SQL tambm permitido o uso de condies mltiplas. Veja o exemplo a seguir: select nome, rg, salario from EMPREGADOS where depto = 2 AND salario > 2500.00; que fornece o seguinte resultado:
Nome Jorge RG 40404040 Salrio 4.200,00

e que originria da seguinte funo em lgebra relacional:

nome, rg, salario (depto = 2 .and. salario > 3500.00(EMPREGADOS));


A operao select-from-where em SQL pode envolver quantas tabelas forem necessrias. Leve em considerao a seguinte consulta: selecione o nmero do departamento que controla projetos localizados em Rio Claro; select t1.numero_depto from departamento_projeto t1, projeto t2 where t1.numero_projeto = t2.numero; Na expresso SQL acima, t1 e t2 so chamados alias (apelidos) e representam a mesma tabela a qual esto referenciando. Um alias muito importante quando h redundncia nos nomes das colunas de duas ou mais tabelas que esto envolvidas em uma expresso. Ao invs de utilizar o alias, possvel utilizar o nome da tabela, mas isto pode ficar cansativo em consultas muito complexas alm do que, impossibilitaria a utilizao da mesma tabela mais que uma vez em uma expresso SQL. Considere a seguinte consulta: selecione o nome e o rg de todos os funcionrios que so supervisores; select e1.nome, e1.rg from empregado e1, empregado e2 where e1.rg = e2.rg_supervisor; que gera o seguinte resultado:
Nome Joo Luiz Fernando RG 10101010 20202020

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 44

Unimar - Universidade de Marlia A consulta acima decorrente da seguinte expresso em lgebra relacional:

F.C.T.

nome, rg (

EMPREGADOS tg_t1 = rg_supervisor_t2 EMPREGADOS);

O operador * dentro do especificador select seleciona todos os atributos de uma tabela, enquanto que a excluso do especificador where faz com que todas as tuplas de uma tabela sejam selecionadas. Desta forma, a expresso: select * from empregados; gera o seguinte resultado:
Nome Joo Luiz Fernando Ricardo Jorge Renato RG 10101010 20202020 30303030 40404040 50505050 CIC 11111111 22222222 33333333 44444444 55555555 Depto. 1 2 2 2 3 RG Supervisor NULO 10101010 10101010 20202020 20202020 Salrio 3.000,00 2.500,00 2.300,00 4.200,00 1.300,00

Diferente de lgebra relacional, a operao select em SQL permite a gerao de tuplas duplicadas como resultado de uma expresso. Para evitar isto, devemos utilizar o especificador distinct. Veja a seguir os exemplos com e sem o especificador distinct. select depto from empregado; que gera os seguintes resultados:
Depto. 1 2 2 2 3 Depto. 1 2 3

select distinct depto from empregado;

Podemos gerar consultas aninhadas em SQL utilizando o espeficicador in, que faz uma comparao do especificador where da consulta mais externa com o resultado da consulta mais interna. Considere a consulta a seguir:

selecione o nome de todos os funcionrios que trabalham em projetos localizados em Rio Claro; select e1.nome, e1.rg, e1.depto GEEK BRASIL http://www.geekbrasil.com.br Pgina 45

Unimar - Universidade de Marlia from empregado e1, empregado_projeto e2 where e1.rg = e2.rg_empregado and e2.numero_projeto in ( select numero from projeto where localizacao = Rio Claro);

F.C.T.

Para selecionar um conjunto de tuplas de forma ordenada devemos utilizar o comando order by. Leve em considerao a seguinte consulta: selecione todos os empregados por ordem alfabtica: select nome, rg, depto from empregado order by nome;

4.6.3. Inseres e Atualizaes


Para elaborar inseres em SQL, utiliza-se o comando insert into. A forma geral para o comando insert into : insert into values <nome da tabela> <(lista de colunas)> <(lista de valores)>;

Considere a seguinte declarao: insira na tabela empregados, os seguintes dados: nome: Jorge Goncalves rg: 60606060 cic: 66666666 departamento: 3 rg_supervisor: 20202020 salrio: R$ 4.000,00 insert into values ou ainda: insira na tabela empregados os seguintes dados: nome: Joao de Campos rg: 70707070 cic: 77777777 departamento: 3 salrio: R$2.500,00 insert into values empregados (nome, rg, cic, depto, salario) (Joao de Campos, 70707070, 77777777, 3, 2500,00); Pgina 46 empregados (Jorge Goncalves, 60606060, 66666666, 3, 20202020, 4000,00);

GEEK BRASIL http://www.geekbrasil.com.br

Unimar - Universidade de Marlia

F.C.T.

Como na primeira insero todos os campos foram inseridos, ento no foi necessrio especificar o nome das colunas. Porm, na segunda insero, o campo rg_supervisor no foi inserido, ento especificou-se as colunas. Outra forma de se elaborar esta insero seria: insert into values empregados (Joao de Campos, 70707070, 77777777, 3, , 2500,00);

Neste caso, utilizou-se os caracteres para se declarar que um valor nulo seria inserido nesta coluna. Para se efetuar uma alterao em uma tabela, utilizado o comando update. A forma geral do comando update : update set where <tabela> <coluna> = <expresso> <condio>

Considere a seguinte declarao: atualize o salrio de todos os empregados que trabalham no departamento 2 para R$ 3.000,00; update set where empregado salario = 3.000,00 depto = 2;

Para se eliminar uma tupla de uma tabela, utiliza-se o comando delete. A forma geral do comando update : delete from <tabela> where <condio>; Leve em considerao a seguinte expresso: elimine os registros nos quais o empregado trabalhe no departamento 2 e possua salrio maior que R$ 3.500,00; delete from empregado where salario > 3.500,00 and depto = 2; Nos casos de atualizao que foram vistos, todas as <condies> podem ser uma consulta utilizando o comando select, onde o comando ser aplicado sobre todos os registros que satisfizerem as condies determinadas pelo comando de seleo.

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 47

Unimar - Universidade de Marlia

F.C.T.

5. Bibliografia
Fundamentals of Database Systems; Ramez Elmasri, Shamkant Navathe; The Benjamin CummingsPublishing Company; 1989; Sistema de Banco de Dados; Henry F. Korth, Abraham Silberschatz; Makro Books; 1995; SQL Language - Oracle Reference Manual; Version 7.2;

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 48

Unimar - Universidade de Marlia

F.C.T.

Apndice A - Exemplo de um Banco de Dados


Tabela EMPREGADO Nome Joo Luiz Fernando Ricardo Jorge Renato RG 10101010 20202020 30303030 40404040 50505050 CIC 11111111 22222222 33333333 44444444 55555555 Depto. 1 2 2 2 3 RG Supervisor NULO 10101010 10101010 20202020 20202020 Salrio 3.000,00 2.500,00 2.300,00 4.200,00 1.300,00

Tabela DEPARTAMENTO Nome Contabilidade Engenharia Civil Engenharia Mecnica Nmero 1 2 3 RG Gerente 10101010 30303030 20202020

Tabela PROJETO Nome Financeiro 1 Motor 3 Prdio Central Nmero 5 10 20 Localizao So Paulo Rio Claro Campinas

Tabela DEPENDENTES RG Responsvel 10101010 10101010 20202020 20202020 30303030 Nome Dependente Jorge Luiz Fernanda Angelo Adreia Dt. Nascimento 27/12/86 18/11/79 14/02/69 10/02/95 01/05/90 Relao Filho Filho Conjuge Filho Filho Sexo Masculino Masculino Feminino Masculino Feminino

Tabela DEPARTAMENTO_PROJETO Nmero Depto. 2 3 2 Nmero Projeto 5 10 20

Tabela EMPREGADO_PROJETO RG Empregado 20202020 20202020 30303030 40404040 50505050 Nmero Projeto 5 10 5 20 20 Horas 10 25 35 50 35

GEEK BRASIL http://www.geekbrasil.com.br

Pgina 49