Você está na página 1de 91

Disciplina: MODELAGEM DE BANCO 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 de programas para acesso a esses dados. O principal objetivo de um SGBD proporcionar um ambiente tanto conveniente quanto a eficiente para a recuperao e armazenamento das informaes do banco de dados. Sistemas de banco de dados so projetados para gerir grandes volumes de informaes. O gerenciamento de informaes implica a definio das estruturas de armazenamento das informaes e da definio dos mecanismos para a manipulao dessas informaes. Tambm um sistema de banco de dados deve garantir a segurana das informaes armazenadas contra eventuais problemas com o sistema, alm de impedir tentativas de acesso no autorizadas. Tambm se os dados so compartilhados por diversos usurios o sistema deve evitar a ocorrncia de resultados anmalos. 2. Por que Sistemas de Banco de Dados

Um Sistema de processamento de arquivos convencional onde, registros permanentes so armazenados em vrios arquivos e diversos programas de aplicao so escritos para extrair e gravar registros nos arquivos apropriados, podem ser apropriadamente gerenciados pelos sistemas operacionais existentes. Mas, estes sistemas apresentam numerosas desvantagens: Inconsistncia e Redundncia de Dados: Como arquivos e programas normalmente so criados e mantidos por diferentes programadores, em geral comum que os arquivos possuam formatos diferentes e os programas estejam escritos em diferentes linguagens de programao. Alm disso, a mesma informao pode estar repetida em mais de um arquivo. Dificuldade de Acesso aos Dados: Normalmente em um sistema de processamento de arquivos comum, quando existe uma necessidade de uma relao de empregados, por exemplo, segundo uma determinada condio, se esta situao no tiver sido prevista inicialmente no sistema, necessrio que um novo programa seja desenvolvido e que gere esta lista solicitada. O fato que este ambiente no est 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 apresentar diferentes formatos, difcil escrever novas aplicaes para a recuperao apropriada destes dados. Problemas com Integridade: Os valores dos dados atribudos e armazenados em um banco de dados devem

satisfazer certas restries para manuteno da consistncia. O problema aumenta quando as restries atingem diversos itens de dados em diferentes arquivos. Problemas de atomicidade: Um sistema computacional est sujeito a falhas. E imprescindvel garantir que, uma vez detectada uma falha, os dados sejam salvos em seu ltimo estado consistente, anterior a ela. Por exemplo, uma operao de transferncia bancria entre contas correntes, 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 para aumento do desempenho do sistema como um todo e para melhores tempos de resposta. Este tipo de interao pode resultar em inconsistncia de dados. Por exemplo, dois saques simultneos a uma mesma conta corrente. Problemas de Segurana: Nem todos os usurios de banco de dados esto autorizados ao acesso a todos os dados. Em um sistema bancrio, por exemplo, os funcionrios do departamento de pessoal no deveriam ter acesso a informaes dos clientes do banco, s apenas ao conjunto de pessoas ao qual o seu departamento lhe diz respeito. Estas e outras dificuldades provocaram o desenvolvimentos dos SGBDs. Iniciaremos o estudo dos sistemas de bancos de dados, mostrando, para isso, conceitos e algoritmos que foram desenvolvidos para a efetiva manipulao dos mesmos.

Linguagens de Banco de Dados e Tipos de Usurios 1. Linguagens de Banco de Dados Um sistema de banco de dados proporciona dois tipos de linguagens: uma especfica para os esquemas do banco de dados e outra para expressar consultas e atualizaes. 1.2 Linguagens de Definio de Dados Um esquema de banco de dados especificado por um conjunto de definies expressas por uma linguagem especial chamada linguagem de definio de dados (data-definition language DDL). O resultado da compilao dos parmetros DDLs armazenado em um conjunto de tabelas que constituem um arquivo especial chamado dicionrio de dados ou diretrio de dados. Um dicionrio de dados um arquivo de metadados, isto , dados a respeito de dados. A estrutura de memria e o mtodo de acesso usados pelo banco de dados so especificados por um conjunto de definies em um tipo especial de DDL chamado de linguagem de definio e armazenamento de dados (data storage and definition language). 1.3 Linguagens Manipulao de Dados

Os nveis de abstrao que foram discutidos anteriormente no se aplicam apenas definio ou a strutura dos dados, mas tambm sua manipulao. Por manipulao de dados, entendese: A recuperao das informaes armazenadas no banco de 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 que viabiliza o acesso ou a manipulao dos dados de forma compatvel ao modelo de dados apropriado. So basicamente dois tipos: DMLs procedurais exigem que o usurio especifique quais dados so necessrios, e como obt-los. DMLs no-procedurais exige que o usurio especifique quais dados so necessrios sem especificar como obt-los. Uma consulta uma solicitao para a recuperao de informaes. A parte de uma DML que responsvel pela recuperao de informaes chamada linguagem de consultas (query language). 1.4 Gerenciamento de Transaes Muitas vezes diversas operaes em um banco de dados constituem de uma nica unidade lgica de trabalho. Como o caso da transferncia de crditos entre duas contas-correntes. A transferncia deve acontecer como um todo ou nada deve ser

feito. Essa caracterstica de tudo ou nada, chamado de atomicidade. Alm disso, necessrio que a transferncia de fundos preserve a consistncia do banco de dados. Essa exigncia chamada de consistncia. Depois da execuo com sucesso da operao de transferncia, os novos valores devem persistir, a despeito da possibilidade de falhas no sistema. Essa persistncia chamada de durabilidade. Uma transao uma coleo de operaes que desempenha uma funo lgica nica dentro de uma aplicao do sistema de banco de dados. Cada transao uma unidade de atomicidade e consistncia. Assim, exige-se que as transaes no violem nenhuma regra de consistncia do banco de dados. de responsabilidade do programador definir as diversas transaes tais que cada uma preserve a consistncia do banco de dados. de responsabilidade do sistema de banco de dados assegurar as propriedades de atomicidade e durabilidade no gerenciamento das transaes. de sua responsabilidade tambm detectar falhas e recuperar o banco de dados garantindo o retorno de seu ltimo estado consistente. Outra responsabilidade importante diz respeito ao controle de concorrncia, que consiste de controlar a interao entre transaes concorrentes de modo a garantir a consistncia do banco de dados. 1.5 Administrao de Memria

Os bancos de dados, normalmente, ocupam um grande volume de memria. Este tamanho muitas vezes pode chegar no s a gigabytes, mas tambm a terabytes. Um gerenciador de memria um mdulo de programas para interface entre o armazenamento de dados em um nvel baixo e consultas e programas submetidos ao sistema. O gerenciador de memria responsvel pelo armazenamento, recuperao e atualizao de dados no banco de dados. 1.6 Administrador de Banco de Dados Uma das grandes motivaes de uso de SGBDs o controle centralizado tanto de dados quanto dos programas de acesso a esses dados. A pessoa que centraliza esse controle do sistema chamada de administrador de banco de dados (DBA). Dentre as suas funes, destacam-se: Definio do esquema. O DBA cria o esquema do banco de dados original escrevendo um conjunto de definies que so transformadas pelo compilador DDL em um conjunto de tabelas armazenadas de modo permanente no dicionrio 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, as quais so traduzidas pelo compilador de armazenamento de dados e pelo compilador de linguagem de definio de dados. Esquema e modificaes na organizao fsica. Os programadores realizam relativamente poucas alteraes no esquema do banco de dados ou na descrio da organizao fsica de armazenamento.

Fornecer autorizao de acesso ao sistema. O fornecimento de diferentes tipos de autorizao no acesso aos dados permite que o administrador de dados regule o acesso dos diversos usurios s diferentes partes do sistema. Especificao de regras de integridade. Os valores dos dados armazenados no banco de dados devem satisfazer certas restries para manuteno de sua integridade.

1.7 Usurios de Banco de Dados H quatro tipos bsicos de usurios de sistemas de banco de dados, cuja diferena refere-se a suas expectativas de interao com o sistema. Programadores de aplicaes. So profissionais em computao que interagem com o sistema por meio das chamadas DML, as quais so envolvidas por programas escritos na linguagem hospedeira. Estes programas so comumente referidos como programas de aplicao. Usurios sofisticados. Interagem com o sistema sem escrever programas. Formulam suas solicitaes ao banco de dados por meio de linguagens de consultas. Cada uma dessas solicitaes submetida ao processador de consultas. Usurios especialistas. So usurios sofisticados que escrevem aplicaes especializadas de bancos de dados que no podem ser classificadas como aplicaes tradicionais em processamento de dados.

Usurios navegantes. So os usurios comuns que interagem com o sistema chamando um dos programas aplicativos permanentes j escritos, como por exemplo, um usurio que pede a transferncia de uma conta para outra.

Consideraes Bsicas, Abstrao e Modelos de Dados

Bancos de Dados e Sistemas de Banco de Dados tm se tornado um componente essencial todos os dias da vida moderna. Aplicaes de banco de dados tradicionais dizem respeito a sistemas bancrios, sistemas de reservas areas, sistemas de controle de estoque. Com o avano da tecnologia, novos tipos de bancos de dados foram desenvolvidos, com aplicaes e uso especficos. Bancos de Dados Multimdia podem, por exemplo, armazenar figuras, vdeoclips e mensagens de sons. Bancos de Dados Geogrficos podem armazenar e analisar mapas, dados climticos e imagens de satlite. 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 muito grandes para a tomada de decises. Tecnologias de Tempo Real e de Banco de Dados Ativos so 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 que entender o bsico das aplicaes de banco de dados tradicionais. Um banco de dados pode ser considerado como uma coleo de dados relacionados. Por dado entendem-se fatos conhecidos que podem ser armazenados e que possuem um significado implcito. Um banco de dados possui as seguintes propriedades implcitas:

