Modelagem de Banco de Dados

Embed Size (px)

Citation preview

  • 5/28/2018 Modelagem de Banco de Dados

    1/91

    Disciplina:MODELAGEM DEBANCO DE DADOS

    Introduo a Banco de Dados

    1. Introduo

    Um Sistema Gerenciador de Banco de Dados (SGBD) constitudo por um conjunto de dados associados a um conjunto deprogramas para acesso a esses dados.

    O principal objetivo de um SGBD proporcionar umambiente tanto convenientequanto a eficientepara a recuperao

    e armazenamento das informaes do banco de dados.

    Sistemas de banco de dados so projetados para gerirgrandes volumes de informaes. O gerenciamento de informaesimplica a definio das estruturas de armazenamento dasinformaes e da definio dos mecanismos para a manipulaodessas informaes. Tambm um sistema de banco de dados deve

    garantir a segurana das informaes armazenadas contraeventuais problemas com o sistema, alm de impedir tentativas deacesso no autorizadas. Tambm se os dados so compartilhadospor diversos usurios o sistema deve evitar a ocorrncia deresultados anmalos.

    2. Por que Sistemas de Banco de Dados

  • 5/28/2018 Modelagem de Banco de Dados

    2/91

    Um Sistema de processamento de arquivos convencionalonde, registros permanentes so armazenados em vrios arquivose diversos programas de aplicao so escritos para extrair egravar registros nos arquivos apropriados, podem serapropriadamente gerenciados pelos sistemas operacionaisexistentes. Mas, estes sistemas apresentam numerosasdesvantagens:

    Inconsistncia e Redundncia de Dados: Como arquivos eprogramas normalmente so criados e mantidos pordiferentes programadores, em geral comum que osarquivos possuam formatos diferentes e os programasestejam escritos em diferentes linguagens deprogramao. Alm disso, a mesma informao pode estarrepetida em mais de um arquivo.

    Dificuldade de Acesso aos Dados: Normalmente em umsistema de processamento de arquivos comum, quandoexiste uma necessidade de uma relao de empregados,por exemplo, segundo uma determinada condio, se estasituao no tiver sido prevista inicialmente no sistema, necessrio que um novo programa seja desenvolvido e quegere esta lista solicitada. O fato que este ambiente noest preparado para atender as necessidades de

    recuperao de informaes de modo eficiente. Isolamento dos Dados: Como os dados esto dispersos

    em vrios arquivos, e estes arquivos podem apresentardiferentes formatos, difcil escrever novas aplicaespara a recuperao apropriada destes dados.

    Problemas com Integridade: Os valores dos dadosatribudos e armazenados em um banco de dados devem

  • 5/28/2018 Modelagem de Banco de Dados

    3/91

    satisfazer certas restries para manuteno daconsistncia. O problema aumenta quando as restriesatingem diversos itens de dados em diferentes arquivos.

    Problemas de atomicidade: Um sistema computacionalest sujeito a falhas. E imprescindvel garantir que, umavez detectada uma falha, os dados sejam salvos em seultimo estado consistente, anterior a ela. Por exemplo,uma operao de transferncia bancria entre contascorrentes, deve ser uma operao atmica, ou seja, deve

    ocorrer por completo, ou no ocorrer. Anomalias no acesso concorrente: Muitos sistemas

    permitem atualizaes simultneas dos dados paraaumento do desempenho do sistema como um todo e paramelhores tempos de resposta. Este tipo de interao poderesultar em inconsistncia de dados. Por exemplo, doissaques simultneos a uma mesma conta corrente.

    Problemas de Segurana: Nem todos os usurios debanco de dados esto autorizados ao acesso a todos osdados. Em um sistema bancrio, por exemplo, osfuncionrios do departamento de pessoal no deveriamter acesso a informaes dos clientes do banco, s apenasao conjunto de pessoas ao qual o seu departamento lhe dizrespeito.

    Estas e outras dificuldades provocaram o desenvolvimentosdos SGBDs. Iniciaremos o estudo dos sistemas de bancos dedados, mostrando, para isso, conceitos e algoritmos que foramdesenvolvidos para a efetiva manipulao dos mesmos.

  • 5/28/2018 Modelagem de Banco de Dados

    4/91

    Linguagens de Banco de Dados e Tipos de Usurios

    1.Linguagens de Banco de DadosUm sistema de banco de dados proporciona dois tipos delinguagens: uma especfica para os esquemas do banco de dadose outra para expressar consultas e atualizaes.

    1.2 Linguagens de Definio de Dados

    Um esquema de banco de dados especificado por um conjuntode definies expressas por uma linguagem especial chamadalinguagem de definio de dados (data-definition language -DDL). O resultado da compilao dos parmetros DDLs

    armazenado em um conjunto de tabelas que constituem umarquivo especial chamado dicionrio de dados ou diretrio dedados.

    Um dicionrio de dados um arquivo de metadados, isto ,dados a respeito de dados. A estrutura de memria e o mtodode acesso usados pelo banco de dados so especificados por um

    conjunto de definies em um tipo especial de DDL chamado delinguagem de definio e armazenamento de dados (datastorage and definition language).

    1.3 Linguagens Manipulao de Dados

  • 5/28/2018 Modelagem de Banco de Dados

    5/91

    Os nveis de abstrao que foram discutidos anteriormente nose aplicam apenas definio ou a strutura dos dados, mastambm sua manipulao. Por manipulao de dados, entende-se:

    A recuperao das informaes armazenadas no bancode dados.

    Insero de novas informaes no banco de dados.

    A remoo de informaes do banco de dados.

    A modificao das informaes do banco de dados.A linguagem de manipulao de dados (DML) a linguagem queviabiliza o acesso ou a manipulao dos dados de formacompatvel ao modelo de dados apropriado. So basicamentedois tipos:

    DMLs procedurais exigem que o usurio especifiquequaisdados so necessrios, e comoobt-los.

    DMLs no-proceduraisexige que o usurio especifiquequais dados so necessrios sem especificar comoobt-los.

    Uma consulta uma solicitao para a recuperao deinformaes. A parte de uma DML que responsvel pelarecuperao de informaes chamada linguagem de consultas(query language).

    1.4 Gerenciamento de Transaes

    Muitas vezes diversas operaes em um banco de dadosconstituem de uma nica unidade lgica de trabalho. Como ocaso da transferncia de crditos entre duas contas-correntes.A transferncia deve acontecer como um todo ou nada deve ser

  • 5/28/2018 Modelagem de Banco de Dados

    6/91

    feito. Essa caracterstica de tudo ou nada, chamado deatomicidade. Alm disso, necessrio que a transferncia defundos preserve a consistncia do banco de dados. Essaexigncia chamada de consistncia. Depois da execuo comsucesso da operao de transferncia, os novos valores devempersistir, a despeito da possibilidade de falhas no sistema. Essapersistncia chamada de durabilidade.

    Uma transao uma coleo de operaes que desempenha

    uma funo lgica nica dentro de uma aplicao do sistema debanco de dados. Cada transao uma unidade de atomicidadee consistncia. Assim, exige-se que as transaes no violemnenhuma regra de consistncia do banco de dados. deresponsabilidade do programador definir as diversastransaes tais que cada uma preserve a consistncia do bancode dados.

    de responsabilidade do sistema de banco de dados asseguraras propriedades de atomicidade e durabilidade nogerenciamento das transaes. de sua responsabilidadetambm detectar falhas e recuperar o banco de dadosgarantindo o retorno de seu ltimo estado consistente. Outraresponsabilidade importante diz respeito ao controle deconcorrncia, que consiste de controlar a interao entre

    transaes concorrentes de modo a garantir a consistncia dobanco de dados.

    1.5 Administrao de Memria

  • 5/28/2018 Modelagem de Banco de Dados

    7/91

    Os bancos de dados, normalmente, ocupam um grande volumede memria. Este tamanho muitas vezes pode chegar no s agigabytes, mas tambm a terabytes. Um gerenciador dememria um mdulo de programas para interface entre oarmazenamento de dados em um nvel baixo e consultas eprogramas submetidos ao sistema. O gerenciador de memria responsvel pelo armazenamento, recuperao e atualizao dedados no banco de dados.

    1.6 Administrador de Banco de Dados

    Uma das grandes motivaes de uso de SGBDs o controlecentralizado tanto de dados quanto dos programas de acesso aesses dados. A pessoa que centraliza esse controle do sistema chamada de administrador de banco de dados (DBA). Dentreas suas funes, destacam-se:

    Definio do esquema. O DBA cria o esquema do bancode dados original escrevendo um conjunto de definiesque so transformadas pelo compilador DDL em umconjunto de tabelas armazenadas de modo permanente nodicionrio de dados.

    Definio da estrutura de dados e mtodos de acesso.O DBA cria estruturas de dados e mtodos de acesso

    apropriados escrevendo um conjunto e definies, asquais so traduzidas pelo compilador de armazenamentode dados e pelo compilador de linguagem de definio dedados.

    Esquema e modificaes na organizao fsica. Osprogramadores realizam relativamente poucas alteraesno esquema do banco de dados ou na descrio daorganizao fsica de armazenamento.

  • 5/28/2018 Modelagem de Banco de Dados

    8/91

    Fornecer autorizao de acesso ao sistema. Ofornecimento de diferentes tipos de autorizao noacesso aos dados permite que o administrador de dadosregule o acesso dos diversos usurios s diferentespartes do sistema.

    Especificao de regras de integridade. Os valores dosdados armazenados no banco de dados devem satisfazercertas restries para manuteno de sua integridade.

    1.7 Usurios de Banco de Dados

    H quatro tipos bsicos de usurios de sistemas de banco dedados, cuja diferena refere-se a suas expectativas deinterao com o sistema.

    Programadores de aplicaes. So profissionais emcomputao que interagem com o sistema por meio daschamadas DML, as quais so envolvidas por programasescritos na linguagem hospedeira. Estes programas socomumente referidos como programas de aplicao.

    Usurios sofisticados. Interagem com o sistema semescrever programas. Formulam suas solicitaes ao bancode dados por meio de linguagens de consultas. Cada umadessas solicitaes submetida ao processador deconsultas.

    Usurios especialistas. So usurios sofisticados queescrevem aplicaes especializadas de bancos de dadosque no podem ser classificadas como aplicaestradicionais em processamento de dados.

  • 5/28/2018 Modelagem de Banco de Dados

    9/91

    Usurios navegantes. So os usurios comuns queinteragem com o sistema chamando um dos programasaplicativos permanentes j escritos, como por exemplo,um usurio que pede a transferncia de uma conta paraoutra.

  • 5/28/2018 Modelagem de Banco de Dados

    10/91

    Consideraes Bsicas, Abstrao e Modelos deDados

    Bancos de Dados e Sistemas de Banco de Dados tm setornado um componente essencial todos os dias da vida moderna.Aplicaes de banco de dados tradicionais dizem respeito asistemas bancrios, sistemas de reservas areas, sistemas decontrole de estoque.

    Com o avano da tecnologia, novos tipos de bancos de dadosforam desenvolvidos, com aplicaes e uso especficos. Bancos deDados Multimdiapodem, por exemplo, armazenar figuras, vdeo-clips e mensagens de sons. Bancos de Dados Geogrficospodemarmazenar e analisar mapas, dados climticos e imagens desatlite. DataWarehouses e Processamentos Analtico On-line(OLAP) so sistemas usados em muitas empresas para extrair e

    analisar informaes teis de sistemas de banco de dados muitograndes para a tomada de decises.

    Tecnologias de Tempo Real e de Banco de Dados Ativosso usados no controle industrial e em processo de manufatura.Tcnicas de busca em bancos de dados, com aplicaes na Web,tm melhorado a eficincia dos mesmos. No entanto, temos queentender o bsico das aplicaes de banco de dados tradicionais.

    Um banco de dados pode ser considerado como uma coleode dados relacionados. Por dado entendem-se fatos conhecidosque podem ser armazenados e que possuem um significadoimplcito. Um banco de dados possui as seguintes propriedadesimplcitas:

  • 5/28/2018 Modelagem de Banco de Dados

    11/91

    Representa alguns aspectos do mundo real, muitasvezes chamado de mini-mundo ou universo dodiscurso.

    uma coleo de dados logicamente coerente comalguns significados inerentes aos mesmos.

    projetado, construdo e povoado com dados paraum propsito especfico.

    Um banco de dados pode ser de qualquer tamanho e de

    complexidade variada. Pode ser gerado e mantido manualmente oupode ser computadorizado. Um Sistema de Gerenciamento deBanco de Dados uma coleo de programas que permitem queusurios criem e mantenham um banco de dados.

    Um SGBD tambm um sistema de software de propsitogeral que facilita o processo de definio, construo emanipulao de banco de dados para vrias aplicaes. A definio

    de um banco de dados envolve especificao de tipos de dados,estruturas e restries para que os dados possam serarmazenados no banco de dados.

    A construo do banco de dados o processo dearmazenamento de dados em algum armazenamento mdio que controlado pelo SGBD. A manipulao do banco de dados inclui taisfunes como consulta a banco de dados para recuperar dados

    especficos e a atualizao destes dados. Chamaremos de Sistemade Banco de Dados, o banco de dados e o SGBD, juntos. A Figura 1mostra a estrutura de um Sistema de Banco de Dados.

  • 5/28/2018 Modelagem de Banco de Dados

    12/91

    Figura 1 Um Ambiente de Sistema de Banco de Dados

    3. Abstrao de Dados

    Um SGBD, como j dissemos, uma coleo arquivos eprogramas inter-relacionados que permitem ao usurio o acessopara consultas e alteraes a esses dados. Um dos grandesbenefcios de um sistema de banco de dados permitir aosusurios, uma viso abstratados dados.

  • 5/28/2018 Modelagem de Banco de Dados

    13/91

    Um sistema precisa ser eficiente na recuperao deinformaes. Esta eficincia muitas vezes est relacionada com acomplexidade internas das estruturas de representao destesdados. Esta complexidade precisa ser transparente para osusurios, ou seja, atravs dos nveis de abstrao, os SGBDsomitem a complexidade de armazenamento e manuteno dosdados que esto sendo manipulados, de modo a facilitar ainterao dos usurios com o sistema.

    Nvel Fsico: o nvel de abstrao mais baixo e descrevecomoos dados esto de fato armazenados.

    Nvel Lgico: este o nvel de abstrao mdio, quedescreve quais dados esto armazenados no banco dedados e quais so os inter-relacionamentos entre eles. Onvel lgico normalmente usado pelos administradores

    que precisam decidir quais as informaes que precisamestar no banco de dados.

    Nvel de Viso: Este nvel de abstrao mais alto quedescreve apenas parte do banco de dados. Muitosusurios dos bancos de dados nem precisam conhecertodas as informaes armazenadas. Para isso, nveis deviso so definidos de modo que as interaes sejamsimplificadas.

    A figura abaixo mostra o inter-relacionamento entre estestrs nveis de abstrao:

  • 5/28/2018 Modelagem de Banco de Dados

    14/91

    Figura 2 Trs nveis de Abstrao de dados

    Podemos fazer uma analogia dos nveis de abstrao comtipos de dados em linguagens de programao. Por exemplo, dada aestrutura abaixo:

    Typecliente = recordNome_cliente : string;

    Seguro_social : string;Rua_cliente : string;Cidade_cliente : string;

    end;

    No nvel fsico, um registro de cliente pode ser escrito comoum bloco consecutivo de memria. No nvel lgico, cada registro descrito por um tipo definido, como ilustrado no segmento de

  • 5/28/2018 Modelagem de Banco de Dados

    15/91

    cdigo acima. Normalmente os programadores e administradoresdo banco de dados trabalham neste nvel de abstrao. No nvel deviso, os usurios vem apenas um conjunto de programas deaplicao que escondem os detalhes dos tipos de dados.

    3.1 Instncias e Esquemas

    Um banco de dados muda ao longo do tempo por meio dasinformaes que nele so inseridas ou excludas. O conjunto deinformaes contidas em determinado banco de dados em um dadomomento chamado instnciado banco de dados. O projeto geraldo banco de dados chamado de esquema.

    Fazendo uma anlise comparativa com o exemplo dado declientes, acima, uma varivel poderia ser declarada como:

    Varcliente1 : cliente;

    A definio de tipo em uma linguagem de programaocorresponde ao esquemado banco de dados. O valor em um dadoinstante de uma varivel de um determinado tipo, corresponde auma instnciado esquema do banco de dados.

    Os sistemas de banco de dados apresentam diversosesquemas, referentes aos nveis de abstrao que foramdiscutidos. Em geral os sistemas de banco de dados so suporte aum esquema fsico, um esquema lgico e vrios subesquemas.

  • 5/28/2018 Modelagem de Banco de Dados

    16/91

    A capacidade de modificar a definio dos esquemas emdeterminado nvel, sem afetar o esquema do nvel superior, chamado independncia de dados. Existem dois nveis deindependncia de dados:

    a. Independncia fsica de dadosb. Independncia lgica de dados

    4. Modelos de Dados

    Um modelo de dados um conjunto de ferramentasconceituais utilizadas para a descrio de dados, relacionamentoentre esses dados, semntica de dados e regras de consistncia.Os modelos so classificados em trs diferentes grupos: modeloslgicos com base em objetos, modelos lgicos com base em

    registrose modelos fsicos.

    4.1 Modelos Lgicos com base em Objetos

    Os modelos lgicos com base em objetos so usados nadescrio de dados no nvel lgico e de vises. Existem vriosmodelos desta categoria, tais como:

    Modelo Entidade-Relacionamento

    Modelo Orientado a Objetos

    Modelo Semntico de Dados

    Modelo Funcional de Dados

  • 5/28/2018 Modelagem de Banco de Dados

    17/91

    4.1.1 Modelo Entidade-Relacionamento

    O modelo de dados entidade-relacionamento (E-R) tem comobase a percepo do mundo real como um conjunto de objetosbsicos, chamados de entidades, e do relacionamento entre eles.Uma entidade uma coisa ou um objeto do mundo real, que podeser identificado por outros objetos. As entidades so descritas nobanco de dados por meio de seus atributos. Um relacionamento uma associao entre entidades. Alm das entidades e dosrelacionamentos, o modelo E-R representa certas regras as quaiso contedo do banco de dados precisa respeitar.

    4.1.2 Modelo Orientado a Objetos

    O modelo orientado a objetos, assim como o E-R, tem porbase um conjunto de objetos. Um objeto contm valoresarmazenados em variveis instncias dentro do objeto. Um objetotambm contm conjuntos de cdigos que operam este objeto.Estes conjuntos de cdigos so chamados de mtodos. Os objetosque contm os mesmos tipos de valores e os mesmos mtodos soagrupados em classes. Onde uma classe pode ser vista como umadefinio de tipo para objetos.

    4.2 Modelos Lgicos Baseados em Registros

    Modelos lgicos baseados em registros so usados paradescrever os dados no nvel lgico e de viso. usado tanto paraespecificar a estrutura lgica do banco de dados quanto para

  • 5/28/2018 Modelagem de Banco de Dados

    18/91

    implementar uma descrio de alto nvel. Dos trs modelosapresentados, o modelo relacional o que mais tem se destacadonos ltimos anos. O modelo hierrquico e de rede ainda usado emum grande nmero de banco de dados antigos.

    4.2.1 Modelo Relacional

    O modelo relacional usa um conjunto de tabelas para

    representar tanto os dados como a relao entre eles. Cada tabelapossui mltiplas colunas e cada uma possui um nico nome.

    4.2.2 Modelo de Rede

    O modelo de rede representa os dados por um conjunto deregistros e as relaes entre esses registros so representadas

    por links, as quais podem ser vistas pelos ponteiros. Os registrosso organizados no banco de dados por um conjunto arbitrrio degrficos.

    4.2.3 Modelo Hierrquico

    O modelo hierrquico similar ao modelo de rede pois osdados e suas relaes so representados tambm por registros elinks. A diferena que no modelo hierrquico os registros estoorganizados em rvores ao invs de grficos arbitrrios.

    4.3 Modelos Fsicos de Dados

  • 5/28/2018 Modelagem de Banco de Dados

    19/91

    Os modelos fsicos de dados so usados para descrev-los nonvel mais baixo. H poucos modelos fsicos de dados em uso. Doisdeles so conhecidos: o modelo unificado, e o modelo de partiode memria.

  • 5/28/2018 Modelagem de Banco de Dados

    20/91

    Modelo Entidade-Relacionamento

    1.Conceitos bsicosO modelo Entidade-Relacionamento (E-R) tem por base apercepo de que o mundo real formado por um conjunto deobjetos chamados de entidades e pelo conjunto de

    relacionamentos entre esses objetos. Foi desenvolvido parafacilitar o projeto do banco de dados, permitindo aespecificao do esquema da empresa que representa toda aestrutura lgica. O modelo E-R um dos modelos com maiorcapacidade semntica; que se referem a tenativa derepresentar o significado dos dados.

    Existem trs noes bsicas empregadas pelo modelo E-R:conjunto de entidades, conjunto de relacionamentos, e osatributos.

    1.1. Conjunto de EntidadesUma entidade uma coisa ou um objeto do mundo real que podeser identificada de forma unvoca em relao a todos os outros

    objetos. Por exemplo, cada pessoa na empresa uma entidade.Uma entidade tem um conjunto de propriedades, e os valorespara alguns conjuntos dessas propriedades devem ser nicos.Uma entidade pode ser concreta como uma pessoa ou um livro,ou pode ser abstrata como um emprstimo, uma viagem defrias ou um conceito.

  • 5/28/2018 Modelagem de Banco de Dados

    21/91

    Um conjunto de entidades um conjunto de abrange entidadesde um mesmo tipo que compartilham as mesmas propriedades:

    os atributos. As entidades individuais que constituem umconjunto so chamadas de extensesdo conjunto de entidades.

    Uma entidade representada por um conjunto de atributos.Atributos so propriedades descritivas de cada membro de umconjunto de entidades.

    Formalmente um atributo de um conjunto de entidades umafuno que relaciona o conjunto de entidades a seu domnio. Umatributo, como usado no modelo E-R, pode ser caracterizadopelos seguintes tipos:

    Atributos Simples ou compostos. Os atributos simplesso aqueles que no so divididos em partes. Oscompostos podem ser divididos em partes, por exemplo,

    nome_cliente, pode ser estruturado em prenome,nome_intermedirio, e sobrenome. Os atributoscompostos ajudam-nos a agrupar atributoscorrelacionados tornando o modelo mais claro.

    Atributos monovalorados ou multivalorados. Um exemplode um atributo monovalorado poderia ser o atributonmero_emprstimo, o qual teria associado apenas umnmero de emprstimo. Pode acontecer, no entanto, que

    uma determinada instncia possua um conjunto de valorespara uma nica entidade. Por exemplo, o atributonome_dependente, da entidade empregado, pode ter um,nenhum ou vrios dependentes cadastrados.

    Atributos nulos. Um atributo nulo quando uma entidadeno apresenta valor para o mesmo. Por exemplo, se umempregado no possui dependentes o valor do atributo

  • 5/28/2018 Modelagem de Banco de Dados

    22/91

    nome_dependente ser nulo, significando que esteatributo no aplicvel a esta instncia em particular.

    Atributo derivado. O valor deste atributo pode serderivado de outros atributos ou entidades a elerelacionados. Por exemplo, a idade de um funcionrio podeser calculada pela data de seu aniversrio.

    2.Conjunto de RelacionamentosUm relacionamento uma associao entre uma ou vriasentidades. Um conjunto de relacionamentos um conjuntoformado por relacionamentos de um mesmo tipo.

    Considere dois relacionamentos de entidades cliente eemprstimo. O conjunto de relacionamentos devedor denota aassociao entre clientes e emprstimos bancrios contrados

    pelo cliente.

    A associao entre os conjuntos de entidades referida comouma participao, isto , o conjunto de entidades E1, E2,..., En

    participado conjunto de relacionamentos R.

    A funo que uma entidade desempenha em um relacionamento chamada papel. Uma vez que os conjuntos de entidades

    participantes em um conjunto de relacionamentos sogeralmente distintos, papis so implcitos, e no so em geral,especificados. Mas, so teis quando o relacionamento precisaser esclarecido.

    Em conjuntos de relacionamentos recursivos, nomes explcitosde papis muitas vezes so necessrios. Por exemplo, oconjunto de entidades empregado, e o conjunto de

  • 5/28/2018 Modelagem de Banco de Dados

    23/91

    relacionamentos trabalha_para, que modelado para ordenaros pares da entidade empregado. O primeiro empregado tem

    papel de gerente, enquanto que o outro tem o papel deempregado.

    Um relacionamento pode ter atributos descritivos. O conjuntode relacionamentos depositante, com o conjunto de entidadesclientee conta, por exemplo, apresenta o atributo data_acesso.

    Relacionamento binrio um relacionamento que envolve doisconjuntos de entidades. A maior parte dos conjuntos derelacionamentos modelados em um sistema de banco de dados do tipo binrio. Algumas vezes, no entanto, aparecemrelacionamentos que envolvem mais de dois conjuntos deentidades. Como exemplo, podemos combinar os conjuntos derelacionamentos devedor e agncia_emprstimo formando oconjunto de relacionamentos CEA, entre as entidades Cliente,

    Emprstimoe Agncia.

    O nmero de entidades que participam de um relacionamentodefine o grau deste relacionamento. Um conjunto derelacionamento binrio tem grau 2, e um ternrio, grau 3.

    Conjunto de Entidades ou Atributos?

    Muitas vezes aparecem dificuldades no reconhecimento do queseja uma entidade ou um atributo. Por exemplo, uma entidadeempregado com dois atributos: nome_empregado, e telefone. Oatributo telefone pode ser modelado como uma entidade. Sedefinirmos como atributo, isto implica dizer que cadaempregado tem precisamente um nmero de telefone a eleassociado. Caso seja modelado como entidade, reflete que um

  • 5/28/2018 Modelagem de Banco de Dados

    24/91

    empregado pode ter vrios (ou nenhum) nmeros de telefones aele associado.

    J o atributo nome_empregado no poderia nunca ser modeladocomo entidade.

    Infelizmente no existe uma resposta simples para sabermosdo que constitui um atributo e o que constitui uma entidade. Asdistines vo depender da estrutura geral que est sendomodelada.

    Conjuntos de Entidades ou de Relacionamentos?

    Nem sempre fica claro se devemos modelar um objeto como umconjunto de entidades ou de relacionamentos.

    Por exemplo, considere o problema do emprstimo bancrio

    representado como um relacionamento entre clientes eagncias, com nmero_emprstimo e conta como atributos.Cada emprstimo representado como um relacionamentoentre um clientee uma agncia.

    Se todo emprstimo tomado por exatamente um cliente eest associado exatamente umaagncia, podemos resolver oprojeto de modo satisfatrio, representando emprstimocomo

    relacionamento. Mas, considere que vrios clientes tomem ummesmo emprstimo em conjunto. Ento, nesse caso, necessrio definir um relacionamento em separado para cadacomponente do emprstimo conjunto. Desta forma, os atributosdescritivos numero_emprstimo e conta precisaro serreplicados para cada um dos relacionamentos. Os problemas quesurgem devido a esta replicao so: (1) os dados soarmazenados diversas vezes, desperdiando espao em

  • 5/28/2018 Modelagem de Banco de Dados

    25/91

    memria, e (2)as atualizaes deixam potencialmente os dadosem estado inconsistente. Ao descrever emprstimo como uma

    entidade, este problema de replicao desaparece.

    Relacionamentos n-simos.

    Uma outra caracterstica importante que diz respeito arelacionamentos, que sempre possvel recompor um conjuntode relacionamentos no-binrio, por um nmero derelacionamentos binrios distintos. Mas, pode ser necessria acriao de um atributo de identificao para o conjunto deentidades criado para substituir o conjunto de relacionamentos.Alm disso, um conjunto de relacionamentos n-simo mostraclaramente todos os conjuntos de entidades que participam deuma determinada relao. O projeto correspondente usandosomente relacionamentos binrios torna mais difcilestabelecer as restries desta participao.

    3.Mapeamento de Restries3.1 CardinalidadeO esquema E-R de uma empresa pode definir certas restriesas quais o contedo do banco de dados deve respeitar.Exemplos de restries so: o mapeamento de cardinalidades ea existncia de dependncias.

    O mapeamento de cardinalidades expressa o nmero deentidades s quais outras entidades podem estar associadasatravs de um conjunto de relacionamentos. Para um conjuntode relacionamentos binrio, o mapeamento de cardinalidadessegue as instrues abaixo:

  • 5/28/2018 Modelagem de Banco de Dados

    26/91

    Um para um. Uma entidade em A est associada nomximo a uma entidade em B, e uma entidade em B estassociada no mximo a uma entidade em A.

    Um para muitos. Uma entidade em A est associada a

    vrias entidades em B. Uma entidade em B deve estarassociada a uma nica entidade em A.

    Um para um.

    Muitos para um. Uma entidade em A est associada a nomximo uma entidade em B. Uma entidade em B,entretanto, pode estar associada a um nmero qualquerde entidades em A.

    Muitos para muitos. Uma entidade em A est associada aqualquer nmero de entidades em B e uma entidade em Best associada a um nmero qualquer de entidades em A.

  • 5/28/2018 Modelagem de Banco de Dados

    27/91

    Figura 2 Mpeamento de Cardinalidade.Muitos para Muitos.

    O mapeamento de cardinalidade para um conjunto derelacionamentos em particular obviamente dependente dassituaes reais que esto sendo modeladas.

    O rateio de cardinalidades de um relacionamento podeafetar a colocao dos atributos nos relacionamentos.Conjuntos de relacionamentos um para um, ou um paramuitos devem associar os atributos a uma das entidades

    participantes. Considere o caso das entidades cliente econta, e o relacionamento depositante. O atributo data-acessodever estar associado entidade conta.

    3.2 Dependncia de Ex stncia

  • 5/28/2018 Modelagem de Banco de Dados

    28/91

    existncia. Se a existncia da entidade x depende da

    existncia de y. E se yfor excludo, o mesmo deve acontecercom x. A entidade y chamada de entidade dominante e a xchamada entidade subordinada. Como exemplo, considere oconjunto de entidades emprstimo e o conjunto de entidadespagamento. Toda entidade pagamento est associada a umaentidade emprstimo. Se uma entidade emprstimo excluda,todas as entidades pagamento a ela associada devem serexcludas tambm. Se por outro lado, uma entidadepagamentofor excluda, a entidade emprstimo no ser afetada.Portanto, a entidade emprstimo dominante e a entidadepagamentosubordinada.

    A participao de um conjunto de entidades E no conjunto derelacionamento R dita total se todas as entidades em E

    participam de pelo menos um relacionamento em R. Se somentealgumas entidades em E participam do relacionamento R aparticipao do conjunto de entidades dito parcial. Aparticipao total est relacionada existncia dedependncia.

    4.Chaves

    Precisamos especificar como as entidades dentro de um dadoconjunto de entidades e os relacionamentos dentro de umconjunto de relacionamentos podem ser identificados. Oconceito de chave nos ajuda a fazer esta distino.

    4.1 Conjunto de Entidades

  • 5/28/2018 Modelagem de Banco de Dados

    29/91

    Uma superchave um conjunto de um ou mais atributos que,tomados coletivamente, nos permitem identificar de maneira

    unvoca, uma entidade em um conjunto de entidades. Ex.seguro_social, e a combinao de seguro_social comnome_cliente.

    Se K uma superchave, ento qualquer superconjunto de K tambm uma superchave. Mas, queremos supoerchaves para asquais nenhuma subconjunto possa ser uma superchave. Essassuperchaves so chamadas de chaves candidatas.

    O termo chave primria o termon usado para caracterizar achave candidata escolhida pelo projetista do banco como sendode significado especial para a identificao das entidades . Aespecificao de uma chave representa uma restrio ao mundoreal da empresa que est sendo modelada.

    4.2 Conjunto de Relacionamentos

    A chave primria de um conjunto de entidades permite-nosdistinguir as vrias entidades de um conjunto. Precisamosdefinir um mecanimo para a indetificao dos vriosrelacionamentos em um conjunto de relacionamentos. Seja R umconjunto de relacionamentos envolvendo os conjuntos de

    entidades E1, E2, ..., Em. Seja uma chave_primria (Ei)denotando o conjunto de atributos que formam a chaveprimria do conjunto de entidades Ei. Se o relacionamento Rno possui atributos, ento o conjunto de atributos abaixodescreve um relacionamento individual do conjunto R:

    Chave_primria (E1) U Chave_primria (E2) U ... UChave_primria(En)

  • 5/28/2018 Modelagem de Banco de Dados

    30/91

    A estrutura da chave primria para o conjunto de

    relacionamentos depende do mapeamento da cardinalidade domesmo. Se o relacionamento muitos para muitos, a chaveprimria do relacionamento constitui a unio das chavesprimrias das duas entidades. Se o relacionamento muitospara um, ento a chave primria da entidade de menorcardinalidade pode identificar o relacionamento. Se orelacionamento um para um, qualquer uma das chaves pode serusada.

  • 5/28/2018 Modelagem de Banco de Dados

    31/91

    Modelo Relacional

    1.Conceitos bsicosUm banco de dados relacional composto por um conjunto detabelasou relaes, cada uma das quais com um nome nico. Aterminologia tabela mais comum nos produtos comerciais e naprtica. J a terminologia relao foi utilizada na literaturaoriginal sobre a abordagem relacional e mais comum na rea

    acadmica.

    1.1 TabelasUma tabela um conjunto no-ordenado de linhas (tuplas, naterminologia acadmica), onde cada linha composta por umasrie de campos, ou atributos. Cada linha de uma tabelarepresenta um relacionamento entre um conjunto de valores.

    Cada campo identificado por nome do campo(ou atributo), e oconjunto de campos das linhas de uma tabela que possuem omesmo nome formam uma coluna.

    Comparando-se a tabela de banco de dados com um arquivoconvencional do sistema de arquivos de um computador,identificam-se as seguintes diferenas:

    As linhas de uma tabela no esto ordenadas. A ordem derecuperao pelo SGBD arbitrria, a menos que ainstruo de consulta tenha especificado uma ordenao.No possvel referenciar linhas de uma tabela porposio.

    Os valores de campo de uma tabela so atmicos emonovalorados. Em arquivos convencionais campos podem

  • 5/28/2018 Modelagem de Banco de Dados

    32/91

    ser compostos por outros campos, e podem sermultivalorados.

    As linguagens de consulta a bases de dados relacionaispermitem o acesso por quaisquer critrios envolvendo oscampos de uma ou mais linhas. Em arquivos convencionais,para buscar registros com base em valores de seuscampos necessrio que exista um caminho de acessodeterminado, que uma estrutura auxiliar como o ndiceou uma cadeia de ponteiros.

    1.2 ChavesO conceito bsico para estabelecer relaes entre linhas detabelas de um banco de dados relacional o da chave. Em umbanco de dados relacional h pelo menos trs tipos de chaves aconsiderar: a chave primria, a chave alternativa e a chaveestrangeira.

    1.2.1 Chave primriaUma chave primria uma coluna ou uma combinao decolunas que identificam uma linha das demais dentro de umatabela. Na tabela de Empregadosabaixo, a chave primria a coluna CdigoEmp.

    CdigoEmp Nome CdigoDepto CategFuncionalE5 Souza D1 C5

    E3 Santos D2 C5

    E2 Silva D1 C2

    E1 Soares D1 -

    Tabela 1 - Empregados

  • 5/28/2018 Modelagem de Banco de Dados

    33/91

    A tabela abaixo mostra uma tabela de Dependentes quepossui uma chave primria composta: CdigoEmpe NoDep.

    CdigoEmp NoDep Nome Tipo DataNasc

    E1 01 Joo Filho 12/12/91

    E1 02 Maria Esposa 01/01/50

    E2 01 Ana Esposa 05/11/55

    E6 01 Paula Esposa 04/07/60

    E6 02 Jos Filho 03/02/85

    Tabela 2 - Dependentes

    Nas definies formais de chave primria, exige-se que amesma seja mnima, ou seja, todas as suas colunas soefetivamente necessrias para garantir o requisito deunicidade de valores da chave.Na abordagem relacional, ao se definir uma chave primria,

    no est se definindo um caminho de acesso. Est sedefinindo uma restrio de integridadeque precisa serobedecida para todos os estados vlidos do BD. Neste caso,a regra a da unicidadedos valores nas colunas quecompem a chave.

    1.2.2 Chave estrangeira

    Uma chave estrangeira uma coluna ou uma combinao decolunas cujos valores aparecem necessariamente como chaveprimria de uma tabela. A chave estrangeira o mecanismopelo qual implementam-se os relacionamentos em um bancode dados relacional.

    Seja a seguinte tabela de departamentos abaixo:

  • 5/28/2018 Modelagem de Banco de Dados

    34/91

    CdigoDepto NomeDepto

    D1 Compras

    D2 Engenharia

    D3 Vendas

    Tabela 3 Departamentos

    Na tabela de Empregados, identificada neste exemplo comoTabela 1, a coluna CdigoDepto uma chave estrangeira em

    relao a chave primria da tabela Departamentos, ou tabela3. Isso significa que, na tabela Empregados, no podemaparecer linhas que contenham um valor do campoCdigoDepto que no exista na coluna do mesmo nome databela Departamentos. Interpretando esta restrio,dizemos que todo empregado deve estar associado a umdepartamento.

    A incluso de uma chave estrangeira impe restries quedevem ser garantidas em diversas situaes de alterao dobanco de dados:

    Quando da incluso de uma linha na tabela que

    contm a chave estrangeira. Quando da alterao do valor da chave

    estrangeira.

    Quando da excluso de uma linha na tabela quecontm a chave primria referenciada como chave

    estrangeira.

    A palavra estrangeira pode denotar a idia enganosa de quea mesma sempre referencia uma chave primria de umaoutratabela. Entretanto esta restrio no existe, A chave

  • 5/28/2018 Modelagem de Banco de Dados

    35/91

    estrangeira pode referenciar a chave primria da prpriatabela.

    Por exemplo, na tabela Empregados mostrada na Tabela,pode existir um campo denotado CodigoEmpGerenteque ocdigo de um outro empregado que gerente do empregadoda linha em questo.

    CdigoE

    mp

    Nome CdigoDep

    to

    CategFuncio

    nal

    CdigoEmpGere

    nte

    E5 Souza D1 C5 -

    E3 Santos

    D2 C5 E5

    E2 Silva D1 C2 E5

    E1 Soare

    s

    D1 - E1

    1.2.3 Chave alternativaEm alguns casos, mais de uma coluna ou combinaes decolunas podem servir para distinguir uma linha das demais.Uma das colunas escolhida como chave primria. As demaiscolunas so denominadas chaves alternativas.

    Na tabela de Empregadosabaixo, tanto a coluna CodigoEmpquanto a coluna CIC podem ser usadas para distinguir umalinha das demais. Como o CodigoEmpfoi o escolhido para ser

  • 5/28/2018 Modelagem de Banco de Dados

    36/91

    chave primria, dizemos que a coluna CIC uma chavealternativa.

    CdigoEmp Nome CdigoDepto CategFuncional CIC

    E5 Souza D1 C5 132.121.331-20

    E3 Santos D2 C5 891.221.111-11

    E2 Silva D1 C2 341.511.775-45

    E1 Soares D1 - 631.692.754-88

    1.3 DomniosQuando uma tabela de banco de dados definida, para cadacoluna da tabela deve ser especificado um conjunto de valoresque os campos da respectiva coluna podem assumir. Esteconjunto de valores chamado de domnio da coluna, ou domniodo campo.

    Alm disso, deve ser especificado se os campos da colunapodem estar vazios ou no (nullem ingls). Estar vazio indicaque o campo no recebeu nenhum valor de seu domnio.

    As colunas na quais no so admitidos valores vazios sochamadas de colunas obrigatrias. As colunas nas quais podemaparecer campos vazios so chamadas de colunas opcionais.

    1.4 Restries de IntegridadeUm dos principais objetivos de Banco de Dados manter aintegridade dos dados. Dizer que os dados de um BD estontegros significa dizer que eles refletem corretamente arealidade representada pelo banco de dados e que soconsistentes entre si. Para garantir a integridade dos dados o

  • 5/28/2018 Modelagem de Banco de Dados

    37/91

    SGBD oferece o mecanismo de restries de integridade. Umarestrio de integridade uma regra de consistncia de dados

    que garantida pelo prprio SGBD. Em SGBD Relacionais,existem as seguintes restries de integridade conhecidas:

    Integridade de domnio: especificam que o valor de umcampo deve obedecera definio de valores admitidospara a coluna ( o domnioda coluna).

    Integridade de vazio: especificado se os campos deuma coluna podem ou no ser vazios. Campos quecompem a chave primria so sempre obrigatrios.

    Integridade de chave: trata-se da restrio quedefine que os valores da chave primria e alternativadevem ser nicos.

    Integridade referencial: define que os valores doscampos que aparecem em uma chave estrangeira devemaparecer na chave primria da tabela referenciada.

    Existem outros tipos de restries de integridade que nose encaixam em nenhuma das categorias acima

    mencionadas e que normalmente no so garantidas peloSGBD. Estas restries so chamadas de restriessemnticas. Exemplos:

    Um empregado do departamento denominadoFinanas no pode ter a categoria funcionalEngenheiro.

  • 5/28/2018 Modelagem de Banco de Dados

    38/91

    Um empregado no pode ter um salrio maior doque seu superior imediato.

  • 5/28/2018 Modelagem de Banco de Dados

    39/91

    lgebraRelacional

    A lgebra relacional uma linguagem de consultas procedural.Consiste em um conjunto de operaes tendo como entrada uma ouduas relaes e produzindo como resultado, uma nova relao. Asoperaes fundamentais na lgebra relacional so: select, project,union, set difference, cartesian product e rename.

    OperaesFundamentais

    1. OperaoSelect

    2. OperaoProject

    Suponha que desejamos listar todos os nmeros de emprstimos etodos os totais correspondentes, sendo que o nome das agncias

    envolvidas no interessa. A operaoprojectpermite-nos produziresta relao. A operao project primria, e retorna oargumento da relao deixando de lado certos atributos. J que arelao um conjunto, quaisquer linhas em duplicidade soeliminadas. A projeo denotada pela letra grega pi . Listamos,subscritos em , os atributos que desejamos no resultado. Oargumento da relao vem entre parnteses, a seguir.

    Uma consulta para relacionar todos os nmeros de emprstimos etotais desses emprstimos pode ser escrita da seguinte forma:

    nmero_emprstimo, total (emprstimo)

    Relao resultante:

    Nmero_emprstimo Total

  • 5/28/2018 Modelagem de Banco de Dados

    40/91

    L-17L-23L-15L-14L-93L-11L-16

    10002000150015005009001300

    3. Operao Relacional de Comparao

    Consideremos uma consulta mais complexa como encontre todosos clientes que moram em Olinda.A consulta seria:

    nome_cliente ( cidade_clliente=Olinda) (Cliente))

    Ao invs de dar o nome da relao como argumento da projeo,

    criamos uma expresso que evolui para uma relao.

    4. Operao Union

    Considere a consulta para encontrar os nomes de todos os clientesdo banco que tenham uma conta, um emprstimo, ou ambos. Noteque a relao cliente no possui esta informao.

    Para responder esta pergunta, o banco precisa de informaes darelao depositante, e da relaodevedor.

    Para encontrar todos os clientes com um emprstimono banco:

    nome_cliente (devedor)

  • 5/28/2018 Modelagem de Banco de Dados

    41/91

    Para encontrar todos os clientes que possuem contano banco:

    nome_cliente (depositante)

    Para responder a consulta precisamos da unio desses doisconjuntos. Encontramos esses dados na relao binria unio,denotada por . Logo, a expresso lgica completa da consulta :

    nome_cliente (devedor) nome-cliente (depositante)

    Em geral precisamos que unies sejam feitas entre relaescompatveis entre si. Por exemplo, no faria sentido tomar a unioda relao emprstimoe da relao devedor. Para uma operaode unio r s vlida, so necessrias duas condies:

    1. As relaes re sdevem possuir o mesmo numero deatributos.

    2.Os domnios do I-simo atributo de r e o I-simoatributo de sdevem ser os mesmos para todo i.

    5. Operao Diferena entre Conjuntos

    A operao diferena entre conjuntos denotada por -, permite-nos encontrar as tuplas que esto numa relao, mas no em outra.

    A expresso r sresulta na relao que contm tuplas que estoem r mas no em s. Podemos encontrar todo os clientes quepossuem conta no banco mas no contraram emprstimosescrevendo:

    nome_cliente (depositante) - nome_cliente (devedor)

  • 5/28/2018 Modelagem de Banco de Dados

    42/91

    Assim como no caso da operao de unio, precisamos assegurarque o conjunto diferena seja feito entre relaes compatveis.Portanto, para que as operaes de diferena entre conjuntos r es seja vlida, precisamos que as relaes r e s possuam o mesmonmero de atributos e que o domnio do I-simo atributo de r e doI-simo atributo de s sejam os mesmos.

    6. Operao Produto Cartesiano

    A operao Produto-Cartesiano representada por x, permite-noscombinar informaes de duas relaes quaisquer. Representamoso produto das relaes r1 e r2 por r1 x r2. Uma relao definidacomo um subconjunto de um produto cartesiano de um conjunto dedomnios. Desde que um mesmo nome de atributo pode aparecertanto em r1 como em r2, precisamos estabelecer um nome deesquema para diferenciar esses dois atributos. Para os atributosque aparecem apenas uma vez nos dois esquemas podemos omitir o

    nome da relao.O relao resultante do produto cartesiano de r = devedor xemprstimo, possui uma tupla para cada par de tuplas possvel: umda relao devedor outro da relao emprstimo. Ento, a relaoresultante uma relao grande. Assuma que podemos ter n1tuplas em devedor, e n2 tuplas em emprstimo. A relaoresultante possui n1 * n2 tuplas em r.

    Se quisermos, por exemplo, encontrar todos os nomes de todos osclientes que tenham um emprstimo na agncia casa forte.Podemos precisar para isso, de informaes das relaes devedore emprstimo. Ento a expresso:

    nome_agncia = casa forte (devedor x emprstimo)

  • 5/28/2018 Modelagem de Banco de Dados

    43/91

    nos d como resultado uma relao dos devedores ligados aagncia casa forte.

    Como a operao produto cartesiano associa todas as tuplas deemprstimo a todas as tuplas de devedor, sabemos que se umcliente contrai um emprstimo na agncia Casa Forte ento existealgumas tuplas em devedor X emprstimo que contm o seu nome.Se escrevermos, ento:

    devedor.numero_emprstimo = emprstimo.nmero_emprstimo ( nome_agencia = casaforte (devedor x emprstimo))

    E se quisermos apenas o nome do cliente, podemos fazer umaprojeo:

    nome_cliente ( devedor.nmero_emprstimo = emprstimo.nmero_emprstimo (nome_agncia = casa forte (devedor x emprstimo)

    7. Operao Rename

    Ao contrrio das relaes em um banco de dados, o resultado deuma expresso em lgebra relacional no possui um nome quepossa ser usado para referenci-la. O operador renamerepresentado pela letra grega rho permite-nos dar nomes a elas.

    Dada a expresso em lgebra relacional E, a expresso x (E) temcomo resultado a expresso E sob o nome x.

    Vises

  • 5/28/2018 Modelagem de Banco de Dados

    44/91

    Em todas as operaes que fizemos at agora, usamos operadoresno nvel lgico. Isto , assumimos que as colees de relaesdadas sejam, na verdade, relaes armazenadas no banco dedados. Muitas vezes no desejvel que todos os usurios vejam omodelo lgico como um todo. Consideraes sobre seguranapodem exigir que determinados dados no estejam disponveispara alguns usurios.

    Com base em questes de segurana, podemos criar uma coleode relaes personalizadas de relaes que se ajustam mais asnecessidades do usurio do que ao modelo lgico.

    Qualquer relao que no faa parte do modelo lgico, mas visvel para o usurio como uma relao virtual chamada de viso. possvel dar suporte a um grande nmero de vises sobrequalquer conjunto de relaes reais.

    Definindo VisesDefinimos uma viso usando o comando create view. Para definiruma viso, precisamos dar um nome a ela e definir a consulta quecriar essa viso. A forma do comando create view:

    Create view vas

    Como exemplo considere uma viso consistindo de clientesdevedores. Definimos esta viso de clientes_devedorescomo:

    Create view clientes_devedores as

    nome_cliente ( cliente.seguro_social = devedor.seguro_social (cliente X devedor))

  • 5/28/2018 Modelagem de Banco de Dados

    45/91

    Linguagem SQL

    1.A linguagem SQLSQL tem representado o padro para linguagens de banco dedados relacionais. Existem diversas verses de SQL. Essalinguagem, originalmente chamada de SEQUEL, foi implementadacomo parte do projeto do Sistema R, no incio dos anos 70.Inmeros produtos so suporte atualmente para a linguagemSQL.

    A linguagem SQL tem diversas partes: linguagem de definio dedados, linguagem interativa de manipulao de dados,incorporao DML, definio de vises, autorizao, integridade,

    controle de transaes.2.Estruturas BsicasA estrutura bsica de uma expresso SQL consiste em trsclusulas: select, frome where.

    A clusula select corresponde operao de projeo da

    lgebra relacional. Ela usada para relacionar atributosdesejados no resultado de uma consulta. A clusula from corresponde operao do produto

    cartesiano da lgebra relacional. Associa ass relaes quesero pesquisadas durante a evoluo de uma expresso.

    A clusula where corresponde seleo do predicado nalgebra relacional. Ela consiste em um predicado envolvendoatributos da relao que aparece na clusula from.

  • 5/28/2018 Modelagem de Banco de Dados

    46/91

    O fato de o termo selectpossuir significado diferente em SQL e

    na lgebra relacional infelizmente histrico e precisa serdiferenciada.

    Uma consulta tpica em SQL tem a seguinte forma:

    Select A1, A2,...,AnFrom r1, r2,,rm

    Where P

    Onde, cada Ai representa um atributo e cada ri, uma relao. P um predicado.A consulta equivalente seguinte expresso em lgebrarelacional seria:

    A1, A2, ...,An ( P (r1 x r2 x...x rm))

    Se a clusula wherefor omitida, o predicado P verdadeiro. Noentanto, diferente das expresses em lgebra relacional, emSQL o resultado de uma consulta pode ter mltiplas cpias dealgumas tuplas.

    3.A clusula SelectO resultado de uma consulta SQL naturalmente uma relao.Consideremos uma consulta simples usando nosso exemplo debanco. encontre todos os nomes de todas as agncias da relaoemprstimo.

    Selectnome_agnciafromemprstimo

  • 5/28/2018 Modelagem de Banco de Dados

    47/91

    O resultado uma relao consistindo de um atributo simples

    intitulado nome_agncia.Se desejarmos, por exemplo, eliminar a duplicidade de linhas,podemos inserir a palavra-chave distinct depois de select.Poderemos reescrever a consulta anterior da seguinte forma:

    Select distinctnome_agnciafromemprstimo

    Ao contrrio se quisermos deixar explcito que a duplicidade noser eliminada, podemos usar a palavra-clave all.

    Select allnome_agnciafromemprstimo

    O asterisco * pode denotar todos os atributos na clusula

    select.Tambm poder haver expresses aritmticas envolvendo osoperadores +, -, *, e /.Por exemplo:

    Selectnome_agncia, nmero_emprstimo, total * 100fromemprstimo

    4.A clusula WhereConsidere a consulta: encontre todos os nmeros deemprstimos feitos na agncia Casa Forte, com totaisemprestados acima de 1.200 dlares. Esta consulta pode serescrita como:

  • 5/28/2018 Modelagem de Banco de Dados

    48/91

    Selectnome_emprstimoFromemprstimo

    Wherenome_agncia=Casa Forte andTotal > 1200

    A SQL utiliza operadores lgicos and, or e not, na clusulawhere.A SQL tambm possui o operador de comparao between parasimplificar a clusula where que especifica que um valor pode sermenor ou igual a algum valor e maior ou igual a algum outro valor.Se desejarmos encontrar os nmeros de emprstimos cujosmontantes estejam entre 90 e 100 mil dlares, podemos usar acomparao betweenescrevendo:

    Selectnome_emprstimoFromemprstimo

    Wheretotal between90000 and1000000

    Como tambm podemos usar a combinao de operadores: notbetween.

    5.A clusula FromA clusula from por si s define um produto cartesiano dasrelaes da clusula. Para uma consulta: para todos os clientesque tenham emprstimo em um banco, encontre seus nomes e

    nmeros de emprstimos, em SQL esta consulta pode serescrita como:

    Selectdistinct nome_cliente, devedor.nmero_emprstimoFromdevedor, emprstimo

    Wheredevedor.nmero_emprstimo =emprstimo.nmero_emprstimo

  • 5/28/2018 Modelagem de Banco de Dados

    49/91

    6.Operao Rename7.Operaes em Strings8.Ordenao e Apresentao de TuplasSQL oferece ao usurio algum controle sobre a ordenao pormeio da qual as tuplas de uma relao sero apresentadas. Aclusula order by faz com que as tuplas do resultado de umaconsulta apaream em uma determinada ordem. Para listar emordem alfabtica todos os clientes que tenham emprstimo naagncia Casa Forte, escrevemos:

    Select distinctnome_clientefromdevedor, emprstimo

    where devedor.numero_emprstimo =emprstimo.nmero_emprstimoand nome_agncia = Casa

    Forteorder bynome_cliente

    Quanto a forma de ordenao, podemos indicar descpara ordemdecrescente e ascpara ordem ascendente. Se quisermos listar a

    relao emprstimo inteira, por ordem descendente de total. Sediversos emprstimo possrem o mesmo total, queremos que sejarealizada uma segunda ordenao ascendente por nmero deemprstimo:

    Select*fromemprstimo

  • 5/28/2018 Modelagem de Banco de Dados

    50/91

    order by total desc,nmero_emprstimoasc

    9.Definio de Esquema em SQL9.1 Criando Tabelas

    Para definir uma relao em SQL, utilizamos o comando createtableda seguinte forma:

    Create tabler(A1D1, A2D2,,AnDn,< regras de

    integridade1>...

    )

    onde r, o nome da relao, cada Ai o nome de um atributo noesquema da relao r e Di o tipo do domnio dos valores nodomnio dos atributos Ai. As regras de integridade permitidasenglobam:

    Primarykey(aj1, Aj2,,Ajm)Check(p)

    A especificao da primary key diz que os atributos Aj1,Aj2,,Aj, formam a chave primria da relao. A especificaode chave primria opcional, mas desejvel para cada uma dasrelaes. A clusula checkespecifica um predicado que precisaser satisfeito por todas as tuplas em uma relao. Exemplos:

  • 5/28/2018 Modelagem de Banco de Dados

    51/91

    Create tablecliente(nome_cliente char(20) not null,rua_cliente char(30),cidade_cliente char(30),primary key(nome_cliente))

    Create tableagncia(nome_agncia char(15) not null,cidade_agencia char(30),

    fundos integer,primary key (nome_agncia),check(fundos >=0))

    Createtableconta(nmero_conta char(10) not null,

    nome_conta char(15),saldo integer,primary key(nmero_conta)check(saldo >= 0))

    Create tabledepositante(nome_cliente char(20) not null,

    nmero_conta char(10) not null,

    primary key (nome_cliente,nmero_conta))

    Para remoo de uma relao de um banco de dados SQL usamoso comando drop table. O drop table remove todas asinformaes de uma relao do banco de dados.

  • 5/28/2018 Modelagem de Banco de Dados

    52/91

    O comandoDrop tabler

    uma opo mais drstica do que o comando

    Delete fromr

    O comando alter tablepode adicionar atributos em uma tabelaj existente. Neste caso, todas as tuplas j existentes, recebemvalor nulo para esse novo atributo. Exemplo:

    Alter tabler addA D

    Para remover atributos de uma relao, o comando abaixo podeser usado:

    Alter tabler dropA

    9.2 Vises

    Definimos uma viso em SQL usando o comando create view.Para definir a viso precisamos dar-lhe um nome e definir aconsulta que processar essa viso. A forma do comando create

    view a seguinte:

    Create viewv as

    Como exemplo, considere uma viso composta dos nomes dasagncias e nomes de clientes que tenham uma conta na agncia.Definio:

  • 5/28/2018 Modelagem de Banco de Dados

    53/91

    Create view clientes_contaas(selectnome_agencia, nome_clientefromdepositante, contawhere depositante.nmero_conta =

    conta.nmero_conta)

    Usando agora a viso clientes_conta podemos encontrar todos oscliente da agencia Casa Forte , escrevendo:

    Selectnome_clienteFromclientes_contaWherenome_agencia = Casa Forte

    A definio de create view cria uma definio de viso em umbanco de dados e essa definio fica armazenada no banco atque um comando drop viewnome_visoseja executado.

    9.3 Modificaes no banco de dadosa)RemoesUm pedido para remoo de dados expresso muitas vezes

    do mesmo modo que uma consulta. Podemos removersomente tuplas inteiras, no se pode excluir valores de umatributo em particular. Em SQL, a remoo expressa da

    seguinte forma:

    Delete from rWhere P

    Onde P representa um predicado, e r uma relao. Ocomando delete encontra primeiro todas as tuplas t em rpara as quais P(t) verdadeira, e ento, remove-as de r.

  • 5/28/2018 Modelagem de Banco de Dados

    54/91

    A clusula wherepode ser omitida no caso, da remoo detodas as tuplas de r.

    Exemplos:

    Delete from depositanteWhere nome_cliente = Smith

    Delete from emprstimo

    Where totalbetween 1300and 1500

    Delete from conta

    Where nome_agencia = Piedade

    b)Inseres

    Para inserir dados em uma relao podemos especificaruma tupla a ser inserida ou escrever uma consulta cujoresultado um conjunto de tuplas a inserir. Um comandoinsertsimples um pedido de insero para uma tupla.

    Exemplos:

    Insert into conta

    values (Piedade, A-2903, 1200)

    Desta forma, vamos inserir valores nas tabelas cliente,conta, agencia e depositante.

    Na insero de valores na tabela, possvel inserir valoresnulos em alguns atributos.

    c)Atualizaes

  • 5/28/2018 Modelagem de Banco de Dados

    55/91

    Em determinadas situaes, podemos querer modificar

    valores das tuplas sem, no entanto, alterar todos osvalores. Para esse fim, o comando updatepode ser usado.Exemplos:

    Update contaSet saldo = saldo * 1.05

    Update contaSet saldo = saldo * 1.06Where saldo > 1000

    Update contaSet saldo = saldo * 1.05

    Where saldo

  • 5/28/2018 Modelagem de Banco de Dados

    56/91

    From depositante

    E o conjunto (b)pode ser obtido com:

    Select nome_clienteFrom depositante

    a)UnioPara encontrar todos os clientes do banco quepossuem emprstimos, um contam ou ambos,escrevemos:

    (Selectnome_clientefrom depositante)union

    (select nome_clientefrom devedor)

    A operao de union, ao contrrio da clusula select,elimina automaticamente todas as repeties. Se noquisermos que as repeties sejam eliminadas,podemos escrever union all. Exemplo:

    (select nome_cliente

    from depositante)union all(select nome_cliente

    from devedor)

    b)Interseo

  • 5/28/2018 Modelagem de Banco de Dados

    57/91

    Para encontrar todos os clientes que tenham tantoemprstimos quanto contas no banco, escrevemos:

    (select distinct nome_clientefrom depositante)intersect(select distinct nome_clientefrom devedor)

    A operao intersect elimina automaticamnete todasas repeties.

    Se desejarmos obter todas as repeties, teremos deescrever intersect all, no lugar de intersect:

    (select nome_clientefrom depositante)

    intersect all(select nome_clientefrom devedor)

    c)ExcetoPara encontrar todos os clientes que tenham uma

    conta e nenhum emprstimo no banco, escrevemos:

    (select distinct nome_clientefrom depositante)

    except(select nome_clientefrom devedor)

  • 5/28/2018 Modelagem de Banco de Dados

    58/91

    Da mesma forma das operaes anteriores, aoperao exceptelimina as tuplas repetidas, mas caso

    deseje-se obt-las, pode-se usar a except all.

    10.2 Funes Agregadas

    Funes agregadas so funes que tomam uma coleo devalores como entrada, retornando um valor simples. A SQLoferece cinco funes agregadas pr-programadas:

    Mdia (average): avgMnimo (minimum): minMximo (maximum): maxTotal (total): sumContagem (count): count

    A entrada para sum e avg precisa ser um conjunto denmeros, mas as outras operaes podem operar comconjuntos de tipos de dados no-numricos tais como strings esemelhantes.

    Como exemplo de utilizao, considere a consulta: encontre amdia dos saldos nas contas de cada uma das agncias dobanco. Escrevemos a consulta:

    Selectavg(saldo)FromcontaWherenome_agencia = casa forte

    Como resultado dessa consulta, obtemos uma relao com umatributo nico, contendo uma nica linha com o valor numrico

  • 5/28/2018 Modelagem de Banco de Dados

    59/91

    que corresponde mdia dos saldos na agncia. Se quisermosdar um nome a este atributo, pode-se usar a clusula as.

    Muitas vezes, em algumas circunstncias, poder havernecessidade de aplicar uma funo agregada a um grupo deconjunto de tuplas. Neste caso podemos usar a clusula groupby. Tuplas com os mesmos valores em todos os atributosusados na clusula group by so colocados em um mesmo grupo.

    Como ilustrao, considere a seguinte consulta: encontre amdia dos saldos nas contas de cada uma das agncias dobanco. Escreve-se a seguinte consulta:

    Selectnome_agncia, avg(saldo)Fromconta

    Group by(nome_agncia)

    H casos em que existe a necessidade de eliminarem-serepeties antes de efetuar uma funo agregada. Serealmente desejarmos eliminar repeties, usamos a palavradistinctna expresso agregada.Um exemplo dessa utilizao, a seguinte consulta: encontretodos os nmeros dos depositantes de cada agncia. Nestecaso, um depositante contado somente uma vez,independente de quantos depsitos ele fez. Escrevemos essa

    consulta da seguinte forma:

    Selectnome_agncia, count(distinctnome_cliente)From depositante, contaWhere depositante.nmero_conta =

    conta.nmero_contaGroup by nome_agncia

  • 5/28/2018 Modelagem de Banco de Dados

    60/91

    s vezes precisamos definir condies e aplic-las a grupos aoinvs de aplic-las ao conjunto completo de tuplas. Podemos,

    por exemplo, estar interessados em obter quais agnciaspossuem mdia dos saldos aplicados em conta maior que 1200dlares. Essa condio ento no seria aplicada a uma nicatupla, mas, em cada grupo determinado pela clusula group by.Nesse caso, utiliza-se a clusula havingdo SQL. Exemplo:

    Selectnome_agncia, avg(saldo)FromcontaGroup bynome_agnciaHaving avg(saldo) > 1200

    Se quisermos contar o nmero de tuplas em uma relao,pode-se usar a notao: count(*), como por exemplo:

    Selectcount(*)

    Fromconta

    Exerccios

    1. Usando o Interbase, faa scripts em SQL para:a. Criar de todas as tabelas de nosso banco de

    dados fictcio de agencia bancria: cliente,

    agncia, conta, depositante, e emprstimo.

    b.Criar a viso, clientes_conta, como foiespecificada acima.

  • 5/28/2018 Modelagem de Banco de Dados

    61/91

    c.Especificar trs tipos de consultas:i. Usando as operaes de conjuntos,ii. Usando funes agregadas,

    iii. Usando operadores havinge/ou group by.

  • 5/28/2018 Modelagem de Banco de Dados

    62/91

    Teoria das dependncias

    Normalizao

    No projeto de um banco de dados devemos:

    Identificar dados

    Fazer com estes dados representemeficientemente o mundo real

    Como proceder? Por intuio?

    O processo de identificar e estruturar dados:

    Decomposio

    Modelo relacional

    Normalizao

    Normalizao

    Normalizao Mtodo permitindo identificar a existncia de

    problemas potenciais (anomalias de atualizao)

    no projeto de um BD relacional Converte progressivamente uma tabela em

    tabelas de grau e cardinalidade menores at quepouca ou nenhuma redundncia de dados exista

    Se a normalizao bem sucedida: O espao de armazenamento dos dados diminui A tabela pode ser atualizada com maior

    eficincia A descrio do BD ser imediata

  • 5/28/2018 Modelagem de Banco de Dados

    63/91

    Teoria das Dependncias

    Dependncia FuncionalSejam R(A1, A2, ..., An) e X, Y contidos em

    {A1,A2,..., An} diz-se que existe umaDependncia Funcional (DF) de X para Y (X ->

    Y) se somente se, em R, a um valor de Xcorresponde um e um s valor de Y.Ex: Num-cad -> Nome

    DF Total: Se X -> Y e Y -> X (X Y)

    Ex: Num-cad CPF DF Plena: quando um atributo dependente de

    dois (ou mais) outros.

    Ex: Num-pil Trajeto

    Num-av

    Teoria das Dependncias

    Chave Primria

    Um atributo A (ou uma coleo de atributos) a

    chave primria de uma relao R, se:1. Todos os atributos de R so funcionalmentedependentes de A

    2. Nenhum subconjunto de atributos de Atambm tem a propriedade 1.

  • 5/28/2018 Modelagem de Banco de Dados

    64/91

    Normalizao

    Definio:

    Uma relao est na Primeira Forma Normal(1NF) se todos os atributos que a compem soatmicos.

    Piloto Num-cad Nome CPF Salrio Diploma Descrio

    0010 Jos 123456 5.000,00 D1 Helicpteros

    D2 Avies a jato

    0015 Joo 234567 3.000,00 D3 Bi-motor0020 Manuel 345678 8.000,00 D1 Helicpteros

    D2 Avies a jato

    D4 Concorde

    0018 Jos 987654 4.000,00 D2 Avies a jato

    0010 Jos 123456 5.000,00

    0020 Manuel 345678 8.000,00

    0020 Manuel 345678 8.000,00

    Normalizao

    Consequncias da Normalizao: Extenso da chave primria Dependncia Funcional de parte da chave

    primria Anomalias de atualizao:

    atualizao: de todas as tuplas com mesmo valor deatributo

    inconsistncia: se a atualizao no for feita emtodos os nveis

    incluses: de um item que no tem correspondentepara os outros campos da chave primria

    remoes: de um item da chave provoca a remoode informaes adicionais

  • 5/28/2018 Modelagem de Banco de Dados

    65/91

    Normalizao

    Definio:

    Uma relao est na Segunda Forma Normal(2NF) se ela est na 1NF e todo atributo no-chave plenamente dependente da chaveprimria.

    Num-cad Nome CPF Salrio Diploma Descrio

    Dependncias Parciais

    Normalizao

    Como corrigir:1. Para cada subconjunto de atributos que

    compem a chave primria, criar uma relaocom este subconjunto como chave primria

    2. Colocar cada um dos outros atributos com osubconjunto mnimo do qual ele depende

    (Num-cad, Nome, CPF, Salrio)

    (Diploma, Descrio)

    (Num-cad, Diploma)

    3. Dar nome s novas relaes, por exemplo:Piloto, Diploma e Formao (respectivamente).

  • 5/28/2018 Modelagem de Banco de Dados

    66/91

    Normalizao

    Piloto Num-cad Nome CPF Salrio

    0010 Jos 123456 5.000,00

    0015 Joo 234567 3.000,00

    0020 Manuel 345678 8.000,00

    0018 Jos 987654 4.000,00

    Diploma Descrio

    D2 Avies a jato

    D3 Bi-motor

    D4 Concorde

    D1 Helicpteros

    Diploma

    Formao

    0010 D1

    0010 D2

    0015 D3

    0020 D1

    0020 D2

    0020 D4

    0018 D2

    Num-cad Diploma

    OBS: Anomalias foram eliminadas

    No houve perda de informao

    Teoria das Dependncias

    Dependncia Transitiva:Ocorre quando Y depende de X e Z depende de Y.

    Logo, Z tambm depende de X.

    X --> Y --> Z

    No-avio Tipo Capacidade Local

  • 5/28/2018 Modelagem de Banco de Dados

    67/91

    Normalizao

    Definio:Uma relao est na Terceira Forma Normal(3NF) se ela est na 2NF e nenhum atributono-chave transitivamente dependente dachave primria.

    Definio:Uma relao est na Forma Normal deBoyce/Codd (BCNF) se todo determinante umachave candidata.

    Como corrigir?Para cada determinante que no chavecandidata, remover da relao os atributos quedependem dele para criar uma nova relao ondeo determinante ser chave primria.

    Normalizao

    No-av Tipo Capacidade Local

    101 A320 320 Rio

    104 B727 250 S.Paulo

    105 DC10 350 Rio

    103 B727 250 Recife110 B727 250 Rio

    Avio

    No-av Tipo Local

    101 A320 Rio

    104 B727 S.Paulo

    105 DC10 Rio

    103 B727 Recife

    110 B727 Rio

    Avio1Tipo Capacidade

    A320 320

    B727 250

    DC10 350

    Tipo-av

  • 5/28/2018 Modelagem de Banco de Dados

    68/91

    Normalizao

    Relaes com mais de uma chave candidata

    Considere a relao:

    Aluno Disc Prof.

    Maria BD Fernando

    Maria ES Paulo

    Jos BD Fernando

    Jos ES Andr

    ADP

    e as regras:

    - para cada disciplina, cada estudante tem um nico

    professor

    - cada professor ensina uma nica disciplina

    - cada disciplina ensinada por vrios professores

    Normalizao

    Aluno Disciplina Professor

    A relao est na 3NF mas no est na BCNF

    A decomposio seria:

    Aluno Professor

    Maria Fernando

    Maria Paulo

    Jos Fernando

    Jos Andr

    AP Professor Disciplina

    Fernando BD

    Paulo ES

    Andr ES

    PD

  • 5/28/2018 Modelagem de Banco de Dados

    69/91

    Normalizao

    Piloto Avio TrajetoVo

    0020 101 Rec-Rio

    105 Rio- Spa

    Spa-Rec

    0010 101 Rec-For

    104

    0015 103 Rio-Spa

    Seja a relao:

    ?

    Piloto Avio Trajeto

    0020 101 Rec-Rio

    105 Rio- Spa

    Spa-Rec

    0010 101 Rec-For104

    0015 103 Rio-Spa

    0020

    0020 105

    0020 101 Spa-Rec

    0020 101 Rio-Spa

    0020 105 Rec-Rio

    0010 Rec-For

    Vo

    Normalizao

    Dependncia Multivalorada (DMV)

    Dada uma relao R com atributos A, B,C, existe uma dependncia multivalorada

    do atributo A no atributo B (A ->-> B)se um valor de A associado a umacoleo especfica de valores de B,independente de quaisquer valores de C.

    > A DMV s existe se R tem no mnimo 3 atributos

    > Dada R(A, B, C), a DMV A->-> B existe se A ->-> Ctambm existir. Da a notao: A ->-> B|C

  • 5/28/2018 Modelagem de Banco de Dados

    70/91

    Normalizao

    Definio:Uma relao est naQuarta FormaNormal (4NF) se ela est na 3NF (BCNF)e no existem dependnciasmultivaloradas

    Como corrigir?Separar a relao em relaes, cada umacontendo o atributo (A) quemultidetermina os outros (B, C), ou seja,R1 (A, B) e R2 (A, C).

    Normalizao

    Piloto Avio Trajeto

    0020 101 Rec-Rio

    105 Rio- Spa

    Spa-Rec

    0010 101 Rec-For104

    0015 103 Rio-Spa

    0020

    0020 105

    0020 101 Spa-Rec

    0020 101 Rio-Spa

    0020 105 Rec-Rio

    0010 Rec-For

    Vo

    Piloto Avio

    0020 101

    0020 105

    0010 101

    0010 104

    0010 103

    Vo1

    Piloto Trajeto

    0020 Rec-Rio

    0020 Rio-Spa

    0020 Spa-Rec

    0010 Rec-For

    0015 Rio-Spa

    Vo2

  • 5/28/2018 Modelagem de Banco de Dados

    71/91

    Normalizao

    OBS: Para evitar relaes no 4NF

    Quando existir mais de um atributomultivalorado, o processo de normalizaopara 1NF o seguinte:

    1. Criar uma relao para cada atributomultivalorado (AMV) (e os que ele determina).

    2. Incluir a chave primria da relao original(CPO)

    3. A chave primria ser: CPO + AMV

    Normalizao

    Notas: At agora o processo de decomposio

    substituia uma relao por duas de suas

    projees Pode acontecer que uma relao no

    possa ser decomposta sem perdas emduas relaes mas possa ser decompostaem trs ou mais. Este fenmeno chamado n-decomposio (n > 2).

  • 5/28/2018 Modelagem de Banco de Dados

    72/91

    Normalizao

    Seja a relao Vo e 3 projees binrias:

    Piloto Avio TrajetoVo

    0020 101 Rec-Rio

    105 Rec-Rio

    Rio-Spa

    0010 101 Rec-Rio

    0020

    0020 101

    Piloto Avio

    0020 101

    0020 105

    0010 101

    Avio Trajeto

    101 Rec-Rio

    105 Rec-Rio

    101 Rio-Spa

    Trajeto Piloto

    Rec-Rio 0020

    Rio-Spa 0020

    Rec-Rio 0010

    V1 V2 V3

    Normalizao

    Piloto Avio

    0020 101

    0020 105

    0010 101

    Avio Trajeto

    101 Rec-Rio

    105 Rec-Rio

    101 Rio-Spa

    Trajeto Piloto

    Rec-Rio 0020

    Rio-Spa 0020

    Rec-Rio 0010

    V1 V2 V3

    Avio

    Piloto Avio TrajetoV4

    0020 101 Rec-Rio

    105 Rec-Rio

    Rio-Spa

    0010 101 Rec-Rio

    0020

    0020 101

    0010 101 Rio-Spa (Trajeto, Piloto)

    Relao

    Original

  • 5/28/2018 Modelagem de Banco de Dados

    73/91

    Normalizao

    Definio:Uma relao R satisfaz a Dependncia deJuno * (X, Y, ..., Z) se somente se R igual juno de suas projees em X,Y, ..., Z onde X, Y, ..., Z sosubconjuntos do conjunto de atributos deR.

    No exemplo, a relao Vo satisfaz DJ:* ({Piloto, Avio)}, {Avio, Trajeto}, {Trajeto,Piloto})

    Normalizao

    Problemas na atualizao:

    Piloto Avio TrajetoVo

    P1 A1 T2

    P1 A2 T1

    P1 A1 T1

    Se t3 inserida => t4

    t3 pode ser removida

    Se t4 removida, uma das

    t tambm tem que ser

    Exemplo:

    Se Joo pilota um B737

    o trajeto Rec-Rio feito por um B737

    Joo pilota no trajeto Rec-Rio

    Ento

    Joo pilota um B737 no trajeto Rec-Rio

    O que no necessariamente verdadeiro

    P2 A1 T1

  • 5/28/2018 Modelagem de Banco de Dados

    74/91

    NormalizaoTeorema de Fagin

    R (A, B, C) satisfaz DJ *(AB, AC) sesomente se satisfaz o par de DMV A->->B|C

    Este teorema pode ser visto como umadefinio de DMV, logo:

    DJ

    DMV

    DF

    : Generalizao

    Normalizao

    OBS: A DJ a forma mais geral dedependncias que tratam relaes sendodecompostas via projeo e reconstrudasvia juno.

    Definio:Uma relao est na Quinta FormaNormal (5NF), tambm chamada deForma Normal Projeo/ Juno (PJNF),se somente se cada dependncia dejuno em R uma conseqncia dechaves candidatas de R.

  • 5/28/2018 Modelagem de Banco de Dados

    75/91

    Normalizao

    Notas: Qualquer relao 5NF est na 4NF Resultados demonstrados por Fagin:

    Qualquer relao dada pode ser decompostasem perdas em uma coleo equivalentes derelaes em 5NF, ou seja, a 5NF semprerealizvel

    Dada uma relao R, podemos dizer se R estna 5NF se conhecermos suas chaves candidatase todas as DJ em R.

    Embora seja fcil identificar DF e DMV, o mesmono pode ser dito da DJ porque seu significadointuitivo no bvio.

    Resumo da Normalizao

    Eliminar atributos no atmicos

    1NF

    Eliminar DF no plenas

    2NF

    Eliminar dependncias transitivas

    3NF

    Eliminar DF cujo determinante no chave candidata

    BCNF

    Eliminar DMV

    4NF

    Eliminar DJ (se encontradas)

    5NF

  • 5/28/2018 Modelagem de Banco de Dados

    76/911

    Modelo Entidade-Relacionamento- Anexos

    2

    Conjunto de Entidades Fracas

    Um conjunto de entidades pode no ter atributos suficientespara formar uma chave primria. Esse tipo de conjunto deentidades chamado umconjunto de entidades fracas.

    Um conjunto de entidades que tem uma chave primria chamado de conjunto de entidades fortes.

    Os conceitos de entidades fortes e fracas estorelacionados s dependncias de existncia. Um membro deum conjunto de entidades fortes definido como umaentidade dominante enquanto que um membro de um conjuntode entidades fracas uma entidade subordinada.

  • 5/28/2018 Modelagem de Banco de Dados

    77/912

    3

    Identificao de Entidades Fracas

    Apesar do conjunto de entidades fracas no possuirchave primria, precisa-se distinguir estas entidadesumas das outras. O identificador de um conjunto deentidades fracas um conjunto de atributos quepermite que esta distino seja feita. Esteidentificador tambm chamado de chave parcial.

    A chave primria de um conjunto de entidades fracas

    formado pela chave primria do conjunto de entidadesfortes ao qual a existncia do conjunto de entidadesfracas est vinculada.

    4

    O conjunto de entidades dominantes de identificao dito proprietrio do conjunto de entidades fracas porele identificada. O relacionamento que associa oconjunto de entidades fracas a seu proprietrio orelacionamento identificador.

    Um conjunto de entidades fracas identificado no

    diagrama E-R pela linha dupla usada no retngulo e nolosango do relacionamento correspondente. Um conjunto de entidades fracas pode participar como

    proprietrio de um relacionamento identificador comoutro conjunto de entidades fracas.

    A dependncia de existncia no implicanecessariamente, em um conjunto de entidades fracas.O conjunto de entidades subordinadas pode ter umachave primria.

  • 5/28/2018 Modelagem de Banco de Dados

    78/913

    5

    Diagrama E-R com um conjunto deentidades fracas

    N um ero_ emp r st im o To ta l

    Emprstimo Pagamento_

    Emprstimo Pagamento

    Numero_pagamento

    Data_pagamento

    Total_pagamento

    6

    Na figura, o conjunto de entidades fracaspagamento dependente do conjunto de entidadesfortes emprstimopelo conjunto derelacionamentospagamento_emprstimo.

    Tambm aparece na figura linhas duplas para

    identificar a participao total do conjunto deentidadespagamentono relacionamentopagamento_emprstimo.

    A seta depagamento_emprstimoparaemprstimoindica que cadapagamento para umnico emprstimo. O identificador do conjunto deentidades fracas est sublinhado com uma linhatracejada.

  • 5/28/2018 Modelagem de Banco de Dados

    79/914

    7

    Extenso do E-R

    A maioria dos sistemas de bancos de dados podeser modelada apenas com os conceitos bsicos doE-R, mas, alguns aspectos de um banco de dados spode ser expresso de modo mais convenienteatravs de algumas extenses do modelo E-R.Discutiremos os recursos de especializao egeneralizao,nvel superior e inferior doconjunto de atributos, herana de atributos eagregao.

    8

    Especializao

    Um conjunto de entidades pode conter sub-grupos de entidades queso, de alguma forma, diferentes de outras entidades do conjunto.

    Por exemplo, um subconjunto de entidades pode possuir atributosque no so compartilhados pelas demais entidades do conjunto. O

    modelo E-R proporciona um significado para a representao desseagrupamentos distintos entre as entidades.

    Seja, por exemplo, um conjunto de entidades conta, com osatributos nmero_contaesaldo. Onde conta futuramenteclassificado como conta_poupanaeconta_corrente.

  • 5/28/2018 Modelagem de Banco de Dados

    80/915

    9

    Cada um dos novos tipos de conta descrito como um conjunto deatributos que, alm de todos os atributos de conta, possui aindaoutros atributos adicionais.

    O processo de projetar os subgrupos dentro de um conjunto deentidades chamado de especializao. A especializao da contanos permite distinguir os tipos de contas.

    Um conjunto de entidades pode ser especializado por mais de umacaracterstica de diferenciao.

    Em termos de diagrama E-R a especializao representada pelotringulo rotulado de ISA. Este relacionamento ISA pode sertambm entendido como um relacionamento de super ou subclasse.

    10

    ISA

    ISA

    EspecializaoeG

    eneralizao

    Numero_conta Saldo

    Conta

    Conta_P oupana Conta_Corrente

    Taxas_Juros Limite_cheque_especial

    Padro Especial Snior

    Numero_cheque Taxa_juros Saldo_mnimo Data_aniversrio

  • 5/28/2018 Modelagem de Banco de Dados

    81/916

    11

    Generalizao

    O refinamento do conjunto de entidades em nveis sucessivos desubgrupos indica um processotop-downde projeto, no qual asdiferenciaes so feitas de modo explcito. O projeto pode serrealizado de modobottom-up, no qual vrios conjuntos de entidadesso sintetizados em um conjunto de entidades de alto nvel, combase em atributos comuns.

    Existem, por exemplo, similaridades entre o conjunto de entidadesconta-movimento e o conjunto de entidades conta-poupana, j quepossuem atributos comuns. Este compartilhamento de atributospode ser expressado pela generalizao.

    12

    Conjuntos de entidades superiores e inferiores podem tambm serdesignados em termos de super e subclasses, respectivamente. Oconjunto de entidades conta uma superclasse econta_poupanaeconta_correnteso subclasses.

    Podemos dizer que a generalizao o inverso da especializao,onde a diferena entre as duas abordagens podem ser

    caracterizadas pelo ponto de partida e seus objetivos gerais. A especializao parte de um nico conjunto de entidades e

    estabelece as diferenas expressas no conjunto de entidades denvel inferior.

    A generalizao procede para o conhecimento de um nmero deconjuntos de entidades que compartilham caractersticas comuns,sintetizando esses conjuntos de entidades em um nico conjunto deentidades.

  • 5/28/2018 Modelagem de Banco de Dados

    82/917

    13

    Herana de Atributos

    Uma propriedade decisiva das entidades de nveissuperior e inferior criadas pela especializao e pelageneralizao a herana de atributos.

    Os atributos dos conjuntos de entidades de nvelsuperior so herdados pelos conjuntos de entidades denvel inferior.

    Os conjuntos de entidades de nvel inferior tambmherdam a participao em conjuntos de relacionamentosdos quais participam seus conjuntos de entidades denvel superior.

    14

    Restries de Projeto

    Para a modelagem mais apurada de uma empresa, o projetista dobanco de dados pode optar por definir algumas restries em umageneralizao em particular. Um tipo de restrio envolve adeterminao das entidades que podem participar de um dado

    conjunto de entidades de nvel inferior.

    Restrio definida por condio: o conjunto de entidades selecionado com base na satisfao ou no de condies oupredicados pr-estabelecidos. Um tipo de generalizao definidapor atributo, poderia ser exemplificada com o atributo da entidadeconta, tipo_conta, especializando a mesma em conta_poupana ouconta_corrente.

  • 5/28/2018 Modelagem de Banco de Dados

    83/918

    15

    Restries de Projeto Definida pelo Usurio: Um conjunto de entidades de baixo nvel

    definido pelo usurio no tem seus membros classificados por umacondio, as entidades so designadas a um determinado conjuntode entidades por usurios do banco de dados. A escolha paracomposio de determinada entidade de nvel inferior feita porcritrios individuais, pesando a opinio do usurio, e suaimplementao feita por uma operao que adiciona a entidade aoconjunto de entidades.

    Um segundo tipo de restrio determina se uma entidade podepertencer a mais de um conjunto de entidades de nvel inferior.

    Mutuamente exclusivos: Exige que uma entidade pertena a apenasum conjunto de entidades de nvel inferior. Como por exemplo, aespecializao da entidade conta.

    16

    Restries de Projeto

    Sobrepostos: Em generalizaes sobrepostas uma mesmaentidade pode pertencer a mais de um conjunto de entidadesde nvel inferior, dentro de uma generalizao simples. Umexemplo, poderia ser dos grupos de trabalho de empregados.

    A restrio de totalidade determina se uma entidade de nvelsuperior pertence ou no, a, no mnimo, um dos conjuntos deentidades de nvel inferior dentro da generalizao.

    Total: cada entidade do conjunto de entidades de nvelsuperior deve pertencer a um conjunto de entidades de nvelinferior.

  • 5/28/2018 Modelagem de Banco de Dados

    84/919

    17

    Parcial: cada entidade de nvel superior pode pertencer a qualquerum dos conjuntos de entidades de nvel inferior.

    A generalizao conta total, enquanto que a generalizaoempregados, parcial.

    Quando uma restrio total aplicada, uma entidade inserida em umconjunto de entidades de nvel superior dever ser inserida em pelomenos um dos conjuntos de entidades de nvel inferior.

    Em restries definidas por condio, todas as entidades de nvelsuperior que satisfaam tal condio devem ser inseridas no

    conjunto de entidades de nvel inferior.Uma entidade excluda de um conjunto de entidades de nvel superior

    tambm dever ser excluda de todos os conjuntos de entidades denvel inferior s quais pertenam.

    18

    Agregao

    Uma das limitaes do modelo E-R que no possvelrepresentar relacionamentos entre relacionamentos.

    A agregao a abstrao por meio do qual os

    relacionamentos so tratados como entidades de nvelsuperior. Como um conjunto de entidades tratado damesma forma que qualquer outro conjunto de entidades.

    Considere o exemplo que descreve informaes sobreclientese seus emprstimos.

    Suponha que cada par emprstimo-clientepossui umbancrio, ou agente-emprstimo, responsvel peloacompanhamento de determinado emprstimo.

  • 5/28/2018 Modelagem de Banco de Dados

    85/9110

    19

    O conjunto de relacionamentos devedoreagente-emprstimopoderia ser combinado em um nicoconjunto de relacionamentos. Mas, isso tornariaobscura a estrutura deste esquema.

    Isto poderia, por exemplo, dar a entender que existeum agente-emprstimoespecfico responsvel paracada par emprstimo-cliente.

    Existe ento uma redundncia de informaes na figura

    resultante, uma vez que todo par emprstimo-clienteem agente-emprstimoest tambm em devedor.

    A melhor maneira de modelar a situao acima descrita,pois, a agregao.

    20

    Seguro_social

    Nome_cliente

    Rua-cliente

    Cidade_cliente

    Cliente devedor Emprstimo

    Numero_emprstimo saldo

    Agente_

    Emprstimo

    Empregado

    Seguro_social_empregado

    Nome_empregado

    Numero_telefone

  • 5/28/2018 Modelagem de Banco de Dados

    86/9111

    21

    Projeto de um Esquema de Banco deDados E-R

    Diante de uma grande nmero de possibilidades durante o projetode um esquema de banco de dados, o projetista tem as seguintesopes:

    Optar entre o uso de um atributo ou de um conjunto deentidades para representar um objeto;

    Expressar uma concepo real por um conjunto de entidades oupor um conjunto de relacionamentos;

    Optar por um conjunto de relacionamentos ternrio, ou por umpar de de relacionamentos binrios;

    Decidir se deve usar entidades fortes;

    Decidir se o uso de generalizao apropriado;

    Agregar grupos de uma parte do diagrama E-R em um conjuntode entidades simples, caso apropriado.

    22

    Fases de Projeto

    Um modelo de dados de alto nvel proporciona ao projetista umabase conceitual na qual se pode especificar, de modo sistemtico,quais as necessidades dos usurios do banco de dados e como estebanco de dados ser estruturado para atender plenamente todas as

    necessidades. A primeira fase do projeto, a especificao das necessidades

    do usurio.

    A segunda fase a escolha do modelo de dados, por meio daaplicao de seus conceitos. Este fase chamada deprojetoconceitual, e proporciona uma viso detalhada da empresa.Nesta fase o projetista tem a responsabilidade de checar asentidades, relacionamentos, e restries de projeto, comotambm de remover todo tipo de redundncia existente.

  • 5/28/2018 Modelagem de Banco de Dados

    87/9112

    23

    Fases de Projeto

    Na especificao das necessidades funcionaisos usuriosdescrevem os tipos de operaes ou transaes que serorealizadas com os dados, como atualizao, consulta e remoo.

    O transporte do modelo de dados abstrato para sua implementaoocorre nas fases finais do projeto. Na fase deprojeto lgico, oesquema conceitual mapeado para o modelo de implementaofsica de dados do SGBD que est sendo usado.

    Oprojeto fsico totalmente dependente dos recursos do SGBDutilizado.

    Iremos trabalhar na fase do projeto do esquema conceitual.

    24

    Dados-Exemplo de um EmpresaBancria

    Um banco organizado em agncias. Cada agncia localizada emuma cidade identificada por um nome nico.

    Os clientes do banco so identificados pelo nmero de seu segurosocial. Alm disso, o banco mantm dados como nome, rua e cidade

    do cliente. Os clientes podem possuir conta e contrair emprstimos.O cliente pode estar associado a um agente de emprstimos.

    Os empregados do banco tambm so identificados pelo nmero deseu seguro social. Alm disso, so guardados os dados de nome enumero de telefone, nome de dependentes,e seguro social de seugerente, para cada empregado. Tambm se encontra no banco dedados a data de contratao do empregado.

  • 5/28/2018 Modelagem de Banco de Dados

    88/9113

    25

    Empresa Bancria

    O banco oferece dois tipos de contas: conta-poupana econta-movimento. As contas movimento podem possuirmais de um correntista, e um correntista pode possuirmais de uma conta. Cada conta possui um nico nmero.O banco controla o saldo de cada