Sistemas de Banco Dados - Unimar - Universidade de Marília

Embed Size (px)

Citation preview

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    1/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 1

    Apresentao

    Este curso tem como objetivo, oferecer uma noo geral sobre a construo de sistemasde banco de dados. Para isto, necessrio estudar modelos para a construo de projetoslgicos 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 f sicos, ser estudado o modelo Relacional comooriginalmente proposto por Codd.

    Para eliminar dependncia de dados, utilizaremos a normalizao, abordando a 1a, a 2a, a3a Formas Normais, propostas originalmente por Codd.

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

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    2/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 2

    1. Introduo e Conceitos Gerais

    A tecnologia aplicada aos mtodos de armazenamento de informaes vem crescendo egerando 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 devidamenterelacionados. Por dados podemos compreender como fatos conhecidos que podem serarmazenados e que possuem um significado implcito. Porm, o significado do termobanco dedados mais restrito que simplesmente a definio dada acima. Um banco de dados possui asseguintes propriedades:

    um banco de dados uma coleo lgica coerente de dados com um significadoinerente; uma disposio desordenada dos dados no pode ser referenciada como umbanco 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 automaticamenterefletida no banco de dados.

    Um banco de dados pode ser criado e mantido por um conjunto de aplicaesdesenvolvidas especialmente para esta tarefa ou por um Sistema Gerenciador de Banco deDados (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 aplica es que manipulamo mesmo chamado deSistema de Banco de Dados.

    1.1. Abordagem Banco de Dados X Abordagem ProcessamentoTradicional 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 doSGBD, o qual contm informaes como a estrutura de cada arquivo, o tipo e o formato dearmazenamento de cada tipo de dado, restries, etc. A informao armazenada no catlogo chamada de Meta Dados. No processamento tradicional de arquivos, o programa que irmanipular os dados deve conter este tipo de informao, ficando limitado a manipular asinformaes que o mesmo conhece. Utilizando a abordagem banco de dados, a aplicao podemanipular 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 naalterao no cdigo fonte de todos os programas. Jna abordagem banco de dados, a estrutura alterada apenas no catlogo, no alterando os programas.

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    3/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 3

    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, semfornecer muitos detalhes de como as informaes so armazenadas. Um modelo de dados

    uma abstrao de dados que

    utilizada para fornecer esta representao conceitual utilizandoconceitos lgicos como objetos, suas propriedades e seus relacionamentos. A estruturadetalhada 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 deusurios, importante que estes usurios possam tervisesdiferentes da base de dados. Umaviso definida como um subconjunto de uma base de dados, formando deste modo, umconjunto virtualde informaes.

    1.2. Usurios

    Para um grande banco de dados, existe um grande nmero de pessoas envolvidas, desde oprojeto, uso atmanuteno.

    1.2.1. Administrador de Banco de Dados (DBA)

    Em um ambiente de banco de dados, o recurso primrio o banco de dados por si se o

    recurso secundrio o SGBD e os softwares relacionados. A administrao destes recursos cabeao Administrador de Banco de Dados, o qual responsvel pela autorizao de acesso ao bancode dados e pela coordenao e monitorao de seu uso.

    SGBD

    Programas de Aplicao/Consulta

    Software para processar manipulao

    Software de Acesso aos Dados

    Meta Dados Dados

    Sistema de Banco

    de Dados

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    4/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 4

    1.2.2. Projetista de Banco de Dados

    O Projetista de Banco de Dados responsvel pela identificao dos dados que devemser armazenados no banco de dados, escolhendo a estrutura correta para representar e

    armazenar dados. Muitas vezes, os projetistas de banco de dados atuam comostaffdo DBA,assumindo outras responsabilidades aps a construo do banco de dados. funo doprojetista 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 consultapara especificar suas necessidades;

    usurios novatos ou paramtricos: utilizam pores pr-definidas do banco de dados,utilizando consultas preestabelecidas que jforam 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 especificaespara transaes que atendam estes requisitos, e os programadores implementam estasespecificaes como programas, testando, depurando, documentando e dando manuteno nomesmo. 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;

    a redundncia desnecessria de dados levam ao armazenamento excessivo de

    informaes, ocupando espao que poderia estar sendo utilizado com outrasinformaes.

    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 possamacessar o banco.

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    5/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 5

    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 fornecerrecursos 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 utilizadopelo DBA para criarcontas e especificar as restries destas contas; o controle de restriesse 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 quantode hardware.

    1.3.6. Quando no Utilizar um SGBD

    Em algumas situaes, o uso de um SGBD pode representar uma carga desnecessria aoscustos 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 aplicaesno 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 sercomprometidas. A sobrecarga causada pelo uso de um SGBD e a madministrao justificam autilizao da abordagem processamento tradicional de arquivos em casos como:

    o banco de dados e as aplicaes so simples, bem definidas e no se esperamudanas no projeto;

    a necessidade de processamento em tempo real de certas aplicaes, que soterrivelmente prejudicadas pela sobrecarga causada pelo uso de um SGBD;

    no havermltiplo acesso ao banco de dados.

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    6/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 6

    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 soarmazenados. Um modelo de dados um conjunto de conceitos que podem ser utilizadospara descrever a estruturalgica e fsica de um banco de dados. Por estrutura podemoscompreender o tipo dos dados, os relacionamentos e as restries que podem recair sobre osdados.

    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 bancode dados dobanco de dadospor si prprio. A descrio de um banco de dados chamada deesquema 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 vezque uma alterao no banco de dados feita.

    O SGBD responsvel por garantir que toda instncia do banco de dados satisfaa aoesquema do banco de dados, respeitando sua estrutura e suas restries. O esquema de umbanco de dados tambm pode ser chamado deintensode um banco de dados e a instncia deextensode um banco de dados.

    2.3. A Arquitetura Trs Esquemas

    A principal meta da arquitetura trs esquemas (figura 2) separar as aplicaes dousurio 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 fornecedetalhes do modo como os dados esto fisicamente armazenados;

    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 grupode usurios teracesso.

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    7/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 7

    Figura 2: Arquitetura Trs Esquemas

    2.4. Independncia de Dados

    A independncia de dados pode ser definida como a capacidade de se alterar umesquema em um nvel em um banco de dados sem ter que alterar um n vel 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;

    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.

    Viso Externa 1 Viso Externa n

    Esquema Conceitual

    Esquema Interno

    ...

    Mapeamento

    Conceitual Externo

    MapeamentoConceitual Interno

    Banco de Dados Armazenado

    NVELINTERNO

    NVELCONCEITUAL

    NVELEXTERNO

    Usurios Finais

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    8/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 8

    2.5. As Linguagens para Manipulao de Dados

    Para a definio dos esquemas conceitual e interno pode-se utilizar uma linguagemchamada DDL (Data Definition Language - Linguagem de Definio de Dados). O SGBDpossui um compilador DDL que permite a execuo das declaraes para identificar asdescries dos esquemas e para armazen-las no catlogo do SGBD. A DDL utilizada em

    SGBDs onde a separao entre os nveis interno e conceitual n

    o

    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 Definiode Armazenamento) para a especificao do esquema interno. A especificao do esquemaconceitual fica por conta da DDL.

    Em um SGBD que utiliza a arquitetura trs esquemas, necessria a utilizao de maisuma linguagem para a definio de vises, a VDL (Vision Definition Language - Linguagem deDefinio 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 emquinas de grande porte;

    localizao: um SGBD pode ser localizado ou distribudo; se ele for localizado, entotodos 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.

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    9/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 9

    Figura 3: Estrutura de um Sistema Gerenciador de Banco de Dados

    SGBD

    programas de

    aplicaochamadas 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

    gerenciador de

    arquivos

    arquivo de

    dados

    dicionrio de

    dados

    Memria de

    Disco

    usurios

    simples

    programadores de

    aplicaesusurios

    ocasionais DBA

    Usurios

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    10/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 10

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

    Figura 4: Fases do 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

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    11/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 11

    3.2. Entidades e Atributos

    O objeto bsico tratado pelo modelo ER a entidade, que pode ser definida como umobjeto do mundo real, concreto ou abstrato e que possui existncia independente. Cada entidade

    possui um conjunto particular de propriedades que a descreve chamado atributos. Umatributo pode ser dividido em diversas sub-partes com significado independente entre si,

    recebendo o nome de atributo composto

    . Um atributo que n

    o pode ser subdividido

    chamado deatributo simplesouatmico.

    Os atributos que podem assumir apenas um determinado valor em uma determinada

    instncia denominado atributo simplesmente valorado, enquanto que um atributo que podeassumir diversos valores em uma mesma instncia denominadomulti valorado.

    Um atributo que gerado a partir de outro atributo chamado deatributo 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 identificadapor seu nome e pelo conjunto de atributos que definem suas propriedades. A descrio do tipoentidade chamada de esquema do tipo entidade, especificando o nome do tipo entidade, onome 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 achave. Um tipo entidade possui um atributo cujos valores so distintos para cada entidadeindividual. Este atributo chamadoatributo chave e seus valores podem ser utilizados paraidentificar 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 atributochave.

    Cada atributo simples de um tipo entidade est associado com um conjunto de valores

    denominadodomnio, o qual especifica o conjunto de valores que podem ser designados paraeste 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 deassociaes entre entidades deste tipo. Informalmente falando, cada instncia derelacionamento r1 em R uma associao de entidades, onde a associao inclui exatamenteuma 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 exemploentre 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.

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    12/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 12

    Figura 5: Exemplo de um Relaciomento

    3.5. Grau de um Relacionamento

    Ograude um tipo relacionamento o nmero de tipos entidade que participam do tiporelacionamento. 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 daentidade 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 pap

    is diferentes. Algumasvezes, o papel torna-se essencial para distinguir o significado de cada participao. Isto muitocomum emelacionamentos recursivos.

    Um relacionamento recursivo um relacionamento entre entidades do mesmo tipo

    entidade. Veja o exemplo da figura 6.

    d3

    d2

    d1

    e7

    e6

    e5

    e4

    e3

    e2

    e1

    EMPREGADO

    Trabalha Para

    DEPARTAMENTO

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    13/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 13

    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 possveiscombinaes das entidades participantes. Estas restries so derivadas de restries impostaspelo estado destas entidades no mini-mundo. Veja o exemplo da figura 7.

    Figura 7 - Relacionamento EMPREGADO gerencia DEPARTAMENTO

    No exemplo da figura 7, temos a seguinte situao: um empregado pode gerenciar apenasum departamento, enquanto que um departamento, pode ser gerenciado por apenas um

    empregado. A este tipo de restrio, ns chamamos cardinalidade. A cardinalidade indica o

    e5

    e4

    e3

    e2

    e1

    EMPREGADO

    Supervisiona

    Supervisiona

    Supervisionado

    d3

    d2

    d1

    e7

    e6

    e5

    e4

    e3

    e2

    e1

    EMPREGADO

    Gerencia

    DEPARTAMENTO

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    14/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 14

    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.

    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 serparcialou total. Veja o exemplo dafigura 7. A participao do empregado parcial pois nem todo empregado gerencia umdepartamento, porm a participao do departamento neste relacionamento total pois tododepartamento 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. Jno exemplo

    da figura 5, ambas as participaes so totais pois todo empregado precisa trabalhar em umdepartamento e todo departamento tem que ter empregados trabalhando nele.

    Estas restries so chamadas derestries 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 entidadedepartamento. 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 devermesmo ficar no tipo relao. Veja oexemplo da figura 8. Caso queiramos armazenar quantas horas cada empregado trabalhou em

    cada projeto, ento este deverser um atributo do relacionamento.

    p3

    p2

    p1

    e4

    e3

    e2

    e1

    EMPREGADO

    Trabalha Em

    PROJETO

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    15/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 15

    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 atributospodem 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 derelacionamento identificador. Veja o exemplo da figura 9.

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

    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 diversosrelacionamentos 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 formacompleta como se criassemos um relacionamento ternrio. Veja o resultado como fica no

    exemplo da figura 10.

    DEPENDENTE

    p3

    p2

    p1e2

    e1

    EMPREGADO

    Possui Dependentes

    C1M1

    data 2data 1

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    16/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 16

    Figura 10 - Relacionamento T ernrio

    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.

    O diagrama ER fornece uma viso lgica do banco de dados, fornecendo um conceitomais generalizado de como esto estruturados os dados de um sistema.

    Os objetos que compem o diagrama ER esto listados a seguir, na figura 11.

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    17/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 17

    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 paraa modelagem de informaes mais complexas. O modelo Entidade RelacionamentoExtendido (ERE) visa fornecer esta semntica para permitir a representao de informaescomplexas. 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 eespecializaoe o conceito de herana de atributos.

    3.8.1. Subclasses, Superclasses e Especializaes

    TIPO

    ENTIDADE

    TIPO ENTIDADE

    FRACA

    TIPO

    RELACIONAMENTO

    TIPO

    RELACIONAMENTO

    IDENTIFICADOR

    ATRIBUTO

    ATRIBUTO

    CHAVE

    ATRIBUTO

    MULTI

    VALORADO

    ATRIBUTO

    COMPOSTO

    ATRIBUTO

    DERIVADO

    E1 E2RE1 E2R1 N

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

    Taxa de Cardinalidade 1:N

    para E1:E2 em R

    R E1(min, max)

    Restrio Estrutural (min,max) naParticipao de E1 em R

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    18/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 18

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

    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 tr i l ngue) e os

    idiomas no qual possui fluncia verbal e escrita.

    Se as informaes nmero do CREA, especialidade, tipo e idiomas forem representadasdiretamente no tipo entidade empregado estaremos representando informaes de um conjuntolimitados de entidades empregado para os todos os funcionrios da empresa. Neste caso,

    podemo criar duas subclasses do tipo entidade empregado: engenheiro e secretria, as quaisiro conter as informaes acima citadas. Alm disto, engenheiro e secretria podem terrelacionamentos 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 dasuperclasse. 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.

    Figura 12 - Representao de Superclasse e Subclasses

    Engenheiro

    Empregado

    Secretria

    nome dt. nasc.

    no. funcional

    rg

    sexo

    endereo

    No registro

    especializao

    qualificao

    idiomas

    d

    Funo

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    19/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 19

    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.

    Figura 13 - Duas Especializaes para Empregado:Funoe 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.

    Figura 14 - Relacionamentos Entre Subclasses e Entidades

    Empregado

    Engenheiro Secretria Horista Mensalista

    d d

    Funo Categoria Salarial

    Engenheiro

    Empregado

    Secretria

    Projeto

    participa

    desenvolvido

    or N

    N

    lidera1

    liderado

    N

    d

    Funo

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    20/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 20

    O processo de especializaonos 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 daespecializao, no qual so suprimidas as diferenas entre diversos tipos entidades,identificando suas caractersticas comuns e generalizando estas entidades em uma superclasse

    Figura 15 - Tipos EntidadesEngenheiroe Secretria

    Figura 16 - GeneralizaoEmpregadopara os Tipos Entidades Engenheiro e Secretria

    importante destacar que existe diferena semntica entre a especializao e ageneralizao. Na especializao, podemos notar que a ligao entre a superclasse e assubclasses feita atravs de um trao simples, indicando participao parcial por parte dasuperclasse. 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

    Engenheiro Secretria

    No registro

    especializao

    qualificao

    idiomas

    no. funcional

    nome nomerg rg

    no. funcional

    Engenheiro

    Empregado

    Secretria

    nome

    no. funcional

    rg

    no registro

    especializao

    qualificao

    idiomas

    d

    Funo

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    21/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 21

    ligao entre a superclasse e as subclasses feita atravs de um trao duplo, indicandoparticipao total por parte da superclasse. Analisando o exemplo da figura 16, observadoque um empregado obrigado a ser umengenheiroou uma secretria.

    A letra d dentro do crculo que especifica uma especializao ou uma generalizaosignifica disjuno. Uma disjuno em uma especializao ou generalizao indica que umaentidade 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 superclasseEmpregado, as quais so restringidas atravs de uma disjuno. Neste caso, um empregadopode ser umengenheiroou uma secretriae o mesmo pode ser horistaou mensalista.

    Alm da disjuno podemos ter um overlap, representado pela letra o. No caso dooverlap, uma entidade de uma superclasse pode ser membro de mais que uma subclasse emuma especializao ou generalizao. Analise a generalizao no exemplo da figura 17.Suponha que uma pea fabricada em uma tornearia pode ser manufaturada ou torneada ouainda, pode ter sidomanufaturadae torneada.

    Figura 17 - Uma Generalizao comOverlap

    3.8.5.Latticeou Mltipla Herana

    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 oseguinte exemplo:

    Uma construtora possui diversos funcionrios, os quais podem ser engenheiros ousecretrias. 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:

    Manufaturada

    Pea

    Torneada

    Descrio

    no. da pea

    Data

    Ordem Servio

    No. Projeto

    Preo

    o

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    22/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 22

    Figura 18 - UmLatticecom a Subclasse Gerente Compartilhada

    Neste caso ento, um gerente ser um funcionrio que alm de possuir as caractersticas

    prprias deGerente, herdaras caractersticas deEngenheiroe deMensalista.

    Empregado

    Secretaria Engenheiro Mensalista Horista

    d d

    Funo CategoriaSalarial

    Gerente

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    23/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 23

    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, oufalando 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 serconsiderado uma tabela.

    Quando uma relao pensada como uma tabela de valores, cada linha nesta tabelarepresenta uma coleo de dados relacionados. Estes valores podem ser interpretados comofatos 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 armazenadosem 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 deuma tabela chamada de tupla; o nome de cada coluna chamado de atributo; o tipo de dado

    que descreve cada coluna chamado dedomnio.

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

    RG Numrico 10,0 03000000-25999999

    Nome Caracter 30 a-z, A-Z

    Salrio Numrico 5,2 00100,00-12999,99

    Um esquema de relao R, denotado por R(A1, A2, ... , An), onde cada atributo Ai onome do papel desempenhado por um domnio D no esquema relao R, onde D chamadodomnio de Ai e denotado por dom(Ai). O grau de uma relao R o nmero de atributospresentes em seu esquema de relao.

    Ainstncia rde um esquema relao denotado porr(R) um conjunto de n-tuplasr = [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 acombinao 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 quet1[SC] t2[SC].

    SC chamada de superchave de um esquema de relao. Toda relao possui ao menosuma 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 qualqueratributo A de K, resta ainda um conjunto de atributos Kque no uma superchave deR. Uma

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    24/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 24

    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

    Nome Dependente Dt . Nascimento Relao Sexo

    10101010 Jorge 27/12/86 Filho Masculino

    10101010 Luiz 18/11/79 Filho Masculino

    20202020 Fernanda 14/02/69 Conjuge Feminino

    20202020 Angelo 10/02/95 Filho Masculino

    30303030 Fernanda 01/05/90 Filho 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 s o chamadas de

    chaves candidatas. Uma destas chaves candidatas deve ser escolhida comochave primria.

    Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um

    relacionamento entre as tabelasR1e R2.

    Tabela DEPARTAMENTO

    Nome Nmero RG Geren te

    Contabilidade 1 10101010

    Engenharia Civil 2 30303030

    Engenharia Mecnica 3 20202020

    Tabela EMPREGADO

    Nome RG CIC Depto. RG Supervisor Salrio

    Joo Luiz 10101010 11111111 1 NULO 3.000,00

    Fernando 20202020 22222222 2 10101010 2.500,00

    Ricardo 30303030 33333333 2 10101010 2.300,00

    Jorge 40404040 44444444 2 20202020 4.200,00

    Renato 50505050 55555555 3 20202020 1.300,00

    4.3. Mapeamento do Modelo Entidade Relacionamento para o

    Modelo Relacional

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    25/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 25

    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 T1no Modelo Relacional que

    inclua todos os atributos simples deE; 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 deT1;

    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 achave 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 T 2 respectivamente, devemos escolher a chave primria de uma

    das relaes (T1,T2)e inser-la como chave estrangeira na outra relao; se um dos ladosdo relacionamento tiver participao total e outro parcial, ento interessante que achave do lado com participaoparcialseja inserido como chave estrangeira no lado quetem participaototal;

    4. Para cada relacionamento regular com cardinalidade 1:N entre entidades E1 e E2respectivamente e que geraram as tabelas T1 e T2 respectivamente, deve-se inserir a

    chave primria deT1como chave estrangeira emT2;

    5. Para cada relacionamento regular com cardinalidade N:N entre entidades E1e E2, cria-

    se 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 deE1e 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 contmA1; a chave primria de T1ser composta por A1 mais C; se

    A1for composto, ento a tabela T1deverconter todos os atributos de A1;

    7. Para cada relacionamento n-rio, n > 2, cria-se uma tabela T1, contendo todos osatributos do relacionamento; a chave primria deT1sercomposta pelos atributos chaves

    das entidades participantes do relacionamento;

    8. Converta cada especializao comm subclasses{S1, S2, ..., Sm}e superclasse SC, ondeos 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 atributosA(T) = {c, a1, a2, ..., an} e chave

    C(T)= c; crie uma tabelaTipara cada subclasseSi, 1 i m, com os atributos

    A(Ti)= {c} A(Si), ondeC(T)= c;

    8.2. Crie uma tabelaTipara cada subclasseSi, 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 atributotipo 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(S 1) ... A(S m)

    {t1, t2, ..., tm} e C(T) = c; esta opo para generalizaes comoverlapping, ecada 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 grandede valores nulos;

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    26/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 26

    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 umabase de dados. Suponha que o esquema de uma base de dados Rpossuan atributos

    A1, A2, ..., An; pense em R = { A1, A2, ... , An } como a representao universal da base dedados. Uma dependncia funcional, representada por X Y entre dois conjuntos de atributosXe Y que so subconjuntos de Respecificam uma restrio nas tuplas que podem compor umainstncia relao rde R. A restrio estabelece que para qualquer par de tuplas t1 e t2em rdeforma que t1.[X] = t2.[X], obrigado a existir t1.[Y] = t2.[Y]. Isto significa que os valores do

    componente Y em uma tupla emrdepende de, ou determinada pelosvalores do

    componente X. ParaX Yl-se:Y funcionalmente dependente de X, ouXinfere sobreY.

    Para a base de dados do apndice A temos como exemplo as seguintes dependncias

    funcionais:

    1. RG { Nome, CIC, Depto., RG_Supervisor, Salrio }

    2. Nmero_Projeto { Nome_Projeto, Localizao }

    3. { RG_Empregado, Nmero_Projeto } Horas

    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 oRG do empregadomais o nmero do projetodefine de forma nica o nmero de horas que o

    empregado trabalhou no projeto. A especificao das inferncias deve ser elaborada pelo

    E E EF

    c

    E E

    ou

    E E

    E E

    ou

    E E1 N

    E EN N

    1o Passo - Entidades Normais 2o Passo - Entidades Fracas

    3o Passo - Relacionamentos 1:1 4o Passo - Relacionamentos 1:N 5o Passo - Relacionamentos N:N

    E

    c

    mv

    6o Passo - Atrbs. Multi Valorados

    E E

    E

    7o Passo - Relacionamento n-rio

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    27/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 27

    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 eliminadosesquemas de relaes (tabelas) no satisfatrios, decompondo-os, atravs da separao de seusatributos em esquemas de relaes menos complexas mas que satisfaam as propriedadesdesejadas.

    O processo de normalizao como foi proposto inicialmente por Codd conduz umesquema de relao atravs de um bateria de testes para certificar se o mesmo estna 1a,2a e3a

    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:

    Telefone 1 EndereoCliente Cdigo Telefonen Rua No Cidade

    sendo que a mesma no estna 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, gerandoas seguintes tabelas como resultado:

    Cliente Cdigo Rua Nmero Cidade

    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 totalse removemos um atributo A qualquer do componenteX

    e desta forma, a dependncia funcional deixa de existir. A dependncia funcionalX Y uma

    dependncia funcional parcial se existir um atributo A qualquer do componenteX que pode

    ser removido e a dependncia funcionalX Yno deixa de existir.

    Veja a dependncia funcional 3 do tem4.4.1. Dependncia Funcional:

    { RG_Empregado, Nmero_Projeto } Horas

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    28/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 28

    uma dependncia funcional total, pois se removermos o atributo RG_Empregado ou o

    atributo Nmero_Projeto, a dependncia funcional deixa de existir.

    Uma tabelaT estna 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 funcionalmentedependente 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

    { Nome_Depto, RG_Ger_Depto }RG N

    o_Departamento

    No_Departamento { Nome_Depto, RG_Ger_Depto }

    Porm, verifique o caso da tabela abaixo:

    Empregado RG CIC Nome No_Funcional

    Neste caso, a dependncia transitiva:

    RG { Nome, No_Funcional }

    RG CIC

    CIC { Nome, No

    _Funcional }

    no valida pois o atributo CIC uma chave candidata.

    Uma tabela est na 3a

    Forma Normal se estiver na 2a

    Forma Normal e no houver

    dependncia transitiva entre atributos no chave.

    4.5. Algebra Relacional

    A lgebra relacional uma coleo de operaes cannicas que so utilizadas paramanipular as relaes. Estas operaes so utilizadas para selecionar tuplas de relaesindividuais e para combinar tuplas relacionadas de relaes diferentes para especificar umaconsulta em um determinado banco de dados. O resultado de cada operao uma novaoperao, a qual tambm pode ser manipulada pelalgebra relacional.

    Todos os exemplos envolvendo lgebra relacional implicam na utilizao do banco dedados descrito no apndice A.

    4.5.1. A Operao Select

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    29/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 29

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

    s ( )

    A letra grega s utilizada para representar a operao de seleo; uma expresso booleana aplicada sobre os atributos da relao e o nome da relao sobre a qual seraplicada a operaoselect.

    Exemplos:

    consulta1 = s salrio < 2.500,00(EMPREGADO)

    gera a seguinte tabela como resultado:

    Tabelaconsulta1

    Nome RG CIC Depto. RG Supervisor Salrio

    Ricardo 30303030 33333333 2 10101010 2.300,00

    Renato 50505050 55555555 3 20202020 1.300,00

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

    gera a seguinte tabela como resultado:

    Tabela consulta2

    RG Responsvel Nome Dependente Dt. Nascimento Relao Sexo

    30303030 Adreia 01/05/90 Filho Feminino

    As operaes relacionais que podem ser aplicadas na operaoselectso:

    , , , =,

    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. Aforma geral de uma operaoproject :

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    30/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 30

    p ()

    A letra grega p representa a operaoproject, representa a lista deatributos que o usurio deseja selecionar e representa a relao sobre aqual a operaoprojectseraplicada.

    Exemplos:

    consulta3 = p Nome, Dt. Nascimento(DEPENDENTES)

    gera a seguinte tabela como resultado:

    Tabela consulta3

    Nome Dependente Dt.

    Nascimento

    Jorge 27/12/86

    Luiz 18/11/79

    Fernanda 14/02/69

    Angelo 10/02/95

    Adreia 01/05/90

    4.5.3. Sequencialidade de Operaes

    As operaes project e select podem ser utilizadas de forma combinada, permitindo queapenas determinadas colunas de determinadas tuplas possam ser selecionadas.

    A forma geral de uma operao sequencializada :

    p(s()

    )Veja o seguinte exemplo:

    consulta4 = pnome, depto., salario(ssalario < 2.500,00(EMPREGADO))

    produz a tabela a seguir como resultado:

    Tabela consulta4

    Nome Depto. Salrio

    Ricardo 2 2.300,00

    Renato 3 1.300,00

    Aconsulta4pode ser reescrita da seguinte forma:

    consulta5 = ssalario < 2.500,00(EMPREGADO)

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    31/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 31

    Tabela consulta5

    Nome RG CIC Depto. RG Supervisor Salrio

    Ricardo 30303030 33333333 2 10101010 2.300,00

    Renato 50505050 55555555 3 20202020 1.300,00

    consulta6 = pnome, depto., salario

    (CONSULTA5)

    Tabela consulta6

    Nome Depto. Salrio

    Ricardo 2 2.300,00

    Renato 3 1.300,00

    porm mais elegante utilizar a forma descrita naconsulta4.

    4.5.4. Operaes Matemticas

    Levando em considerao que as relaes podem ser tratadas como conjuntos, podemosento 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:

    unio- o resultado desta operao representada por RS uma relaoT que incluitodas as tuplas que se encontram emRe todas as tuplas que se encontram em S;

    interseco- o resultado desta operao representada porRS uma relaoT queinclui as tuplas que se encontram emRe emS ao mesmo tempo;

    diferena - o resultado desta operao representada por R - S uma relao T queinclui todas as tuplas que esto emRmas 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= sdepto = 2(EMPREGADOS)

    Tabela consulta7

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    32/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 32

    Nome RG CIC Depto. RG Supervisor Salrio

    Fernando 20202020 22222222 2 10101010 2.500,00

    Ricardo 30303030 33333333 2 10101010 2.300,00

    Jorge 40404040 44444444 2 20202020 4.200,00

    Vamos agora selecionar os supervisores dos empregados que trabalham no departamento

    nmero 2.

    consulta8= prg_supervisor(CONSULTA7)

    Tabela consulta8

    RG Supervisor

    10101010

    20202020

    Vamos projetar apenas o rg dos empregados selecionados:

    consulta9= prg(CONSULTA7)

    Tabela consulta9

    RG

    20202020

    30303030

    40404040

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

    consulta10= CONSULTA8 CONSULTA9

    Tabela consulta10

    RG

    20202020

    30303030

    40404040

    10101010

    Leve em considerao a prxima consulta:

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    33/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 33

    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= prg_empregado(EMPREGADO/PROJETO)

    Tabela consulta11

    RG_Empregado

    20202020

    30303030

    40404040

    50505050

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

    consulta12= prg(sdepto = 2(EMPREGADOS)

    )Tabela consulta12

    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= prg_empregado(EMPREGADO/PROJETO)

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    34/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 34

    Tabela consulta14

    RG Empregado

    20202020

    30303030

    40404040

    50505050

    consulta15= prg(EMPREGADOS)

    Tabela consulta15

    RG

    10101010

    20202020

    30303030

    40404040

    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 duastabelas. Diferente da operaounio, oproduto cartesianono exige que as tuplas das tabelaspossuam exatamente o mesmo tipo. O produto cartesiano permite ento a consulta entre

    tabelas relacionadas utilizando uma condio de seleo apropriada. O resultado de umproduto cartesiano uma nova tabela formada pela combinao das tuplas das tabelas sobreas quais aplicou-se a operao.

    O formato geral doproduto cartesianoentre duas tabelasRe S :

    RC S

    Leve em considerao a seguinte consulta:

    encontre todos os funcionrios que desenvolvem projetos em Campinas;

    consulta16 = EMPREGADO/PROJETO CPROJETO

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    35/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 35

    Tabela consulta16

    RG E mp regado Nmero Projeto Nome Nmero Localizao

    20202020 5 Financeiro 1 5 S o Paulo

    20202020 5 Motor 3 10 Rio Claro

    20202020 5 Pr dio Central 20 Campinas

    20202020 10 Financeiro 1 5 S o Paulo

    20202020 10 Motor 3 10 Rio Claro

    20202020 10 Pr dio Central 20 Campinas

    30303030 5 Financeiro 1 5 S o Paulo

    30303030 5 Motor 3 10 Rio Claro

    30303030 5 Pr dio Central 20 Campinas

    40404040 20 Financeiro 1 5 S o Paulo

    40404040 20 Motor 3 10 Rio Claro

    40404040 20 Pr dio Central 20 Campinas

    50505050 20 Financeiro 1 5 S o Paulo

    50505050 20 Motor 3 10 Rio Claro

    50505050 20 Pr dio Central 20 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 sejaCampinas.

    consulta17 = prg_empregado, nmero (s(nmero_projeto = nmero) .and. (localizao =

    Campinas)(CONSULTA16)

    )

    Tabela consulta17

    RG Nmero

    40404040 20

    50505050 20

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

    4.5.6. Operao Juno

    A operao juno atua de forma similar operao produto cartesiano, porm, atabela resultante conter apenas as combinaes das tuplas que se relacionam de acordo comuma determinada condio de juno. A forma geral da operaojunoentre duas tabelasReS a seguinte:

    R S

    Leve em considerao a consulta a seguir:

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    36/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 36

    encontre todos os funcionrios que desenvolvem projetos em Campinas;

    consulta18 = EMPREGADOS/PROJETOS nmero_projeto = nmero PROJETOS

    Tabelaconsulta18

    RG_Empregado Nmero_Projeto Nome Nmero Localizao

    20202020 5 Financeiro 1 5 S o Paulo

    20202020 10 Motor 3 10 Rio Claro

    30303030 5 Financeiro 1 5 S o Paulo

    40404040 20 Pr dio Central 20 Campinas

    50505050 20 Pr dio Central 20 Campinas

    consulta19= slocalizao = Campinas(CONSULTA18)

    Tabelaconsulta18

    RG_Empregado Nmero_Projeto Nome Nmero Localizao

    40404040 20 Pr dio Central 20 Campinas

    50505050

    20 Pr dio Central 20 Campinas

    4.6. SQL - Structured Query Language

    SQL um conjunto de declaraes que utilizado para acessar os dados utilizandogerenciadores 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 podendoser 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 comandocreate tablepermite ao usurio criar uma nova tabela (ou relao). Para cadaatributo da relao definido um nome, um tipo, mscara e algumas restries. Os tipos de umacoluna so:

    char(n): caracteres e strings onden o nmero de caracteres;

    integer: inteiros

    float: ponto flutuante;

    decimal(m,n): ondem o nmero de casas inteiras en o nmero de casas decimais.

    A restrio not null indica que o atributo deve ser obrigatoriamente preenchido; se nofor especificado, ento odefault que o atributo possa assumir o valor nulo.

    A forma geral do comandocreate tableento :

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    37/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 37

    create table ( ,

    ,

    :

    );

    Por exemplo, para criar a tabela EMPREGADOS do apndice A, teramos o seguinte

    comando:create table EMPREGADOS ( nome char (30) NOT NULL,

    rg integer NOT NULL,

    cic integer,

    depto integer NOT NULL,

    rg_supervisor integer,

    salario, decimal (7,2) NOT NULL );

    4.6.1.2. Comando DROP TABLE

    O comando drop table permite a excluso de uma tabela (relao) em um banco dedados.

    A forma geral para o comando drop table :

    drop table ;

    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 acabaimplicando 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 umatabela. A forma geral para o comandoalter table a seguinte:

    alter table add ;

    No caso do comando alter table, a restrio NOT NULL no permitida pois assim quese 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. Aforma bsica para o uso do comando select :

    select

    from

    where ;

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    38/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 38

    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:

    Nome RG

    Fernando 20202020

    Ricardo 30303030

    Jorge 40404040

    A consulta acima originria da seguinte funo emlgebra relacional:

    pnome, rg(sdepto = 2(EMPREGADOS));

    Em SQL tambm permitido o uso de condies mltiplas. Veja o exemplo a seguir:

    select nome, rg, salariofrom EMPREGADOS

    where depto = 2 AND salario > 2500.00;

    que fornece o seguinte resultado:

    Nome RG Salrio

    Jorge 40404040 4.200,00

    e que originria da seguinte funo em lgebra relacional:

    pnome, rg, salario(sdepto = 2 .and. salario > 3500.00(EMPREGADOS));

    A operao select-from-whereem 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 amesma tabela a qual esto referenciando. Um alias muito importante quando hredundncia 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 podeficar 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 RG

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    39/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 39

    Joo Luiz 10101010

    Fernando 20202020

    A consulta acima decorrente da seguinte expresso emlgebra relacional:

    pnome, rg( EMPREGADOS tg_t1 = rg_supervisor_t2 EMPREGADOS);

    O operador * dentro do especificador selectseleciona 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 RG CIC Depto. RG Supervisor Salrio

    Joo Luiz 10101010 11111111 1 NULO 3.000,00

    Fernando 20202020 22222222 2 10101010 2.500,00

    Ricardo 30303030 33333333 2 10101010 2.300,00

    Jorge 40404040 44444444 2 20202020 4.200,00

    Renato 50505050 55555555 3 20202020 1.300,00

    Diferente de lgebra relacional, a operao selectem SQL permite a gerao de tuplasduplicadas 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 select distinct depto

    from empregado; from empregado;

    que gera os seguintes resultados:

    Depto. Depto.

    1 1

    2 2

    2 3

    2

    3

    Podemos gerar consultas aninhadas em SQL utilizando o espeficicador in, que faz umacomparao do especificadorwhereda consulta mais externa com o resultado da consulta maisinterna. Considere a consulta a seguir:

    selecione o nome de todos os funcionrios que trabalham em projetos localizados em

    Rio Claro;

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    40/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 40

    select e1.nome, e1.rg, e1.depto

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

    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 ocomandoinsert into :

    insert into

    values ;

    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 empregados

    values ( Jorge Goncalves, 60606060, 66666666, 3, 20202020, 4000,00);

    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 empregados (nome, rg, cic, depto, salario)

    values (Joao de Campos, 70707070, 77777777, 3, 2500,00);

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    41/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 41

    Como na primeira insero todos os campos foram inseridos, ento no foi necessrioespecificar o nome das colunas. Porm, na segunda insero, o campo rg_supervisorno foiinserido, ento especificou-se as colunas. Outra forma de se elaborar esta insero seria:

    insert into empregados

    values (Joao de Campos, 70707070, 77777777, 3, , 2500,00);

    Neste caso, utilizou-se os caracteres para se declarar que um valor nulo seria inseridonesta coluna.

    Para se efetuar uma alterao em uma tabela, utilizado o comando update. A formageral do comandoupdate :

    update

    set =

    where

    Considere a seguinte declarao:

    atualize o salrio de todos os empregados que trabalham no departamento 2 para

    R$ 3.000,00;

    update empregado

    set salario = 3.000,00

    where depto = 2;

    Para se eliminar uma tupla de uma tabela, utiliza-se o comando delete. A forma geral do

    comandoupdate :

    delete from

    where ;

    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 podem ser umaconsulta utilizando o comando select, onde o comando ser aplicado sobre todos os registros

    que satisfizerem as condies determinadas pelo comando de seleo.

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    42/43

    Unimar - Universidade de Marlia F.C.T.

    Sistemas de Bancos de Dados Pgina 42

    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;

  • 7/24/2019 Sistemas de Banco Dados - Unimar - Universidade de Marlia

    43/43

    Unimar - Universidade de Marlia F.C.T.

    Apndice A - Exemplo de um Banco de Dados

    Tabela EMPREGADO

    Nome RG CIC Depto. RG Supervisor Salrio

    Joo Luiz 10101010 11111111 1 NULO 3.000,00

    Fernando 20202020 22222222 2 10101010 2.500,00

    Ricardo 30303030 33333333 2 10101010 2.300,00

    Jorge 40404040 44444444 2 20202020 4.200,00

    Renato 50505050 55555555 3 20202020 1.300,00

    Tabela DEPARTAMENTO Tabela PROJETO

    Nome Nmero RG Gerente Nome Nmero Localizao

    Contabilidade 1 10101010 Financeiro 1 5 S o Paulo

    Engenharia Civil 2 30303030 Motor 3 10 Rio Claro

    Engenharia Mecnica 3 20202020 Pr dio Central 20 Campinas

    Tabela DEPENDENTES

    RG Responsvel Nome Dependente Dt. Nascimento Relao Sexo

    10101010 Jorge 27/12/86 Filho Masculino

    10101010 Luiz 18/11/79 Filho Masculino

    20202020 Fernanda 14/02/69 Conjuge Feminino

    20202020 Angelo 10/02/95 Filho Masculino

    30303030 Adreia 01/05/90 Filho Feminino

    Tabela DEPARTAMENTO_PROJETO Tabela EMPREGADO_PROJETO

    Nmero Depto. Nmero Projeto RG Empregado Nmero Projeto Horas

    2 5 20202020 5 10

    3 10 20202020 10 25

    2 20 30303030 5 35

    40404040 20 50

    50505050 20 35