Representa alguns aspectos do mundo real, muitas vezes chamado de mini-mundo ou universo do discurso. uma coleo de dados logicamente coerente com alguns significados inerentes aos mesmos. projetado, construdo e povoado com dados para um propsito especfico. Um banco de dados pode ser de qualquer tamanho e de complexidade variada. Pode ser gerado e mantido manualmente ou pode ser computadorizado. Um Sistema de Gerenciamento de Banco de Dados uma coleo de programas que permitem que usurios criem e mantenham um banco de dados. Um SGBD tambm um sistema de software de propsito geral que facilita o processo de definio, construo e manipulao 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 ser armazenados no banco de dados. A construo do banco de dados o processo de armazenamento de dados em algum armazenamento mdio que controlado pelo SGBD. A manipulao do banco de dados inclui tais funes como consulta a banco de dados para recuperar dados especficos e a atualizao destes dados. Chamaremos de Sistema de Banco de Dados, o banco de dados e o SGBD, juntos. A Figura 1 mostra a estrutura de um Sistema de Banco de Dados.

Figura 1 Um Ambiente de Sistema de Banco de Dados 3. Abstrao de Dados Um SGBD, como j dissemos, uma coleo arquivos e programas inter-relacionados que permitem ao usurio o acesso para consultas e alteraes a esses dados. Um dos grandes benefcios de um sistema de banco de dados permitir aos usurios, uma viso abstrata dos dados.

Um sistema precisa ser eficiente na recuperao de informaes. Esta eficincia muitas vezes est relacionada com a complexidade internas das estruturas de representao destes dados. Esta complexidade precisa ser transparente para os usurios, ou seja, atravs dos nveis de abstrao, os SGBDs omitem a complexidade de armazenamento e manuteno dos dados que esto sendo manipulados, de modo a facilitar a interao dos usurios com o sistema. Nvel Fsico: o nvel de abstrao mais baixo e descreve como os dados esto de fato armazenados. Nvel Lgico: este o nvel de abstrao mdio, que descreve quais dados esto armazenados no banco de dados e quais so os inter-relacionamentos entre eles. O nvel lgico normalmente usado pelos administradores que precisam decidir quais as informaes que precisam estar no banco de dados. Nvel de Viso: Este nvel de abstrao mais alto que descreve apenas parte do banco de dados. Muitos usurios dos bancos de dados nem precisam conhecer todas as informaes armazenadas. Para isso, nveis de viso so definidos de modo que as interaes sejam simplificadas. A figura abaixo mostra o inter-relacionamento entre estes trs nveis de abstrao:

Figura 2 Trs nveis de Abstrao de dados


Podemos fazer uma analogia dos nveis de abstrao com tipos de dados em linguagens de programao. Por exemplo, dada a estrutura abaixo: Type cliente = record Nome_cliente : string; Seguro_social : string; Rua_cliente : string; Cidade_cliente : string; end; No nvel fsico, um registro de cliente pode ser escrito como um bloco consecutivo de memria. No nvel lgico, cada registro descrito por um tipo definido, como ilustrado no segmento de

cdigo acima. Normalmente os programadores e administradores do banco de dados trabalham neste nvel de abstrao. No nvel de viso, os usurios vem apenas um conjunto de programas de aplicao que escondem os detalhes dos tipos de dados.

3.1 Instncias e Esquemas Um banco de dados muda ao longo do tempo por meio das informaes que nele so inseridas ou excludas. O conjunto de informaes contidas em determinado banco de dados em um dado momento chamado instncia do banco de dados. O projeto geral do banco de dados chamado de esquema. Fazendo uma anlise comparativa com o exemplo dado de clientes, acima, uma varivel poderia ser declarada como: Var cliente1 : cliente; A definio de tipo em uma linguagem de programao corresponde ao esquema do banco de dados. O valor em um dado instante de uma varivel de um determinado tipo, corresponde a uma instncia do esquema do banco de dados. Os sistemas de banco de dados apresentam diversos esquemas, referentes aos nveis de abstrao que foram discutidos. Em geral os sistemas de banco de dados so suporte a um esquema fsico, um esquema lgico e vrios subesquemas.

A capacidade de modificar a definio dos esquemas em determinado nvel, sem afetar o esquema do nvel superior, chamado independncia de dados. Existem dois nveis de independncia de dados: a. Independncia fsica de dados b. Independncia lgica de dados 4. Modelos de Dados Um modelo de dados um conjunto de ferramentas conceituais utilizadas para a descrio de dados, relacionamento entre esses dados, semntica de dados e regras de consistncia. Os modelos so classificados em trs diferentes grupos: modelos lgicos com base em objetos, modelos lgicos com base em registros e modelos fsicos. 4.1 Modelos Lgicos com base em Objetos Os modelos lgicos com base em objetos so usados na descrio de dados no nvel lgico e de vises. Existem vrios modelos desta categoria, tais como: Modelo Entidade-Relacionamento Modelo Orientado a Objetos Modelo Semntico de Dados Modelo Funcional de Dados

4.1.1 Modelo Entidade-Relacionamento O modelo de dados entidade-relacionamento (E-R) tem como base a percepo do mundo real como um conjunto de objetos bsicos, chamados de entidades, e do relacionamento entre eles. Uma entidade uma coisa ou um objeto do mundo real, que pode ser identificado por outros objetos. As entidades so descritas no banco de dados por meio de seus atributos. Um relacionamento uma associao entre entidades. Alm das entidades e dos relacionamentos, o modelo E-R representa certas regras as quais o 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 por base um conjunto de objetos. Um objeto contm valores armazenados em variveis instncias dentro do objeto. Um objeto tambm contm conjuntos de cdigos que operam este objeto. Estes conjuntos de cdigos so chamados de mtodos. Os objetos que contm os mesmos tipos de valores e os mesmos mtodos so agrupados em classes. Onde uma classe pode ser vista como uma definio de tipo para objetos. 4.2 Modelos Lgicos Baseados em Registros Modelos lgicos baseados em registros so usados para descrever os dados no nvel lgico e de viso. usado tanto para especificar a estrutura lgica do banco de dados quanto para

implementar uma descrio de alto nvel. Dos trs modelos apresentados, o modelo relacional o que mais tem se destacado nos ltimos anos. O modelo hierrquico e de rede ainda usado em um 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 tabela possui 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 de registros e as relaes entre esses registros so representadas por links, as quais podem ser vistas pelos ponteiros. Os registros so organizados no banco de dados por um conjunto arbitrrio de grficos. 4.2.3 Modelo Hierrquico O modelo hierrquico similar ao modelo de rede pois os dados e suas relaes so representados tambm por registros e links. A diferena que no modelo hierrquico os registros esto organizados em rvores ao invs de grficos arbitrrios. 4.3 Modelos Fsicos de Dados

Os modelos fsicos de dados so usados para descrev-los no nvel mais baixo. H poucos modelos fsicos de dados em uso. Dois deles so conhecidos: o modelo unificado, e o modelo de partio de memria.

Modelo Entidade-Relacionamento 1. Conceitos bsicos O modelo Entidade-Relacionamento (E-R) tem por base a percepo de que o mundo real formado por um conjunto de objetos chamados de entidades e pelo conjunto de relacionamentos entre esses objetos. Foi desenvolvido para facilitar o projeto do banco de dados, permitindo a especificao do esquema da empresa que representa toda a estrutura lgica. O modelo E-R um dos modelos com maior capacidade semntica; que se referem a tenativa de representar o significado dos dados. Existem trs noes bsicas empregadas pelo modelo E-R: conjunto de entidades, conjunto de relacionamentos, e os atributos. 1.1. Conjunto de Entidades Uma entidade uma coisa ou um objeto do mundo real que pode ser 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 valores para 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 de frias ou um conceito.

Um conjunto de entidades um conjunto de abrange entidades de um mesmo tipo que compartilham as mesmas propriedades: os atributos. As entidades individuais que constituem um conjunto so chamadas de extenses do conjunto de entidades. Uma entidade representada por um conjunto de atributos. Atributos so propriedades descritivas de cada membro de um conjunto de entidades. Formalmente um atributo de um conjunto de entidades uma funo que relaciona o conjunto de entidades a seu domnio. Um atributo, como usado no modelo E-R, pode ser caracterizado pelos seguintes tipos: Atributos Simples ou compostos. Os atributos simples so aqueles que no so divididos em partes. Os compostos podem ser divididos em partes, por exemplo, nome_cliente, pode ser estruturado em prenome, nome_intermedirio, e sobrenome. Os atributos compostos ajudam-nos a agrupar atributos correlacionados tornando o modelo mais claro. Atributos monovalorados ou multivalorados. Um exemplo de um atributo monovalorado poderia ser o atributo nmero_emprstimo, o qual teria associado apenas um nmero de emprstimo. Pode acontecer, no entanto, que uma determinada instncia possua um conjunto de valores para uma nica entidade. Por exemplo, o atributo nome_dependente, da entidade empregado, pode ter um, nenhum ou vrios dependentes cadastrados. Atributos nulos. Um atributo nulo quando uma entidade no apresenta valor para o mesmo. Por exemplo, se um empregado no possui dependentes o valor do atributo

nome_dependente ser nulo, significando que este atributo no aplicvel a esta instncia em particular. Atributo derivado. O valor deste atributo pode ser derivado de outros atributos ou entidades a ele relacionados. Por exemplo, a idade de um funcionrio pode ser calculada pela data de seu aniversrio.

2. Conjunto de Relacionamentos Um relacionamento uma associao entre uma ou vrias entidades. Um conjunto de relacionamentos um conjunto formado por relacionamentos de um mesmo tipo. Considere dois relacionamentos de entidades cliente e emprstimo. O conjunto de relacionamentos devedor denota a associao entre clientes e emprstimos bancrios contrados pelo cliente. A associao entre os conjuntos de entidades referida como uma participao, isto , o conjunto de entidades E1, E2,..., En participa do 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 so geralmente distintos, papis so implcitos, e no so em geral, especificados. Mas, so teis quando o relacionamento precisa ser esclarecido. Em conjuntos de relacionamentos recursivos, nomes explcitos de papis muitas vezes so necessrios. Por exemplo, o conjunto de entidades empregado, e o conjunto de

relacionamentos trabalha_para, que modelado para ordenar os pares da entidade empregado. O primeiro empregado tem papel de gerente, enquanto que o outro tem o papel de empregado. Um relacionamento pode ter atributos descritivos. O conjunto de relacionamentos depositante, com o conjunto de entidades cliente e conta, por exemplo, apresenta o atributo data_acesso. Relacionamento binrio um relacionamento que envolve dois conjuntos de entidades. A maior parte dos conjuntos de relacionamentos modelados em um sistema de banco de dados do tipo binrio. Algumas vezes, no entanto, aparecem relacionamentos que envolvem mais de dois conjuntos de entidades. Como exemplo, podemos combinar os conjuntos de relacionamentos devedor e agncia_emprstimo formando o conjunto de relacionamentos CEA, entre as entidades Cliente, Emprstimo e Agncia. O nmero de entidades que participam de um relacionamento define o grau deste relacionamento. Um conjunto de relacionamento binrio tem grau 2, e um ternrio, grau 3. Conjunto de Entidades ou Atributos? Muitas vezes aparecem dificuldades no reconhecimento do que seja uma entidade ou um atributo. Por exemplo, uma entidade empregado com dois atributos: nome_empregado, e telefone. O atributo telefone pode ser modelado como uma entidade. Se definirmos como atributo, isto implica dizer que cada empregado tem precisamente um nmero de telefone a ele associado. Caso seja modelado como entidade, reflete que um

empregado pode ter vrios (ou nenhum) nmeros de telefones a ele associado. J o atributo nome_empregado no poderia nunca ser modelado como entidade. Infelizmente no existe uma resposta simples para sabermos do que constitui um atributo e o que constitui uma entidade. As distines vo depender da estrutura geral que est sendo modelada. Conjuntos de Entidades ou de Relacionamentos? Nem sempre fica claro se devemos modelar um objeto como um conjunto de entidades ou de relacionamentos. Por exemplo, considere o problema do emprstimo bancrio representado como um relacionamento entre clientes e agncias, com nmero_emprstimo e conta como atributos. Cada emprstimo representado como um relacionamento entre um cliente e uma agncia. Se todo emprstimo tomado por exatamente um cliente e est associado exatamente uma agncia, podemos resolver o projeto de modo satisfatrio, representando emprstimo como relacionamento. Mas, considere que vrios clientes tomem um mesmo emprstimo em conjunto. Ento, nesse caso, necessrio definir um relacionamento em separado para cada componente do emprstimo conjunto. Desta forma, os atributos descritivos numero_emprstimo e conta precisaro ser replicados para cada um dos relacionamentos. Os problemas que surgem devido a esta replicao so: (1) os dados so armazenados diversas vezes, desperdiando espao em

memria, e (2) as atualizaes deixam potencialmente os dados em estado inconsistente. Ao descrever emprstimo como uma entidade, este problema de replicao desaparece. Relacionamentos n-simos. Uma outra caracterstica importante que diz respeito a relacionamentos, que sempre possvel recompor um conjunto de relacionamentos no-binrio, por um nmero de relacionamentos binrios distintos. Mas, pode ser necessria a criao de um atributo de identificao para o conjunto de entidades criado para substituir o conjunto de relacionamentos. Alm disso, um conjunto de relacionamentos n-simo mostra claramente todos os conjuntos de entidades que participam de uma determinada relao. O projeto correspondente usando somente relacionamentos binrios torna mais difcil estabelecer as restries desta participao. 3. Mapeamento de Restries 3.1 Cardinalidade O esquema E-R de uma empresa pode definir certas restries as quais o contedo do banco de dados deve respeitar. Exemplos de restries so: o mapeamento de cardinalidades e a existncia de dependncias. O mapeamento de cardinalidades expressa o nmero de entidades s quais outras entidades podem estar associadas atravs de um conjunto de relacionamentos. Para um conjunto de relacionamentos binrio, o mapeamento de cardinalidades segue as instrues abaixo:

Um para um. Uma entidade em A est associada no mximo a uma entidade em B, e uma entidade em B est associada 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 estar associada a uma nica entidade em A.

Um para um.

Muitos para um. Uma entidade em A est associada a no mximo uma entidade em B. Uma entidade em B, entretanto, pode estar associada a um nmero qualquer de entidades em A. Muitos para muitos. Uma entidade em A est associada a qualquer nmero de entidades em B e uma entidade em B est associada a um nmero qualquer de entidades em A.

Figura 2 Mpeamento de Cardinalidade. Muitos para Muitos.


O mapeamento de cardinalidade para um conjunto de relacionamentos em particular obviamente dependente das situaes reais que esto sendo modeladas. O rateio de cardinalidades de um relacionamento pode afetar a colocao dos atributos nos relacionamentos. Conjuntos de relacionamentos um para um, ou um para muitos devem associar os atributos a uma das entidades participantes. Considere o caso das entidades cliente e conta, e o relacionamento depositante. O atributo dataacesso dever estar associado entidade conta.

3.2 Dependncia de Existncia

existncia. Se a existncia da entidade x depende da


existncia de y. E se y for excludo, o mesmo deve acontecer com x. A entidade y chamada de entidade dominante e a x chamada entidade subordinada. Como exemplo, considere o conjunto de entidades emprstimo e o conjunto de entidades pagamento. Toda entidade pagamento est associada a uma entidade emprstimo. Se uma entidade emprstimo excluda, todas as entidades pagamento a ela associada devem ser excludas tambm. Se por outro lado, uma entidade pagamento for excluda, a entidade emprstimo no ser afetada. Portanto, a entidade emprstimo dominante e a entidade pagamento subordinada. A participao de um conjunto de entidades E no conjunto de relacionamento R dita total se todas as entidades em E participam de pelo menos um relacionamento em R. Se somente algumas entidades em E participam do relacionamento R a participao do conjunto de entidades dito parcial. A participao total est relacionada existncia de dependncia. 4. Chaves Precisamos especificar como as entidades dentro de um dado conjunto de entidades e os relacionamentos dentro de um conjunto de relacionamentos podem ser identificados. O conceito de chave nos ajuda a fazer esta distino. 4.1 Conjunto de Entidades

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 com nome_cliente. Se K uma superchave, ento qualquer superconjunto de K tambm uma superchave. Mas, queremos supoerchaves para as quais nenhuma subconjunto possa ser uma superchave. Essas superchaves so chamadas de chaves candidatas. O termo chave primria o termon usado para caracterizar a chave candidata escolhida pelo projetista do banco como sendo de significado especial para a identificao das entidades . A especificao de uma chave representa uma restrio ao mundo real da empresa que est sendo modelada.

4.2 Conjunto de Relacionamentos A chave primria de um conjunto de entidades permite-nos distinguir as vrias entidades de um conjunto. Precisamos definir um mecanimo para a indetificao dos vrios relacionamentos em um conjunto de relacionamentos. Seja R um conjunto de relacionamentos envolvendo os conjuntos de entidades E1, E2, ..., Em. Seja uma chave_primria (Ei) denotando o conjunto de atributos que formam a chave primria do conjunto de entidades Ei. Se o relacionamento R no possui atributos, ento o conjunto de atributos abaixo descreve um relacionamento individual do conjunto R:

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

A estrutura da chave primria para o conjunto de relacionamentos depende do mapeamento da cardinalidade do mesmo. Se o relacionamento muitos para muitos, a chave primria do relacionamento constitui a unio das chaves primrias das duas entidades. Se o relacionamento muitos para um, ento a chave primria da entidade de menor cardinalidade pode identificar o relacionamento. Se o relacionamento um para um, qualquer uma das chaves pode ser usada.

Modelo Relacional 1. Conceitos bsicos Um banco de dados relacional composto por um conjunto de tabelas ou relaes, cada uma das quais com um nome nico. A terminologia tabela mais comum nos produtos comerciais e na prtica. J a terminologia relao foi utilizada na literatura original sobre a abordagem relacional e mais comum na rea acadmica. 1.1 Tabelas Uma tabela um conjunto no-ordenado de linhas (tuplas, na terminologia acadmica), onde cada linha composta por uma srie de campos, ou atributos. Cada linha de uma tabela representa um relacionamento entre um conjunto de valores. Cada campo identificado por nome do campo (ou atributo), e o conjunto de campos das linhas de uma tabela que possuem o mesmo nome formam uma coluna. Comparando-se a tabela de banco de dados com um arquivo convencional do sistema de arquivos de um computador, identificam-se as seguintes diferenas: As linhas de uma tabela no esto ordenadas. A ordem de recuperao pelo SGBD arbitrria, a menos que a instruo de consulta tenha especificado uma ordenao. No possvel referenciar linhas de uma tabela por posio. Os valores de campo de uma tabela so atmicos e monovalorados. Em arquivos convencionais campos podem

ser compostos por outros campos, e podem ser multivalorados. As linguagens de consulta a bases de dados relacionais permitem o acesso por quaisquer critrios envolvendo os campos de uma ou mais linhas. Em arquivos convencionais, para buscar registros com base em valores de seus campos necessrio que exista um caminho de acesso determinado, que uma estrutura auxiliar como o ndice ou uma cadeia de ponteiros. 1.2 Chaves O conceito bsico para estabelecer relaes entre linhas de tabelas de um banco de dados relacional o da chave. Em um banco de dados relacional h pelo menos trs tipos de chaves a considerar: a chave primria, a chave alternativa e a chave estrangeira. 1.2.1 Chave primria

Uma chave primria uma coluna ou uma combinao de colunas que identificam uma linha das demais dentro de uma tabela. Na tabela de Empregados abaixo, a chave primria a coluna CdigoEmp. CdigoEmp E5 E3 E2 E1 Nome Souza Santos Silva Soares CdigoDepto D1 D2 D1 D1 CategFuncional C5 C5 C2 -

Tabela 1 - Empregados

A tabela abaixo mostra uma tabela de Dependentes que possui uma chave primria composta: CdigoEmp e NoDep. CdigoEmp E1 E1 E2 E6 E6 NoDep 01 02 01 01 02 Nome Joo Maria Ana Paula Jos Tipo Filho Esposa Esposa Esposa Filho DataNasc 12/12/91 01/01/50 05/11/55 04/07/60 03/02/85

Tabela 2 - Dependentes
Nas definies formais de chave primria, exige-se que a mesma seja mnima, ou seja, todas as suas colunas so efetivamente necessrias para garantir o requisito de unicidade de valores da chave. Na abordagem relacional, ao se definir uma chave primria, no est se definindo um caminho de acesso. Est se definindo uma restrio de integridade que precisa ser obedecida para todos os estados vlidos do BD. Neste caso, a regra a da unicidade dos valores nas colunas que compem a chave. 1.2.2 Chave estrangeira

Uma chave estrangeira uma coluna ou uma combinao de colunas cujos valores aparecem necessariamente como chave primria de uma tabela. A chave estrangeira o mecanismo pelo qual implementam-se os relacionamentos em um banco de dados relacional. Seja a seguinte tabela de departamentos abaixo:

CdigoDepto D1 D2 D3

NomeDepto Compras Engenharia Vendas

Tabela 3 Departamentos
Na tabela de Empregados, identificada neste exemplo como Tabela 1, a coluna CdigoDepto uma chave estrangeira em relao a chave primria da tabela Departamentos, ou tabela 3. Isso significa que, na tabela Empregados, no podem aparecer linhas que contenham um valor do campo CdigoDepto que no exista na coluna do mesmo nome da tabela Departamentos. Interpretando esta restrio, dizemos que todo empregado deve estar associado a um departamento. A incluso de uma chave estrangeira impe restries que devem ser garantidas em diversas situaes de alterao do banco 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 que contm a chave primria referenciada como chave estrangeira.

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

estrangeira pode referenciar a chave primria da prpria tabela. Por exemplo, na tabela Empregados mostrada na Tabela, pode existir um campo denotado CodigoEmpGerente que o cdigo de um outro empregado que gerente do empregado da linha em questo.

CdigoE Nome CdigoDep CategFuncio CdigoEmpGere to mp nal nte E5 Souza D1 C5 E3 Santo D2 C5 E5 s E2 Silva D1 C2 E5 E1 Soare D1 E1 s

1.2.3

Chave alternativa

Em alguns casos, mais de uma coluna ou combinaes de colunas podem servir para distinguir uma linha das demais. Uma das colunas escolhida como chave primria. As demais colunas so denominadas chaves alternativas. Na tabela de Empregados abaixo, tanto a coluna CodigoEmp quanto a coluna CIC podem ser usadas para distinguir uma linha das demais. Como o CodigoEmp foi o escolhido para ser

chave primria, dizemos que a coluna CIC uma chave alternativa. CdigoEmp E5 E3 E2 E1 Nome CdigoDepto CategFuncional CIC Souza D1 C5 132.121.331-20 Santos D2 C5 891.221.111-11 Silva D1 C2 341.511.775-45 Soares D1 631.692.754-88

1.3 Domnios Quando uma tabela de banco de dados definida, para cada coluna da tabela deve ser especificado um conjunto de valores que os campos da respectiva coluna podem assumir. Este conjunto de valores chamado de domnio da coluna, ou domnio do campo. Alm disso, deve ser especificado se os campos da coluna podem estar vazios ou no (null em ingls). Estar vazio indica que o campo no recebeu nenhum valor de seu domnio. As colunas na quais no so admitidos valores vazios so chamadas de colunas obrigatrias. As colunas nas quais podem aparecer campos vazios so chamadas de colunas opcionais. 1.4 Restries de Integridade Um dos principais objetivos de Banco de Dados manter a integridade dos dados. Dizer que os dados de um BD esto ntegros significa dizer que eles refletem corretamente a realidade representada pelo banco de dados e que so consistentes entre si. Para garantir a integridade dos dados o

SGBD oferece o mecanismo de restries de integridade. Uma restrio 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 um campo deve obedecera definio de valores admitidos para a coluna ( o domnio da coluna). Integridade de vazio: especificado se os campos de uma coluna podem ou no ser vazios. Campos que compem a chave primria so sempre obrigatrios.

Integridade de chave: trata-se da restrio que define que os valores da chave primria e alternativa devem ser nicos. Integridade referencial: define que os valores dos campos que aparecem em uma chave estrangeira devem aparecer na chave primria da tabela referenciada.

Existem outros tipos de restries de integridade que no se encaixam em nenhuma das categorias acima mencionadas e que normalmente no so garantidas pelo SGBD. Estas restries so chamadas de restries semnticas. Exemplos: Um empregado do departamento denominado Finanas no pode ter a categoria funcional Engenheiro.

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

lgebra Relacional A lgebra relacional uma linguagem de consultas procedural. Consiste em um conjunto de operaes tendo como entrada uma ou duas relaes e produzindo como resultado, uma nova relao. As operaes fundamentais na lgebra relacional so: select, project,

union, set difference, cartesian product e rename.


Operaes Fundamentais

1. Operao Select 2. Operao Project Suponha que desejamos listar todos os nmeros de emprstimos e todos os totais correspondentes, sendo que o nome das agncias envolvidas no interessa. A operao project permite-nos produzir esta relao. A operao project primria, e retorna o argumento da relao deixando de lado certos atributos. J que a relao um conjunto, quaisquer linhas em duplicidade so eliminadas. A projeo denotada pela letra grega pi . Listamos, subscritos em , os atributos que desejamos no resultado. O argumento da relao vem entre parnteses, a seguir. Uma consulta para relacionar todos os nmeros de emprstimos e totais desses emprstimos pode ser escrita da seguinte forma:
nmero_emprstimo, total

(emprstimo)

Relao resultante: Nmero_emprstimo Total

L-17 L-23 L-15 L-14 L-93 L-11 L-16 3. Operao Relacional de Comparao

1000 2000 1500 1500 500 900 1300

Consideremos uma consulta mais complexa como encontre todos os 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 clientes do banco que tenham uma conta, um emprstimo, ou ambos. Note que a relao cliente no possui esta informao. Para responder esta pergunta, o banco precisa de informaes da relao depositante, e da relaodevedor. Para encontrar todos os clientes com um emprstimo no banco:
nome_cliente

(devedor)

Para encontrar todos os clientes que possuem conta no banco:


nome_cliente

(depositante)

Para responder a consulta precisamos da unio desses dois conjuntos. 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 relaes compatveis entre si. Por exemplo, no faria sentido tomar a unio da relao emprstimo e da relao devedor. Para uma operao de unio r s vlida, so necessrias duas condies: 1. As relaes r e s devem possuir o mesmo numero de atributos. 2. Os domnios do I-simo atributo de r e o I-simo atributo de s devem ser os mesmos para todo i.

5. Operao Diferena entre Conjuntos A operao diferena entre conjuntos denotada por -, permitenos encontrar as tuplas que esto numa relao, mas no em outra. A expresso r s resulta na relao que contm tuplas que esto em r mas no em s. Podemos encontrar todo os clientes que possuem conta no banco mas no contraram emprstimos escrevendo:

nome_cliente

(depositante) -

nome_cliente

(devedor)

Assim como no caso da operao de unio, precisamos assegurar que o conjunto diferena seja feito entre relaes compatveis. Portanto, para que as operaes de diferena entre conjuntos r e s seja vlida, precisamos que as relaes r e s possuam o mesmo nmero de atributos e que o domnio do I-simo atributo de r e do I-simo atributo de s sejam os mesmos. 6. Operao Produto Cartesiano A operao Produto-Cartesiano representada por x, permite-nos combinar informaes de duas relaes quaisquer. Representamos o produto das relaes r1 e r2 por r1 x r2. Uma relao definida como um subconjunto de um produto cartesiano de um conjunto de domnios. Desde que um mesmo nome de atributo pode aparecer tanto em r1 como em r2, precisamos estabelecer um nome de esquema para diferenciar esses dois atributos. Para os atributos que aparecem apenas uma vez nos dois esquemas podemos omitir o nome da relao. O relao resultante do produto cartesiano de r = devedor x emprstimo, possui uma tupla para cada par de tuplas possvel: um da relao devedor outro da relao emprstimo. Ento, a relao resultante uma relao grande. Assuma que podemos ter n1 tuplas em devedor, e n2 tuplas em emprstimo. A relao resultante possui n1 * n2 tuplas em r. Se quisermos, por exemplo, encontrar todos os nomes de todos os clientes que tenham um emprstimo na agncia casa forte. Podemos precisar para isso, de informaes das relaes devedor e emprstimo. Ento a expresso:
nome_agncia = casa forte

(devedor x emprstimo)

nos d como resultado uma relao dos devedores ligados a agncia casa forte. Como a operao produto cartesiano associa todas as tuplas de emprstimo a todas as tuplas de devedor, sabemos que se um cliente contrai um emprstimo na agncia Casa Forte ento existe algumas tuplas em devedor X emprstimo que contm o seu nome. Se escrevermos, ento:
devedor.numero_emprstimo = emprstimo.nmero_emprstimo ( forte (devedor nome_agencia = casa

x emprstimo))

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


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 de uma expresso em lgebra relacional no possui um nome que possa ser usado para referenci-la. O operador rename representado pela letra grega rho permite-nos dar nomes a elas. Dada a expresso em lgebra relacional E, a expresso como resultado a expresso E sob o nome x.
x

(E) tem

Vises

Em todas as operaes que fizemos at agora, usamos operadores no nvel lgico. Isto , assumimos que as colees de relaes dadas sejam, na verdade, relaes armazenadas no banco de dados. Muitas vezes no desejvel que todos os usurios vejam o modelo lgico como um todo. Consideraes sobre segurana podem exigir que determinados dados no estejam disponveis para alguns usurios. Com base em questes de segurana, podemos criar uma coleo de relaes personalizadas de relaes que se ajustam mais as necessidades 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 sobre qualquer conjunto de relaes reais. Definindo Vises Definimos uma viso usando o comando create view. Para definir uma viso, precisamos dar um nome a ela e definir a consulta que criar essa viso. A forma do comando create view :

Create view v as <expresso_de_consulta>


Como exemplo considere uma viso consistindo de clientes devedores. Definimos esta viso de clientes_devedores como: Create view clientes_devedores as
nome_cliente ( cliente.seguro_social = devedor.seguro_social

(cliente X devedor))

Linguagem SQL

1. A linguagem SQL SQL tem representado o padro para linguagens de banco de dados relacionais. Existem diversas verses de SQL. Essa linguagem, originalmente chamada de SEQUEL, foi implementada como parte do projeto do Sistema R, no incio dos anos 70. Inmeros produtos so suporte atualmente para a linguagem SQL. A linguagem SQL tem diversas partes: linguagem de definio de dados, linguagem interativa de manipulao de dados, incorporao DML, definio de vises, autorizao, integridade, controle de transaes. 2. Estruturas Bsicas A estrutura bsica de uma expresso SQL consiste em trs clusulas: select, from e where. A clusula select corresponde operao de projeo da lgebra relacional. Ela usada para relacionar atributos desejados no resultado de uma consulta. A clusula from corresponde operao do produto cartesiano da lgebra relacional. Associa ass relaes que sero pesquisadas durante a evoluo de uma expresso. A clusula where corresponde seleo do predicado na lgebra relacional. Ela consiste em um predicado envolvendo atributos da relao que aparece na clusula from.

O fato de o termo select possuir significado diferente em SQL e na lgebra relacional infelizmente histrico e precisa ser diferenciada. Uma consulta tpica em SQL tem a seguinte forma: Select A1, A2,...,An From 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 lgebra relacional seria:
A1, A2, ...,An ( P (r1

x r2 x...x rm))

Se a clusula where for omitida, o predicado P verdadeiro. No entanto, diferente das expresses em lgebra relacional, em SQL o resultado de uma consulta pode ter mltiplas cpias de algumas tuplas.

3. A clusula Select O resultado de uma consulta SQL naturalmente uma relao. Consideremos uma consulta simples usando nosso exemplo de banco. encontre todos os nomes de todas as agncias da relao emprstimo. Select nome_agncia from emprstimo

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 distinct nome_agncia from emprstimo Ao contrrio se quisermos deixar explcito que a duplicidade no ser eliminada, podemos usar a palavra-clave all. Select all nome_agncia from emprstimo O asterisco * pode denotar todos os atributos na clusula select. Tambm poder haver expresses aritmticas envolvendo os operadores +, -, *, e /. Por exemplo: Select nome_agncia, nmero_emprstimo, total * 100 from emprstimo

4. A clusula Where Considere a consulta: encontre todos os nmeros de emprstimos feitos na agncia Casa Forte, com totais emprestados acima de 1.200 dlares. Esta consulta pode ser escrita como:

Select nome_emprstimo From emprstimo Where nome_agncia=Casa Forte and Total > 1200 A SQL utiliza operadores lgicos and, or e not, na clusula where. A SQL tambm possui o operador de comparao between para simplificar a clusula where que especifica que um valor pode ser menor ou igual a algum valor e maior ou igual a algum outro valor. Se desejarmos encontrar os nmeros de emprstimos cujos montantes estejam entre 90 e 100 mil dlares, podemos usar a comparao between escrevendo: Select nome_emprstimo From emprstimo Where total between 90000 and 1000000 Como tambm podemos usar a combinao de operadores: not between. 5. A clusula From A clusula from por si s define um produto cartesiano das relaes da clusula. Para uma consulta: para todos os clientes que tenham emprstimo em um banco, encontre seus nomes e nmeros de emprstimos, em SQL esta consulta pode ser escrita como: Select distinct nome_cliente, devedor.nmero_emprstimo From devedor, emprstimo Where devedor.nmero_emprstimo = emprstimo.nmero_emprstimo

6. Operao Rename 7. Operaes em Strings 8. Ordenao e Apresentao de Tuplas SQL oferece ao usurio algum controle sobre a ordenao por meio da qual as tuplas de uma relao sero apresentadas. A clusula order by faz com que as tuplas do resultado de uma consulta apaream em uma determinada ordem. Para listar em ordem alfabtica todos os clientes que tenham emprstimo na agncia Casa Forte, escrevemos: Select distinct nome_cliente from devedor, emprstimo where devedor.numero_emprstimo

emprstimo.nmero_emprstimo Forte

and nome_agncia = Casa order by nome_cliente

Quanto a forma de ordenao, podemos indicar desc para ordem decrescente e asc para ordem ascendente. Se quisermos listar a relao emprstimo inteira, por ordem descendente de total. Se diversos emprstimo possrem o mesmo total, queremos que seja realizada uma segunda ordenao ascendente por nmero de emprstimo: Select * from emprstimo

nmero_emprstimo asc

order

by

total

desc,

9. Definio de Esquema em SQL 9.1 Criando Tabelas Para definir uma relao em SQL, utilizamos o comando create table da seguinte forma: Create table r (A1D1, A2D2,,AnDn, < regras de integridade1> ... <regras

integridadek>)

de

onde r, o nome da relao, cada Ai o nome de um atributo no esquema da relao r e Di o tipo do domnio dos valores no domnio dos atributos Ai. As regras de integridade permitidas englobam: Primary key (aj1, Aj2,,Ajm) Check (p) A especificao da primary key diz que os atributos Aj1, Aj2,,Aj, formam a chave primria da relao. A especificao de chave primria opcional, mas desejvel para cada uma das relaes. A clusula check especifica um predicado que precisa ser satisfeito por todas as tuplas em uma relao. Exemplos:

Create table cliente

(nome_cliente char(20) not null, rua_cliente char(30),


cidade_cliente char(30), primary key (nome_cliente))

Create table agncia

(nome_agncia char(15) not null, cidade_agencia char(30), fundos integer,


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

Create table conta

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

Create table depositante

nmero_conta))

(nome_cliente char(20) not null, nmero_conta char(10) not null, primary key (nome_cliente,

Para remoo de uma relao de um banco de dados SQL usamos o comando drop table. O drop table remove todas as informaes de uma relao do banco de dados.

O comando

Drop table r

uma opo mais drstica do que o comando Delete from r

O comando alter table pode adicionar atributos em uma tabela j existente. Neste caso, todas as tuplas j existentes, recebem valor nulo para esse novo atributo. Exemplo: Alter table r add A D Para remover atributos de uma relao, o comando abaixo pode ser usado: Alter table r drop A

9.2 Vises Definimos uma viso em SQL usando o comando create view. Para definir a viso precisamos dar-lhe um nome e definir a consulta que processar essa viso. A forma do comando create view a seguinte: Create view v as <expresso_consulta> Como exemplo, considere uma viso composta dos nomes das agncias e nomes de clientes que tenham uma conta na agncia. Definio:

conta.nmero_conta)

Create view clientes_conta as (select nome_agencia, nome_cliente from depositante, conta where depositante.nmero_conta

Usando agora a viso clientes_conta podemos encontrar todos os cliente da agencia Casa Forte , escrevendo: Select nome_cliente From clientes_conta Where nome_agencia = Casa Forte A definio de create view cria uma definio de viso em um banco de dados e essa definio fica armazenada no banco at que um comando drop view nome_viso seja executado. 9.3 Modificaes no banco de dados a) Remoes Um pedido para remoo de dados expresso muitas vezes do mesmo modo que uma consulta. Podemos remover somente tuplas inteiras, no se pode excluir valores de um atributo em particular. Em SQL, a remoo expressa da seguinte forma: Delete from r Where P Onde P representa um predicado, e r uma relao. O comando delete encontra primeiro todas as tuplas t em r para as quais P(t) verdadeira, e ento, remove-as de r.

A clusula where pode ser omitida no caso, da remoo de todas as tuplas de r. Exemplos: Delete from depositante Where nome_cliente = Smith Delete from emprstimo Where total between 1300 and 1500 Delete from conta Where nome_agencia = Piedade

b) Inseres Para inserir dados em uma relao podemos especificar uma tupla a ser inserida ou escrever uma consulta cujo resultado um conjunto de tuplas a inserir. Um comando insert simples 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 valores nulos em alguns atributos. c) Atualizaes

Em determinadas situaes, podemos querer modificar valores das tuplas sem, no entanto, alterar todos os valores. Para esse fim, o comando update pode ser usado. Exemplos: Update conta Set saldo = saldo * 1.05 Update conta Set saldo = saldo * 1.06 Where saldo > 1000 Update conta Set saldo = saldo * 1.05 Where saldo <= 1000

10. SQL avanado 10.1 Operaes em conjunto Como a unio, a interseo e a diferena da lgebra relacional, as relaes participantes destas operaes em SQL precisam ser compatveis, isto , elas precisam ter o mesmo conjunto de atributos. Vamos dar exemplos dessas operaes, usando dois conjuntos bsicos: (d) o conjunto de todos os clientes que possuem uma conta no banco, e (b) o conjunto de todos os clientes que contraram emprstimo no banco. Onde o conjunto (d) pode ser obtido com: Select nome_cliente

From depositante E o conjunto (b) pode ser obtido com: Select nome_cliente From depositante a) Unio Para encontrar todos os clientes do banco que possuem emprstimos, um contam ou ambos, escrevemos: (Select nome_cliente from depositante) union (select nome_cliente from devedor) A operao de union, ao contrrio da clusula select, elimina automaticamente todas as repeties. Se no quisermos que as repeties sejam eliminadas, podemos escrever union all. Exemplo: (select nome_cliente from depositante) union all (select nome_cliente from devedor) b) Interseo

Para encontrar todos os clientes que tenham tanto emprstimos quanto contas no banco, escrevemos: (select distinct nome_cliente from depositante) intersect (select distinct nome_cliente from devedor) A operao intersect elimina automaticamnete todas as repeties. Se desejarmos obter todas as repeties, teremos de escrever intersect all, no lugar de intersect: (select nome_cliente from depositante) intersect all (select nome_cliente from devedor)

c) Exceto Para encontrar todos os clientes que tenham uma conta e nenhum emprstimo no banco, escrevemos: (select distinct nome_cliente from depositante) except (select nome_cliente from devedor)

Da mesma forma das operaes anteriores, a operao except elimina as tuplas repetidas, mas caso deseje-se obt-las, pode-se usar a except all.

10.2 Funes Agregadas

valores como entrada, retornando um valor simples. A SQL oferece cinco funes agregadas pr-programadas: Mdia (average): Mnimo (minimum): Mximo (maximum): Total (total): Contagem (count): avg min max sum count

Funes agregadas so funes que tomam uma coleo de

A entrada para sum e avg precisa ser um conjunto de nmeros, mas as outras operaes podem operar com conjuntos de tipos de dados no-numricos tais como strings e semelhantes. Como exemplo de utilizao, considere a consulta: encontre a mdia dos saldos nas contas de cada uma das agncias do banco. Escrevemos a consulta: Select avg (saldo) From conta Where nome_agencia = casa forte Como resultado dessa consulta, obtemos uma relao com um atributo nico, contendo uma nica linha com o valor numrico

que corresponde mdia dos saldos na agncia. Se quisermos dar um nome a este atributo, pode-se usar a clusula as. Muitas vezes, em algumas circunstncias, poder haver necessidade de aplicar uma funo agregada a um grupo de conjunto de tuplas. Neste caso podemos usar a clusula group by. Tuplas com os mesmos valores em todos os atributos usados na clusula group by so colocados em um mesmo grupo. Como ilustrao, considere a seguinte consulta: encontre a mdia dos saldos nas contas de cada uma das agncias do banco. Escreve-se a seguinte consulta: Select nome_agncia, avg(saldo) From conta Group by (nome_agncia) H casos em que existe a necessidade de eliminarem-se repeties antes de efetuar uma funo agregada. Se realmente desejarmos eliminar repeties, usamos a palavra distinct na expresso agregada. Um exemplo dessa utilizao, a seguinte consulta: encontre todos os nmeros dos depositantes de cada agncia. Neste caso, um depositante contado somente uma vez, independente de quantos depsitos ele fez. Escrevemos essa consulta da seguinte forma: Select nome_agncia, count(distinct nome_cliente) From depositante, conta depositante.nmero_conta = Where Group by nome_agncia

conta.nmero_conta

s vezes precisamos definir condies e aplic-las a grupos ao invs de aplic-las ao conjunto completo de tuplas. Podemos, por exemplo, estar interessados em obter quais agncias possuem mdia dos saldos aplicados em conta maior que 1200 dlares. Essa condio ento no seria aplicada a uma nica tupla, mas, em cada grupo determinado pela clusula group by. Nesse caso, utiliza-se a clusula having do SQL. Exemplo: Select nome_agncia, avg(saldo) From conta Group by nome_agncia Having avg(saldo) > 1200 Se quisermos contar o nmero de tuplas em uma relao, pode-se usar a notao: count(*), como por exemplo: Select count(*) From conta

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 foi

especificada acima.

c. Especificar trs tipos de consultas: i. Usando as operaes de conjuntos, ii. Usando funes agregadas, iii. Usando operadores having e/ou group by.

Teoria das dependncias Normalizao


No projeto de um banco de dados devemos: Identificar dados Fazer com estes dados representem eficientemente o mundo real Como proceder? Por intuio? O processo de identificar e estruturar dados: Modelo relacional Decomposio 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 que pouca 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

Teoria das Dependncias


Dependncia Funcional Sejam R(A1, A2, ..., An) e X, Y contidos em {A1,A2,..., An} diz-se que existe uma Dependncia Funcional (DF) de X para Y (X -> Y) se somente se, em R, a um valor de X corresponde um e um s valor de Y.
Ex: Num-cad -> Nome Ex: Num-cad <-> CPF

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

(X <--> Y)

DF Plena: quando um atributo dependente de dois (ou mais) outros.


Ex: Num-pil Num-av Trajeto

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 funcionalmente dependentes de A 2. Nenhum subconjunto de atributos de A tambm tem a propriedade 1.

Normalizao
Definio: Uma relao est na Primeira Forma Normal (1NF) se todos os atributos que a compem so atmicos.
Piloto Num-cad Nome 0010 0010 0015 0020 0020 0020 0018 Jos Jos Joo Manuel Manuel Manuel Jos CPF 123456 123456 234567 345678 345678 345678 987654 Salrio 5.000,00 5.000,00 3.000,00 8.000,00 8.000,00 8.000,00 4.000,00 Diploma D1 D2 D3 D1 D2 D4 D2 Descrio Helicpteros Avies a jato Bi-motor Helicpteros Avies a jato Concorde Avies a jato

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 de atributo inconsistncia: se a atualizao no for feita em todos os nveis incluses: de um item que no tem correspondente para os outros campos da chave primria remoes: de um item da chave provoca a remoo de informaes adicionais

Normalizao
Definio: Uma relao est na Segunda Forma Normal (2NF) se ela est na 1NF e todo atributo nochave plenamente dependente da chave primria.

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 relao com este subconjunto como chave primria 2. Colocar cada um dos outros atributos com o subconjunto 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).

Normalizao
Piloto Num-cad Nome 0010 0015 0020 0018 Jos Joo Manuel Jos CPF 123456 234567 345678 987654 Salrio 5.000,00 3.000,00 8.000,00 4.000,00 Formao Num-cad Diploma 0010 0010 0015 0020 0020 0020 0018 D1 D2 D3 D1 D2 D4 D2

Diploma Diploma D1 D2 D3 D4

Descrio Helicpteros Avies a jato Bi-motor Concorde

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

Normalizao
Definio: Uma relao est na Terceira Forma Normal (3NF) se ela est na 2NF e nenhum atributo no-chave transitivamente dependente da chave primria. Definio: Uma relao est na Forma Normal de Boyce/Codd (BCNF) se todo determinante uma chave candidata. Como corrigir? Para cada determinante que no chave candidata, remover da relao os atributos que dependem dele para criar uma nova relao onde o determinante ser chave primria.

Normalizao
Avio No-av 101 104 105 103 110 Tipo A320 B727 DC10 B727 B727 Capacidade Local 320 250 350 250 250 Rio S.Paulo Rio Recife Rio

Avio1

No-av 101 104 105 103 110

Tipo A320 B727 DC10 B727 B727

Local Rio S.Paulo Rio Recife Rio

Tipo-av

Tipo A320 B727 DC10

Capacidade 320 250 350

Normalizao
Relaes com mais de uma chave candidata Considere a relao:
ADP Aluno Maria Maria Jos Jos Disc BD ES BD ES Prof. Fernando Paulo Fernando Andr

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:


AP
Aluno Maria Maria Jos Jos Professor Fernando Paulo Fernando Andr

PD

Professor Fernando Paulo Andr

Disciplina BD ES ES

Normalizao
Seja a relao:
Vo Piloto Avio 0020 101 105 0010 0015 101 104 103 Trajeto Rec-Rio Rio- Spa Spa-Rec Rec-For Rio-Spa Vo Piloto Avio 0020 0020 0020 0020 0020 0020 0010 0010 0015 101 105 105 101 101 105 101 104 103 Trajeto Rec-Rio Rio- Spa Spa-Rec Spa-Rec Rio-Spa Rec-Rio Rec-For Rec-For Rio-Spa

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 uma coleo 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 ->-> C


tambm existir. Da a notao: A ->-> B|C

Normalizao Definio: Uma relao est na Quarta Forma Normal (4NF) se ela est na 3NF (BCNF) e no existem dependncias multivaloradas Como corrigir? Separar a relao em relaes, cada uma contendo o atributo (A) que multidetermina os outros (B, C), ou seja, R1 (A, B) e R2 (A, C).

Normalizao
Vo1 Vo Piloto Avio 0020 0020 0020 0020 0020 0020 0010 0010 0015 101 105 105 101 101 105 101 104 103 Trajeto Rec-Rio Rio- Spa Spa-Rec Spa-Rec Rio-Spa Rec-Rio Rec-For Rec-For Rio-Spa Piloto 0020 0020 0010 0010 0010 Avio 101 105 101 104 103

Vo2

Piloto 0020 0020 0020 0010 0015

Trajeto Rec-Rio Rio-Spa Spa-Rec Rec-For Rio-Spa

Normalizao OBS: Para evitar relaes no 4NF Quando existir mais de um atributo multivalorado, o processo de normalizao para 1NF o seguinte:
1. Criar uma relao para cada atributo multivalorado (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 em duas relaes mas possa ser decomposta em trs ou mais. Este fenmeno chamado n-decomposio (n > 2).

Normalizao
Seja a relao Vo e 3 projees binrias:
Vo Piloto Avio 0020 0020 0020 0010 101 105 101 101 Trajeto Rec-Rio Rec-Rio Rio-Spa Rec-Rio

V1

Piloto 0020 0020 0010

Avio 101 105 101

V2

Avio Trajeto 101 105 101 Rec-Rio Rec-Rio Rio-Spa

V3

Trajeto Piloto Rec-Rio 0020 Rio-Spa 0020 Rec-Rio 0010

Normalizao
V1 Piloto 0020 0020 0010 Avio 101 105 101 Avio V4 Piloto Avio Trajeto 0020 0020 0020 0010 0010 101 105 101 101 101 Rec-Rio Rec-Rio Rio-Spa Rec-Rio Rio-Spa V2 Avio 101 105 101 Trajeto Rec-Rio Rec-Rio Rio-Spa V3 Trajeto Piloto Rec-Rio 0020 Rio-Spa 0020 Rec-Rio 0010

(Trajeto, Piloto)

Relao Original

Normalizao Definio: Uma relao R satisfaz a Dependncia de Juno * (X, Y, ..., Z) se somente se R igual juno de suas projees em X, Y, ..., Z onde X, Y, ..., Z so subconjuntos do conjunto de atributos de R. No exemplo, a relao Vo satisfaz DJ:
* ({Piloto, Avio)}, {Avio, Trajeto}, {Trajeto, Piloto})

Normalizao Problemas na atualizao:


Vo Piloto Avio P1 P1 P2 P1 A1 A2 A1 A1 Trajeto T2 T1 T1 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

Normalizao Teorema de Fagin R (A, B, C) satisfaz DJ *(AB, AC) se somente se satisfaz o par de DMV A->>B|C Este teorema pode ser visto como uma definio de DMV, logo:
DJ DMV DF : Generalizao

Normalizao OBS: A DJ a forma mais geral de dependncias que tratam relaes sendo decompostas via projeo e reconstrudas via juno. Definio: Uma relao est na Quinta Forma Normal (5NF), tambm chamada de Forma Normal Projeo/ Juno (PJNF), se somente se cada dependncia de juno em R uma conseqncia de chaves candidatas de R.

Normalizao Notas:
Qualquer relao 5NF est na 4NF Resultados demonstrados por Fagin: Qualquer relao dada pode ser decomposta sem perdas em uma coleo equivalentes de relaes em 5NF, ou seja, a 5NF sempre realizvel Dada uma relao R, podemos dizer se R est na 5NF se conhecermos suas chaves candidatas e todas as DJ em R. Embora seja fcil identificar DF e DMV, o mesmo no pode ser dito da DJ porque seu significado intuitivo 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

Modelo Entidade-Relacionamento- Anexos

Conjunto de Entidades Fracas


Um conjunto de entidades pode no ter atributos suficientes para formar uma chave primria. Esse tipo de conjunto de entidades chamado um conjunto 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 esto relacionados s dependncias de existncia. Um membro de um conjunto de entidades fortes definido como uma entidade dominante enquanto que um membro de um conjunto de entidades fracas uma entidade subordinada.

Identificao de Entidades Fracas


Apesar do conjunto de entidades fracas no possuir chave primria, precisa-se distinguir estas entidades umas das outras. O identificador de um conjunto de entidades fracas um conjunto de atributos que permite que esta distino seja feita. Este identificador tambm chamado de chave parcial. A chave primria de um conjunto de entidades fracas formado pela chave primria do conjunto de entidades fortes ao qual a existncia do conjunto de entidades fracas est vinculada.

O conjunto de entidades dominantes de identificao dito proprietrio do conjunto de entidades fracas por ele identificada. O relacionamento que associa o conjunto de entidades fracas a seu proprietrio o relacionamento identificador. Um conjunto de entidades fracas identificado no diagrama E-R pela linha dupla usada no retngulo e no losango do relacionamento correspondente. Um conjunto de entidades fracas pode participar como proprietrio de um relacionamento identificador com outro conjunto de entidades fracas. A dependncia de existncia no implica necessariamente, em um conjunto de entidades fracas. O conjunto de entidades subordinadas pode ter uma chave primria.
4

Diagrama E-R com um conjunto de entidades fracas


Data_pagamento Numero_emprstimo Total Numero_pagamento Total_pagamento

Emprstimo

Pagamento_ Emprstimo

Pagamento

Na figura, o conjunto de entidades fracas pagamento dependente do conjunto de entidades fortes emprstimo pelo conjunto de relacionamentos pagamento_emprstimo. Tambm aparece na figura linhas duplas para identificar a participao total do conjunto de entidades pagamento no relacionamento pagamento_emprstimo. A seta de pagamento_emprstimo para emprstimo indica que cada pagamento para um nico emprstimo. O identificador do conjunto de entidades fracas est sublinhado com uma linha tracejada.
6

Extenso do E-R
A maioria dos sistemas de bancos de dados pode ser modelada apenas com os conceitos bsicos do E-R, mas, alguns aspectos de um banco de dados s pode ser expresso de modo mais conveniente atravs de algumas extenses do modelo E-R. Discutiremos os recursos de especializao e generalizao, nvel superior e inferior do conjunto de atributos, herana de atributos e agregao.

Especializao
Um conjunto de entidades pode conter sub-grupos de entidades que so, de alguma forma, diferentes de outras entidades do conjunto. Por exemplo, um subconjunto de entidades pode possuir atributos que no so compartilhados pelas demais entidades do conjunto. O modelo E-R proporciona um significado para a representao desse agrupamentos distintos entre as entidades. Seja, por exemplo, um conjunto de entidades conta, com os atributos nmero_conta e saldo. Onde conta futuramente classificado como conta_poupana e conta_corrente.

Cada um dos novos tipos de conta descrito como um conjunto de atributos que, alm de todos os atributos de conta, possui ainda outros atributos adicionais. O processo de projetar os subgrupos dentro de um conjunto de entidades chamado de especializao. A especializao da conta nos permite distinguir os tipos de contas. Um conjunto de entidades pode ser especializado por mais de uma caracterstica de diferenciao. Em termos de diagrama E-R a especializao representada pelo tringulo rotulado de ISA. Este relacionamento ISA pode ser tambm entendido como um relacionamento de super ou subclasse.

Numero_conta

Saldo

Especializao e Generalizao

Conta

Taxas_Juros

ISA

Limite_cheque_especial

Conta_Poupana

Conta_Corrente

ISA

Padro

Especial

Snior

Numero_cheque

Taxa_juros

Saldo_mnimo

Data_aniversrio

10

Generalizao
O refinamento do conjunto de entidades em nveis sucessivos de subgrupos indica um processo top-down de projeto, no qual as diferenciaes so feitas de modo explcito. O projeto pode ser realizado de modo bottom-up, no qual vrios conjuntos de entidades so sintetizados em um conjunto de entidades de alto nvel, com base em atributos comuns. Existem, por exemplo, similaridades entre o conjunto de entidades conta-movimento e o conjunto de entidades conta-poupana, j que possuem atributos comuns. Este compartilhamento de atributos pode ser expressado pela generalizao.

11

Conjuntos de entidades superiores e inferiores podem tambm ser designados em termos de super e subclasses, respectivamente. O conjunto de entidades conta uma superclasse e conta_poupana e conta_corrente so 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 de nvel inferior. A generalizao procede para o conhecimento de um nmero de conjuntos de entidades que compartilham caractersticas comuns, sintetizando esses conjuntos de entidades em um nico conjunto de entidades.

12

Herana de Atributos
Uma propriedade decisiva das entidades de nveis superior e inferior criadas pela especializao e pela generalizao a herana de atributos. Os atributos dos conjuntos de entidades de nvel superior so herdados pelos conjuntos de entidades de nvel inferior. Os conjuntos de entidades de nvel inferior tambm herdam a participao em conjuntos de relacionamentos dos quais participam seus conjuntos de entidades de nvel superior.
13

Restries de Projeto
Para a modelagem mais apurada de uma empresa, o projetista do banco de dados pode optar por definir algumas restries em uma generalizao em particular. Um tipo de restrio envolve a determinao 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 ou predicados pr-estabelecidos. Um tipo de generalizao definida por atributo, poderia ser exemplificada com o atributo da entidade conta, tipo_conta, especializando a mesma em conta_poupana ou conta_corrente.

14

Restries de Projeto
Definida pelo Usurio: Um conjunto de entidades de baixo nvel definido pelo usurio no tem seus membros classificados por uma condio, as entidades so designadas a um determinado conjunto de entidades por usurios do banco de dados. A escolha para composio de determinada entidade de nvel inferior feita por critrios individuais, pesando a opinio do usurio, e sua implementao feita por uma operao que adiciona a entidade ao conjunto de entidades. Um segundo tipo de restrio determina se uma entidade pode pertencer a mais de um conjunto de entidades de nvel inferior. Mutuamente exclusivos: Exige que uma entidade pertena a apenas um conjunto de entidades de nvel inferior. Como por exemplo, a especializao da entidade conta.

15

Restries de Projeto
Sobrepostos: Em generalizaes sobrepostas uma mesma entidade pode pertencer a mais de um conjunto de entidades de nvel inferior, dentro de uma generalizao simples. Um exemplo, poderia ser dos grupos de trabalho de empregados. A restrio de totalidade determina se uma entidade de nvel superior pertence ou no, a, no mnimo, um dos conjuntos de entidades de nvel inferior dentro da generalizao. Total: cada entidade do conjunto de entidades de nvel superior deve pertencer a um conjunto de entidades de nvel inferior.

16

Parcial: cada entidade de nvel superior pode pertencer a qualquer um dos conjuntos de entidades de nvel inferior. A generalizao conta total, enquanto que a generalizao empregados, parcial. Quando uma restrio total aplicada, uma entidade inserida em um conjunto de entidades de nvel superior dever ser inserida em pelo menos um dos conjuntos de entidades de nvel inferior. Em restries definidas por condio, todas as entidades de nvel superior 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 de nvel inferior s quais pertenam.

17

Agregao
Uma das limitaes do modelo E-R que no possvel representar relacionamentos entre relacionamentos. A agregao a abstrao por meio do qual os relacionamentos so tratados como entidades de nvel superior. Como um conjunto de entidades tratado da mesma forma que qualquer outro conjunto de entidades. Considere o exemplo que descreve informaes sobre clientes e seus emprstimos. Suponha que cada par emprstimo-cliente possui um bancrio, ou agente-emprstimo, responsvel pelo acompanhamento de determinado emprstimo.

18

O conjunto de relacionamentos devedor e agenteemprstimo poderia ser combinado em um nico conjunto de relacionamentos. Mas, isso tornaria obscura a estrutura deste esquema.

Isto poderia, por exemplo, dar a entender que existe um agente-emprstimo especfico responsvel para cada par emprstimo-cliente. Existe ento uma redundncia de informaes na figura resultante, uma vez que todo par emprstimo-cliente em agente-emprstimo est tambm em devedor. A melhor maneira de modelar a situao acima descrita ,pois, a agregao.
19

Seguro_social

Rua-cliente Numero_emprstimo saldo

Nome_cliente

Cidade_cliente

Cliente

devedor

Emprstimo

Agente_ Emprstimo

Empregado
Seguro_social_empregado Nome_empregado Numero_telefone

20

10

Projeto de um Esquema de Banco de Dados E-R


Diante de uma grande nmero de possibilidades durante o projeto de um esquema de banco de dados, o projetista tem as seguintes opes: Optar entre o uso de um atributo ou de um conjunto de entidades para representar um objeto; Expressar uma concepo real por um conjunto de entidades ou por um conjunto de relacionamentos; Optar por um conjunto de relacionamentos ternrio, ou por um par 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 conjunto de entidades simples, caso apropriado.
21

Fases de Projeto
Um modelo de dados de alto nvel proporciona ao projetista uma base conceitual na qual se pode especificar, de modo sistemtico, quais as necessidades dos usurios do banco de dados e como este banco 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 da aplicao de seus conceitos. Este fase chamada de projeto conceitual, e proporciona uma viso detalhada da empresa. Nesta fase o projetista tem a responsabilidade de checar as entidades, relacionamentos, e restries de projeto, como tambm de remover todo tipo de redundncia existente.

22

11

Fases de Projeto
Na especificao das necessidades funcionais os usurios descrevem os tipos de operaes ou transaes que sero realizadas com os dados, como atualizao, consulta e remoo. O transporte do modelo de dados abstrato para sua implementao ocorre nas fases finais do projeto. Na fase de projeto lgico, o esquema conceitual mapeado para o modelo de implementao fsica de dados do SGBD que est sendo usado. O projeto fsico totalmente dependente dos recursos do SGBD utilizado. Iremos trabalhar na fase do projeto do esquema conceitual.

23

Dados-Exemplo de um Empresa Bancria


Um banco organizado em agncias. Cada agncia localizada em uma cidade identificada por um nome nico. Os clientes do banco so identificados pelo nmero de seu seguro social. 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 de seu seguro social. Alm disso, so guardados os dados de nome e numero de telefone, nome de dependentes,e seguro social de seu gerente, para cada empregado. Tambm se encontra no banco de dados a data de contratao do empregado.

24

12

Empresa Bancria
O banco oferece dois tipos de contas: conta-poupana e conta-movimento. As contas movimento podem possuir mais de um correntista, e um correntista pode possuir mais de uma conta. Cada conta possui um nico nmero. O banco controla o saldo de cada conta assim como a data de ltimo acesso. A conta poupana possui taxa de juros associada, e a conta movimento registra os excessos nos limites. Um emprstimo originado em uma agncia pode ter sido obtido por um ou mais clientes. Cada emprstimo identificado por um nico nmero. O banco controla alm do montante emprestado, os pagamentos das parcelas.
25

Identificando as Entidades
Conjunto de entidades agncia cujos atributos so: Nome_agncia, cidade_agncia, e fundos. Conjunto de entidades cliente, com os atributos:

Conjunto de entidades empregado, cujos atributos:

Nome_cliente, seguro_social, rua_cliente, e cidade_cliente. Atributo adicional possvel: nome bancrio. Seguro_social_empregado, nome_empregado, numero_telefone, salrio e gerente. Atributos

adicionais descritivos multivalorados nomes_dependentes , atributo bsico data_incio, e e atributo descritivo tempo_de_trabalho.
26

13

Identificando Entidades
Dois conjuntos de entidades contas: conta-poupana e conta-movimento. Com atributos comuns : numero_conta e saldo. Possuindo tambm, a contapoupana o atributo taxa-juros e a contamovimento, o atributo limite_cheque_especial. Conjunto de entidades emprstimo, com os atributos: Numero-emprstimo, total e agncia_origem. Atributos adicionais possveis: pagamento_emprstimo, multivalorado, composto de: numero_pagamento, data_pagamento e total_pagamento.
27

Designao dos Relacionamentos


Devedor: relacionamento muitos para muitos entre cliente e emprstimo. Agncia_emprstimo: conjunto de relacionamentos muitos para um que indica qual a agncia responsvel pelo emprstimo. Pagamento_emprstimo: relacionamento um para muitos entre emprstimo e pagamento que documenta que um pagamento est sendo feito para um dado emprstimo. Depositante: com os atributos de relacionamento data_acesso, um relacionamento muitos para muitos entre cliente e conta.
28

14

Designao dos Relacionamentos


Agente_cliente: com o atributo tipo, um relacionamento muitos para um expressando que um cliente pode ser atendido por determinado empregado, e que um empregado pode atender um ou mais clientes. Trabalha_para: relacionamento entre empregados, que determina que se trata de gerente ou empregado, onde um empregado trabalha para um gerente especfico e que um gerente supervisiona um ou mais empregados.
29

Exerccios
1.

2.

Construa um diagrama E-R para a secretaria de uma universidade. A universidade mantm dados sobre cada turma, inclusive do professor, programa horrio e sala de aula. Para cada par estudante-turma, uma grade registrada. Documente todas as suas hipteses sobre o mapeamento de restries. Construa um diagrama E-R para uma companhia de seguros de automveis que tem um conjunto de clientes, cada um deles proprietrio de um ou mais carros. Cada carro est associado com nenhum ou vrios registros de acidentes.
30

15

3. Construa um diagrama E-R para um hospital com um

conjunto de pacientes e um corpo mdico. Associe cada paciente a um pronturio registrando os diversos exames e avaliaes realizados.

31

16