name
Site: Curso:
Livro: Livro Virtual de Sistemas de Banco de Dados Impresso por: Richard Vital da Silva 435716 Data: Thursday, 18 April 2013, 14:47
ead.sead.ufscar.br/mod/book/print.php?id=232593
1/67
18/04/13
name
Sumrio
1 Conceitos Bsicos 1.1 O que Banco de Dados? 1.2 Banco de Dados versus Processamento de Arquivos 1.3 Modelo de Dados 1.4 O que Sistema de Banco de Dados? 1.5 Projeto de Banco de Dados 1.6 Pessoas em torno de um Sistema de Banco de Dados 1.7 Arquitetura de trs-esquemas 1.8 Independncia de Dados 1.9 Linguagens de Banco de Dados 1.10 Software Gerenciador de Banco de Dados 1.11 Exerccios complementares 1.12 Indicao de Leitura Complementar 2 Projeto Conceitual de Banco de Dados 2.1 Entidade e Conjunto (ou Tipo) de Entidades 2.2 Modelo de Dados Entidade-Relacionamento 2.3 Relacionamentos e Conjuntos de Relacionamentos 2.4 Atributos de Entidades ou Relacionamentos 2.5 Diagrama Entidade-Relacionamento (DER) 2.6 Exerccio complementar 2.7 Indicao de Leitura Complementar 2.8 Material Complementar 3 Modelo de Dados Relacional 3.1 Conceitos do Modelo Relacional 3.2 Restries do Modelo Relacional 3.3 Restries de Domnio 3.4 Restries de Chave 3.5 Restrio de Integridade de Entidade 3.6 Restrio de Integridade Referencial e Chave Estrangeira 3.7 Indicao de Leitura Complementar 3.8 Material Complementar 4 Projeto de Banco de Dados Relacional 4.1 Esquema Conceitual do banco de dados Empresa 4.2 Mapeamento dos Conjuntos de Entidades Regulares (ou Fortes) 4.3 Mapeamento dos Conjuntos de Entidades Fracas 4.4 Mapear Conjuntos de Relacionamentos Binrios 1:1 4.5 Mapear Conjuntos de Relacionamentos Binrios 1:N 4.6 Mapear Conjuntos de Relacionamentos Binrios N:M 4.7 Mapear Conjuntos de Relacionamentos n-rios (grau > 2) 4.8 Mapear atributos multivalorados 4.9 Esquema Lgico Relacional do banco de dados Empresa 4.10 Material Complementar 4.11 Exerccio complementar 5 Dependncias Funcionais Dependncias Multivaloradas e Normalizao 5.1 Processo de Normalizao 5.2 Dependncias Funcionais 5.3 Dependncias Funcionais Parciais 5.4 Dependncias Funcionais Transitivas 5.5 Primeira Forma Normal - 1FN 5.6 Segunda Forma Normal - 2FN 5.7 Terceira Forma Normal - 3FN 5.8 Terceira Forma Normal - 3FN (Alternativa) 5.9 Forma Normal de Boyce-Codd - FNBC 5.10 Material Complementar - Slides
ead.sead.ufscar.br/mod/book/print.php?id=232593
2/67
18/04/13
name
1 Conceitos Bsicos
Bancos de dados tornaram-se essenciais em nosso dia a dia. So inmeras as aplicaes que utilizam sistemas de banco de dados: 1. 2. 3. 4. 5. 6. 7. 8. bancos financeiros: armazenam todas as transaes bancrias empresas areas: reservas de assentos em vos, agendamentos de vos vendas: clientes, produtos, estoques, compras revendedores online: registro de pedidos, recomendaes personalizadas industria: produo, estoque, pedidos, fornecedores recursos humanos: regoistro de empregados, salrios, deduo de taxas universidades: registros de alunos, disciplinas, salas, notas bibliotecas: registro de acervo, registro de usurio, registro de emprstimo
Muitas dessas aplicaes so ditas aplicaes tradicionais de banco de dados, pois envolvem essencialmente textos e nmeros, porm tem crescido as aplicaes que envolvem dados ditos no convencionais como udio, vdeo, mapas, imagens de satlites, etc. O emprego de avanos tecnolgicos tornaram possveis aplicaes inovadoras de sistemas de banco de dados, tais como: 1. banco de dados multimdia: armazenam e manipulam figuras, videoclipes, mensagens sonoras; 2. sistemas de informaes geogrficas: armazenam e analisam mapas, dados do tempo e imagens de satlite; 3. data warehouses: utilizados em conjunto com ferramentas de processamento analtico online (OLAP) possibilitam empresas extrair e analisar informaes teis de grandes bancos de dados para tomada de deciso; 4. tecnologia de bancos de dados ativos e de tempo real so utilizados no controle de processos industriais e de produo. 5. tecnologia de banco de dados aplicadas a WWW aprimora a recuperao de informaes pelos usurios da internet. Para que voc possa compreender as aplicaes mais avanadas comearemos explorando bancos de dados convencionais. Nas prximas sees conheceremos um pouco mais sobre os conceitos que cercam os sistemas de banco de dados.
ead.sead.ufscar.br/mod/book/print.php?id=232593
3/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
4/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
5/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
6/67
18/04/13
name
Figura 1.1 - Configurao simplificada de um sistema de banco de dados (extraida de [ELMASRI 2005] - figura cedida pela Editora Pearson). Conforme apresentado na figura 1.1, um sistema de banco de dados basicamente constitudo por um conjunto de dados interrelacionados, que aparece na figura como "banco de dados armazenado"; por metadados, ou seja, por um conjunto de dados sobre os dados e as restries que se aplicam aos mesmos, que aparece na figura como " Definio dos Dados Armazenados" - comumente chamado de Dicionrio de Dados; o software gerenciador de banco de dados - que um ambiente conveniente e eficiente para acessar aos dados, e, finalmente um conjunto de programas de aplicaes e/ou consultas que fazem a interface com o usurio e/ou programador do sistema.
ead.sead.ufscar.br/mod/book/print.php?id=232593
7/67
18/04/13
name
Figura 1 - Etapas de desenvolvimento de um projeto de sistema de banco de dados. (extrado de [ELMASRI 2005] - ilustrao cedida pela editora Pearson) Levantamento de requisitos (independe do SGBD) Na fase de levantamento de requisitos e anlise de requisitos podem ser aplicadas tcnicas de engenharia de software que facilitam a comunicao entre especialistas de computao e especialistas de domnio. uma fase essencial para o desenvolvimento do sistema, pois a qualidade da soluo est intrinsecamente relacionada a um documento de requisitos preciso. Projeto Conceitual (independe do SGBD) a etapa de projeto conceitual realizada a partir do documento de requisitos e independente de implementao, ou seja,independe de SGBD. O fruto desta etapa a construo de um modelo conceitual, que em nossa disciplina ser representado por um diagrama entidade relacionamento. Nesta etapa podem ainda surgir questes sobre os requisitos, sendo recomendvel questionar o especialista do domnio sobre tais dvidas, neste sentido o modelo conceitual pode auxiliar no refinamento dos requisitos do sistema. Projeto Lgico Esta etapa tem por objetivo transformar o modelo conceitual em um modelo lgico. O modelo lgico define como o banco de dados ser implementado em SGBD especfico. Em nossa disciplina vamos obter um esquema relacional, pois o PostgreSQL um SGBD baseado no modelo de dados relacional. Projeto Fsico nesta etapa o modelo do banco de dados enriquecido com detalhes que influenciam no desempenho do banco de dados, mas no interferem em sua funcionalidade. O modelo obtido nesta fase o modelo fsico do banco de dados. Estas etapas, conforme [HEUSER 2008] salienta, so adequadas para a construo de um novo banco de dados. Caso j exista um banco de dados ou um conjunto de arquivos convencionais, e se pretenda construir um novo banco de dados, o processo anterior modificado e incorpora uma etapa de engenharia reversa.
ead.sead.ufscar.br/mod/book/print.php?id=232593
8/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
9/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
10/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
11/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
12/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
13/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
14/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
15/67
18/04/13
name
Figura 1 - Etapas de desenvolvimento de um projeto de sistema de banco de dados. (extrada de [ELMASRI 2005] - ilustrao cedida pela editora Pearson) Nesta disciplina vamos supor que teremos em mos o documento de requisitos que obtido aps um processo, normalmente longo, de levantamento e anlise de requisitos. Vrias metodologias e tcnicas que podem auxiliar no processo de levantamento de requisitos so assuntos da disciplina Engenharia de Software. Maiores detalhes sobre essas tcnicas e metodologias podem se obtidos no livro do Pressman [PRESSMAN 2006]. Na etapa de projeto conceitual o desafio enfrentado o de representar com o maior grau de fidelidade possvel a complexidade existente na realidade que pretendemos abstrair no banco de dados. Essa uma etapa fundamental para o xito da tarefa de implementar um bom banco de dados. O Modelo EntidadeRelacionamento um poderoso modelo de dados que nos auxilia a desenvolver a etapa de projeto conceitual do banco de dados.
ead.sead.ufscar.br/mod/book/print.php?id=232593
16/67
18/04/13
name
Figura 3 Exemplo de entidades pessoa e disco com seus respectivos atributos. Um conjunto de entidades pode ser regular ou fraca. Um conjunto de entidades regulares possui um conjunto de atributos que identifica unicamente cada entidade pertencente a ela, enquanto um conjunto de entidades fracas no possui um conjunto de atributos suficientes para garantir a unicidade de suas entidades. Voc ver mais sobre os identificadores e sua influncia do conjunto de entidades na seo que trata sobre atributos.
ead.sead.ufscar.br/mod/book/print.php?id=232593
17/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
18/67
18/04/13
name
Figura 1 - Diagrama representando o relacionamento Trabalha_em entre Empregado e Empresa. A restrio de cardinalidade de relacionamento informa qual o nmero mximo de ocorrncias de relacionamento pode haver de um conjunto de entidade com o outro conjunto de entidade por um determinado conjunto de relacionamento. No exemplo, a restrio de cardinalidade de Empregado no conjunto de relacionamento Trabalha_em com Empresa 1, significando que um empregado pode se relacionar com apenas 1 entidade empresa. Por outro lado, a restrio de cardinalidade de Empresa no conjunto de relacionamento Trabalha_em com Empregado N, significando que uma empresa pode empregar vrios (N) empregados. No caso dizemos que a restrio de cardinalidade neste relacionamento N:1 (l-se muitos para 1 ou N para 1). As cardinalidades entre os conjuntos de relacionamentos podem ser de 1 para 1, ou de 1 para N (ou N para 1), ou de N para N. A letra N representa vrios e pode ser substituda por qualquer outra letra, tal como, M, P, Q, etc. A restrio de participao de um conjunto de entidade em um conjunto de relacionamentos indica a obrigatoriedade ou no de suas entidades participarem daquele conjunto de relacionamentos com o outro conjunto de entidade. A restrio de participao pode ser total ou parcial, se a restrio total implica que todas as entidades pertencentes quele conjunto de entidade obrigatoriamente participar em alguma instncia daquele conjunto de relacionamento, se a restrio parcial implica que podem existir entidades que no participam do relacionamento. O grau do relacionamento indica quantos conjuntos de entidades esto envolvidos naquele determinado relacionamento. No exemplo da Figura 1, temos que o grau do relacionamento 2, indicando um relacionamento binrio. Um conjunto de relacionamentos pode associar vrios conjuntos de entidades, caracterizando relacionamentos ternrios (grau 3), relacionamentos quaternrios (grau 4), etc. Um exemplo de relacionamento ternrio, ou seja, com grau 3, est ilustrado na Figura 2. importante observar que um relacionamento com grau N > 2 s se justifica se no puder ser decomposto em relacionamentos com graus menores e ainda manter a semntica desejada.
ead.sead.ufscar.br/mod/book/print.php?id=232593
19/67
18/04/13
name
Figura 2 - Exemplo de Conjunto de Relacionamento Ternrio (Grau 3) Existem conjuntos de relacionamentos regulares que so aqueles que associam conjuntos de entidades regulares (ou fortes) e conjuntos de relacionamentos identidade que associam um conjunto de entidade fraca ao conjunto de entidade proprietria. Cabe ressaltar que devido ao fato de uma entidade fraca ser identificada sempre por sua entidade proprietria, a restrio de participao do conjunto de entidade fraca em seu conjunto de relacionamento identidade com a proprietria deve sempre ser total.
ead.sead.ufscar.br/mod/book/print.php?id=232593
20/67
18/04/13
name
Figura 3 Exemplo de entidades pessoa e disco com seus respectivos atributos. Porm, observe, o que o nome de uma pessoa? Como voc entende isso? Voc pode julgar que informar apenas o primeiro nome suficiente, outro pode achar que so necessrios o primeiro nome e o sobrenome e um terceiro pode julgar que so necessrios: o primeiro nome, as iniciais dos nomes do meio e o sobrenome. Quando dito que um determinado atributo simples, e os valores possveis para esse atributo podem ser formados por partes como o exemplo citado, deve-se ter em mente que dependendo de quem for armazenar o valor, em um momento pode-se ter o valor completo (primeiro nome, nomes do meio e sobrenome) assim como em outro momento pode-se encontrar apenas partes do valor completo (primeiro nome e sobrenome). Se no existe a necessidade de fazer a verificao se o valor esperado foi armazenado, ento est tudo bem. Caso contrrio, deve-se lanar mo de outra categoria de atributos, os atributos compostos. Um atributo composto definido por um conjunto de outros atributos componentes, ou seja, um atributo composto aquele que para conhecer seu significado completo faz-se necessrio conhecer os valores de seus componentes. Seguindo no mesmo exemplo, se necessrio garantir que todas as partes (ou pelo menos algumas delas) de um nome sejam conhecidas (obrigatrio informar, por exemplo, o nome e sobrenome), ento, deve-se representar o atributo nome como um atributo composto por prenome e sobrenome, para obrigar a pessoa que estiver digitando os valores a fornecer esses dados (obviamente, esse obrigar dever ser implementado mais tarde, por enquanto estamos sinalizando que seria interessante implementar dessa forma).
Figura 4 - Entidade Pessoa com Nome Composto Na Figura 4, a entidade pessoa representada com o atributo Nome composto por prenome e sobrenome. Desta forma, pode-se obrigar a entrada de dados com estas duas partes do nome. No exemplo o prenome Wes e o sobrenome Montgomery. Se quisermos conhecer o nome dessa pessoa, precisamos concatenar os dois componentes: Wes Montgomery. Um atributo ainda pode ser caracterizado como monovalorado ou multivalorado. Um atributo definido como monovalorado implica que para uma entidade do mundo real, admite apenas um valor para aquele atributo. O que significa dizer isso? Continuemos com nosso exemplo anterior, uma pessoa, que uma entidade do mundo real, pode ter apenas um nome associado a ela (esse nome pode ser composto como vimos antes). Caso queiramos armazenar outros nomes pelos quais conhecido, teremos que guardar seus apelidos ou codnomes, concorda? Pois bem, isso significa que devemos definir o nome da pessoa como um atributo monovalorado, que vai admitir apenas um nome para cada pessoa. E no caso dos apelidos ou codnomes? Bom, uma pessoa pode ter vrios apelidos, no ? Pois bem, ento se fossemos armazenar os apelidos de uma pessoa, deveramos definir esse atributo como multivalorado. Um atributo multivalorado representa a possibilidade de para uma mesma entidade do mundo real registrarmos mais de um valor para aquele atributo.
ead.sead.ufscar.br/mod/book/print.php?id=232593
21/67
18/04/13
name
Figura 5 - Entidade Pessoa com vrios apelidos. Na figura 5, temos o exemplo da entidade pessoa com um atributo multivalorado Apelidos. No exemplo, vemos em contraposio ao Nome, que um atributo simples e monovalorado, o atributo Apelidos que simples e multivalorado. Para entender a notao utilizada, observe que o valor de nome definido pelos parenteses mais externos e composto por dois outros atributos indicados nos parenteses mais internos, enquanto o valor para o atributo Apelidos definido entre chaves e o conjunto dos valores nos parenteses internos. Alm dessa categorizao mais genrica de atributos no MER, existem outros conceitos associados a atributos: atributo identificador atributo identificador parcial ou discriminatrio atributo derivado Ao definirmos um atributo como atributo identificador estamos impondo uma importante restrio aos valores possveis para esse atributo - a restrio de ser nico dentro do universo de entidades do conjunto de entidades que o atributo caracteriza. Por exemplo, podem existir duas pessoas com o mesmo nome? Sim, pode, voc vai responder. E est certo, podemos encontrar vrios homnimos na vida real. Isso significa que o nome de uma pessoa no deve ser considerado um atributo identificador para o conjunto de entidades pessoa. E que dado sobre uma pessoa a caracteriza de todas as outras? Simples, temos que encontrar dados que indubitavelmente nos aponta uma nica pessoa. Por exemplo, possvel ter mais de um cadastro de pessoa fsica (CPF)? Bom, se deixarmos as fraudes de lado, podemos afirmar que cada pessoa tem um, e somente um, nmero de CPF. Ou seja, se informo meu CPF, o nico nome que deve ser encontrado o meu! Sendo assim, esse um possvel atributo identificador de pessoa. Que tal procurar outros dados com as mesmas caractersticas? O registro geral (RG), caso reunamos as informaes de nmero e nome e estado do orgo emissor, pode identificar unicamente um indivduo, assim como o ttulo de eleitor, a CNH, etc. Em geral, podemos considerar os documentos de pessoas fsicas e jurdicas como possveis identificadores. Um conjunto de entidades que contm atributos suficientes para encontrarmos um identificador chamado de Conjunto de Entidades Regular (ou Forte). Um atributo identificador parcial ou discriminatrio s encontrado no contexto de Conjunto de Entidades Fracas que assim chamado por no possuir atributo suficiente para que seja descoberto um identificador para suas entidades. Nesse caso, o conjunto de entidades fracas precisar do auxlio do identificador de outro conjunto de entidades, dita sua proprietria, para identificar unicamente uma entidade dentro dela. Se cada entidade da proprietria estiver relacionada a mais de uma entidade fraca, necessrio ento definir um atributo identificador parcial que ter o importante papel de, junto com o identificador de sua proprietria, indicar uma e somente uma, entidade fraca dentre desse conjunto. Por exemplo, podemos em um banco de dados de empresa, desejar armazenar dados sobre dependentes de seus funcionrios para efeito de imposto de renda. Porm sobre esses dependentes, desejamos armazenar somente o nome e o parentesco com o funcionrio. Analisemos: podemos imaginar um conjunto de entidades Funcionrio para o qual armazenamos, no mnimo, seu CPF e nome e temos um conjunto de entidades Dependente com os atributos nome e parentesco. Para o conjunto de entidades Funcionrio fcil descobrir um identificador: CPF. E para o conjunto de entidades Dependente? Vejamos: nome de pessoa no um bom identificador, como j discutimos antes. Sobra-nos, ento o parentesco? Nossa, quantos parentes "filho(a)" ou "me/pai" encontraramos nesse banco de dados? Muitos, com certeza! Ainda temos a possibilidade de reunirmos os dois dados: nome + parentesco para definirmos unicamente uma entidade nesse conjunto. Oras, se podemos encontrar homonimos (e sabemos que sim) o que impede desses homonimos terem o mesmo grau de parentesco com seus responsveis? Nada. Ou seja, se encontrarmos duas pessoas com o nome de "Sabrina Silva" no banco de dados de Dependente, no seria de estranhar que o grau de parentesco com seu responsvel na empresa fosse "filho(a)"! Chegamos a um impasse! No existem outros atributos para Dependentes, o que fazemos? Sentamos e choramos? Nem pensar! A alternativa mais correta considermos esse conjunto de entidades como Fraca. Sendo assim precisamos localizar uma proprietria para ela: Funcionrio - pois devido a existncia de um responsvel nos quadros da empresa que leva ao cadastro do dependente. Certo. Ento, se eu conheo o CPF do funcionrio, conheo seus dependentes. No bem assim, ainda precisamos saber se o funcionrio pode ter atrelado a ele mais de um dependente. Se isso for verdade, precisamos alm de conhecer seu CPF, conhecer tambm o nome do dependente. Nesse caso o nome do dependente o atributo identificador parcial do conjunto de entidades fracas Dependente. Veja o exemplo: Funcionrio CPF 05899356808 08085539926 NOME Jos Silva Luiz Gonalves Silva Dependente NOME Sabrina Silva Sabrina Silva PARENTESCO filho(a) filho(a)
Consideremos que "Jos Silva" pai de uma das "Sabrina Silva" e que "Luiz Gonalves Silva" pai da outra "Sabrina Silva". Se imaginarmos que cada funcionrio tem apenas um dependente, fica fcil encontrarmos um e s um dependente para cada um. Basta associarmos o identificador correto do responsvel para cada dependente e considerarmos esse tambm o identificador do tipo de entidade fraca Dependente. Funcionrio CPF 05899356808 08085539926 NOME Jos Silva Luiz Gonalves Silva Dependente CPF do Responsvel 05899356808 08085539926 08085539926 NOME Sabrina Silva Sabrina Silva Gabriela Silva PARENTESCO filho(a) filho(a) filho(a)
Mas, e se o funcionrio puder ter mais de um dependente? Como fica? Se continuarmos considerando somente o CPF do responsvel como identificador dessa identidade, no iremos conseguir definir uma nica entidade (olhe as duas ltimas linhas). Como podemos diferenci-las? A resposta "Fazendo nome de dependente ser um identificador parcial", pois se voc souber o CPF do responsvel e tambm o nome do dependente voc localiza uma nica linha em Dependente. Para finalizar o assunto sobre diferentes atributos, vamos definir o atributo derivado. Um atributo derivado aquele cujo valor pode ser obtido efetuando algum computo sobre os dados j armazenados. Um exemplo tpico a idade de uma pessoa. Se voc j tem a data de nascimento armazenada possvel saber a idade da pessoa,
ead.sead.ufscar.br/mod/book/print.php?id=232593 22/67
18/04/13
name
para tanto basta conhecer a data atual e subtrair a data do nascimento armazenada. Essa fcil, no ? Outros exemplos: nmero de funcionrios de um departamento (se voc j relacionou os funcionrios aos seus respectivos departamentos basta cont-los!), nmero de dependentes por funcionrio (similar ao anterior).
ead.sead.ufscar.br/mod/book/print.php?id=232593
23/67
18/04/13
name
Um conjunto de entidades regular representando por um retngulo, como ilustrado na Figura 2. Um elemento do conjunto de entidades definido como uma Entidade, sendo identificado por caractersticas individuais definidas atravs do conceito de atributos (representados poe elipses). Assim, uma Pessoa pode ser caracterizada atravs dos atributos Nome, CPF, Sexo, Idade, Altura, etc.
Figura 2 - Conjunto (ou Tipo) de Entidade Pessoa no DER As distintas categorizaes dos atributos: simples e monovalorado, simples e multivalorado, composto e monovalorado e composto e multivalorado so representados na Figura 3.
ead.sead.ufscar.br/mod/book/print.php?id=232593
24/67
18/04/13
name
Figura 3 - Representao de Atributos no DER Na Figura 4, o atributo nome representado como um atributo composto e monovalorado. Prenome e Sobrenome so seus atributos componentes.
Figura 4 - Atributo Composto e Monovalorado Na Figura 5 esto representados diversos conjuntos de entidades associados por conjuntos de relacionamentos. Em cada conjunto de relacionamento est ilustrada uma restrio de cardinalidade 1:1, 1:N e M:N.
Na Figura 6 esto representados conjuntos de entidades interagindo em um conjunto de relacionamentos de grau 3 (ou ternrio).
ead.sead.ufscar.br/mod/book/print.php?id=232593
25/67
18/04/13
name
A Figura 7 apresenta o conjunto de relacionamento Cursa entre Estudante e Disciplina, onde a restrio de participao de Estudante em Cursa total (representado pela linha dupla) e a restrio de participao de Disciplina em Cursa parcial.
A Figura 8 ilustra um conjunto de entidades fraca, Ementa, associada pelo conjunto de relacionamento identidade Possui ao seu conjunto de entidade proprietria Disciplina. Observe que a restrio de participao de Ementa em Possui Total. Isso sempre verdade quando se trata da relao entre a fraca e sua identidade. Deve ser lembrado que, caso a cardinalidade em Possui fosse N:1, significando que uma disciplina pudesse ter vrias ementas, seria necessrio apontar um conjunto de atributos identificador parcial para Ementa, conforme visto na seo sobre Atributos.
ead.sead.ufscar.br/mod/book/print.php?id=232593
26/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
27/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
28/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
29/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
30/67
18/04/13
name
Na figura 1 pode ser observada a estrutura de uma relao, cujo nome ALUNO. Essa relao possui os atributos Nome, SSN, FoneResidencia, Endereco, FoneEscritorio, Idade e MPG. Cada entidade aluno do mundo real descrito por uma tupla, ou seja, pelos valores da entidade aluno relacionados a cada atributo da relao. Tambm podemos nos referir a uma tupla como uma instncia da relao. Cada valor em uma tupla um valor atomico, ou seja, no divisivel. Pode ser observado que existem atributos que receberam o valor null. Qual o significado do valor null? O valor null pode significar que para uma dada entidade do mundo real aquele atributo no se aplica, ou seja, a entidade em questo no pode ter um valor para aquele atributo. Por exemplo, em uma relao Pessoa, podemos encontrar o atributo Certificado_Reservista, porm valores para esse atributo so esperados apenas para pessoas do sexo masculino e maior de 18 anos. Ento, se uma pessoa do sexo feminino ou uma pessoa do sexo masculino menor de 18 anos for cadastrada nessa relao Pessoa, o atributo Certificado_Reservista no vai fazer sentido para ela, nesse caso atribuimos o valor null com o sentido de no se aplica. Outro significado possvel o de desconhecermos o valor do atributo para determinada entidade do mundo real. No exemplo da figura 1, existem valores null para os atributos FoneResidencia e FoneEscritorio, o que nos leva a interpretar essa informao como: os alunos Benjamin, Katherine e Barbara no possuem um telefone de escritrio (existem 3 possibilidades para esse fato: ou no trabalham - ento o atributo no se aplica; o local onde trabalham no possui telefone ou no quiseram informar o nmero - portanto o nmero desconhecido). No caso do aluno Dick percebemos que ele no possui telefone em casa, ou seja, no se aplica (ou no quis informar o nmero - valor desconhecido).
ead.sead.ufscar.br/mod/book/print.php?id=232593
31/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
32/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
33/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
18/04/13
name
( #RG, OrgaoEmissorRG, idade) ( #RG, OrgaoEmissorRG, curso) (RA) (titulo_eleitor) (#RG, OrgaoEmissorRG)
Na realidade, talvez tenha esquecido alguma combinao de atributos que garanta a unicidade tambm, portanto, talvez ainda no estejam listadas todas as superchaves da relao Aluno. Se voc localizar alguma outra superchave favor informar! Um outro conceito importante o de Chave Candidata. Uma chave candidata definida como sendo uma superchave mnima, ou seja, uma superchave da qual no poderemos retirar sequer um atributo sob pena de no garantir mais unicidade de tupla. Seguindo no exemplo anterior, podemos observar que, na maioria dos casos, se retirarmos algum(ns) atributo(s) da superchave ainda mantemos a propriedade de garantir a unicidade de tupla. Vejamos, vou verificar as duas primeiras superchaves, siga o mesmo raciocnio para as demais superchaves: 1. (RA, titulo_eleitor) (RA) retirando titulo_eleitor ----- Existe alguma superchave que formada apenas por RA? Sim existe, a superchave 63, ento a superchave 1 no superchave mnima, pois mesmo retirando algum atributo permanece com a propriedade de garantir unicidade de tupla. (titulo_eleitor) retirando RA ------Existe alguma superchave que formada apenas por titulo_eleitor? Sim existe, a superchave 64, ento a superchave 1 no superchave mnima, pois mesmo retirando algum atributo permanece com a propriedade de garantir unicidade de tupla. 2. (RA, titulo_eleitor, #RG) (RA, titulo_eleitor)----- Existe alguma superchave que formada apenas por RA e titulo_eleitor? Sim existe, a superchave 1, ento a superchave 2 no superchave mnima. (RA, #RG)----- Existe alguma superchave que formada apenas por RA e #RG? Sim existe, a superchave 8,ento a superchave 2 no superchave mnima. (RA)----- Existe alguma superchave que formada apenas por RA? Sim existe, a superchave 63,ento a superchave 2 no superchave mnima. 3. (RA, titulo_eleitor, #RG, OrgaoEmissorRG) 4. (RA, titulo_eleitor, #RG, OrgaoEmissorRG, nome) 5. (RA, titulo_eleitor, #RG, OrgaoEmissorRG, nome, sexo) 6. (RA, titulo_eleitor, #RG, OrgaoEmissorRG, nome, sexo, idade) 7. (RA, titulo_eleitor, #RG, OrgaoEmissorRG, nome, sexo, idade, curso) 8. (RA, #RG) 9. (RA, #RG, OrgaoEmissorRG) 10. (RA, #RG, OrgaoEmissorRG, nome) 11. (RA, #RG, OrgaoEmissorRG, nome, sexo) 12. (RA, #RG, OrgaoEmissorRG, nome, sexo, idade) 13. (RA, #RG, OrgaoEmissorRG, nome, sexo, idade, curso) 14. (RA, OrgaoEmissorRG) 15. (RA, OrgaoEmissorRG, nome) 16. (RA, OrgaoEmissorRG, nome, sexo) 17. (RA, OrgaoEmissorRG, nome, sexo, idade) 18. (RA, OrgaoEmissorRG, nome, sexo, idade, curso) 19. (RA, nome) 20. (RA, nome, sexo) 21. (RA, nome, sexo, idade) 22. (RA, nome, sexo, idade, curso) 23. (RA, sexo) 24. (RA, sexo, idade) 25. (RA, sexo, idade, curso) 26. (RA, idade) 27. (RA, idade, curso) 28. (RA, curso) 29. (titulo_eleitor, #RG) 30. (titulo_eleitor, #RG, OrgaoEmissorRG) 31. (titulo_eleitor, #RG, OrgaoEmissorRG, nome) 32. (titulo_eleitor, #RG, OrgaoEmissorRG, nome, sexo) 33. (titulo_eleitor, #RG, OrgaoEmissorRG, nome, sexo, idade) 34. (titulo_eleitor, #RG, OrgaoEmissorRG, nome, sexo, idade, curso) 35. (titulo_eleitor, OrgaoEmissorRG) 36. (titulo_eleitor, OrgaoEmissorRG, nome) 37. (titulo_eleitor, OrgaoEmissorRG, nome, sexo) 38. (titulo_eleitor, OrgaoEmissorRG, nome, sexo, idade) 39. (titulo_eleitor, OrgaoEmissorRG, nome, sexo, idade, curso) 40. (titulo_eleitor, nome) 41. (titulo_eleitor, nome, sexo) 42. (titulo_eleitor, nome, sexo, idade) 43. (titulo_eleitor, nome, sexo, idade, curso) 44. (titulo_eleitor, sexo) 45. (titulo_eleitor, sexo, idade) 46. (titulo_eleitor, sexo, idade, curso) 47. (titulo_eleitor, idade) 48. (titulo_eleitor, idade, curso) 49. (titulo_eleitor, curso) 50. (#RG, OrgaoEmissorRG, nome) 51. ( #RG, OrgaoEmissorRG, nome, sexo)
ead.sead.ufscar.br/mod/book/print.php?id=232593 35/67
18/04/13
name
52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65.
( #RG, OrgaoEmissorRG, nome, sexo, idade) ( #RG, OrgaoEmissorRG, nome, sexo, idade, curso) ( #RG, OrgaoEmissorRG, nome) ( #RG, OrgaoEmissorRG, nome, sexo) ( #RG, OrgaoEmissorRG, nome, sexo, idade) ( #RG, OrgaoEmissorRG, nome, sexo, idade, curso) ( #RG, OrgaoEmissorRG, sexo) ( #RG, OrgaoEmissorRG, sexo, idade) ( #RG, OrgaoEmissorRG, sexo, idade, curso) ( #RG, OrgaoEmissorRG, idade) ( #RG, OrgaoEmissorRG, curso) (RA) ----- No existe outro atributo para ser retirado! Sendo assim, a superchave 63 uma superchave mnima! (titulo_eleitor) ----- No existe outro atributo para ser retirado! Sendo assim, a superchave 64 uma superchave mnima! (#RG, OrgaoEmissorRG) (#RG) ----- Existem nmeros de RG iguais emitidos por rgos emissores de estados diferentes, portanto se retirarmos OrgaoEmissorRG a propriedade de unicidade no mantida. Sendo assim, a superchave 65 uma superchave mnima! (OrgaoEmissorRG) ----- Os rgos emissores emitem diversos nmeros de RG, sendo assim existem distintos alunos com o mesmo rgo emissor, portanto se retirarmos #RG a propriedade de unicidade no mantida. Sendo assim, a superchave 65 uma superchave mnima!
Observe que apesar da relao aluno ter pelo menos 65 superchaves, possui apenas 3 chaves candidatas: {(RA), (titulo_eleitor), (#RG, OrgaoEmissorRG)}. Finalmente, chegamos ao conceito de Chave Primria. O conceito de chave primria bastante similar ao conceito de Identificador do modelo ER. A chave primria o conjunto de atributos escolhidos para garantir a unicidade da relao. A chave primria deve pertencer, obrigatoriamente, ao conjunto das chaves candidatas da relao. A rigor, podemos escolher qualquer uma das chaves candidatas para torn-la a chave primria da relao, mas podemos utilizar alguns critiros para "desempatar", por exemplo: - escolher a chave candidata com menor nmero de atributos. No exemplo, teramos ainda um empate entre RA e titulo_eleitor, ambas chaves candidatas simples (formadas por um nico atributo). - escolher a chave candidata mais representativa, semanticamente falando, para a relao. No exemplo apresentado, o RA significa Registro Academico e parece ser a chave candidata mais representativa quando se fala em alunos.
ead.sead.ufscar.br/mod/book/print.php?id=232593
36/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
37/67
18/04/13
name
Figura 1. Restries de Integridade Referencial no esquema de um BD relacional Na figura 1 podemos identificar as chaves estrangeiras e as relaes referenciadas no esquema do BD Empresa. Na tabela EMPREGADO podemos perceber o atributo SuperSSN, que mantm o SSN do funcionrio que supervisor, neste caso temos uma chave estrangeira (FK) definida dentro da relao que est sendo referenciada. Ou seja, temos uma chave estrangeira recursiva representando um autorelacionamento do modelo entidade-relacionamento. Existe uma outra FK, DNO, que referencia a relao DEPARTAMENTO, representando onde o funcionrio est alocado. Em DEPARTAMENTO encontramos a FK GerSSN que referencia a relao EMPREGADO, para manter o gerente do departamento. Em PROJETO, encontramos DNUM que referencia a tabela DEPARTAMENTO para registrar qual o departamento que controla o projeto. Em DEPENDENTE temos a FK ESSN referenciando a relao EMPREGADO, para informar quem o responsvel pelo dependente, e que auxilia o atributo Nome_Dependente a formar a chave primria da relao. Alm dessas, temos as relaes que expressam relacionamentos (TRABALHA_EM) e atributos mulltivalorados (DEPTO_LOCALIZACOES). TRABALHA_EM tem sua chave primria formada pelas FKs ESSN , referenciando EMPREGADO, e PNO, referenciando PROJETO, para identificar os projetos nos quais os funcionrios trabalham. DEPTO_LOCALIZACOES tambm tem uma FK auxiliando na chave primria (DNumero, referenciando DEPARTAMENTO) para que possam ser definidas vrias localizaes para um mesmo departamento. Observe que atravs das chaves estrangeiras podemos relacionar as diversas relaes e a garantia de integridade referencial ir assegurar que sempre que uma tupla for referenciada, certamente ela existe. Em outros termos, apenas podemos atribuir um valor para uma chave estrangeira se esse valor existir como valor do atributo chave primria em alguma tupla da relao referenciada por ela.
ead.sead.ufscar.br/mod/book/print.php?id=232593
38/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
39/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
40/67
18/04/13
name
Nesse captulo do livro virtual ser apresentado o procedimento a ser utilizado para obter o esquema lgico relacional a partir de um esquema conceitual representado pelo DER.
ead.sead.ufscar.br/mod/book/print.php?id=232593
41/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
42/67
18/04/13
name
Figura 1. Esquema lgico relacional aps mapeamento dos conjuntos de entidades regulares.
ead.sead.ufscar.br/mod/book/print.php?id=232593
43/67
18/04/13
name
Figura 1. Extrato do esquema conceitual do BD Empresa - Conjunto de Entidades Fracas com Identidade e Proprietria. O mapeamento desse conjunto de entidades gerou mais uma relao em nosso esquema relacional, conforme apresentado na figura 2.
Figura 2. Esquema lgico do banco de dados Empresa aps o mapeamento dos conjuntos de entidades fracas. Observe, na figura 2, que ESSN e Nome_Dependente formam a chave primria composta da relao Dependente. O ESSN uma chave estrangeira que referencia a relao empregado. Essa chave estrangeira aparece em decorrncia do mapeamento do conjunto de relacionamento Identidade Dependente_de.
ead.sead.ufscar.br/mod/book/print.php?id=232593
44/67
18/04/13
name
Figura 1. Extrato do esquema conceitual do BD Empresa - Conjunto de relacionamento binrio 1:1 Abordagem 1: Escolha da chave estrangeira Voc deve escolher um dos conjuntos de entidade participantes para receber a chave estrangeira que servir como ligao entre as relaes. Mas, qual delas escolher? A rigor voc pode escolher qualquer uma delas, porm recomendado que verifique se um dos conjuntos de entidade possui restrio de participao total pois nesse caso melhor que esse conjunto de entidade receba a chave estrangeira. Por que? Porque a chave estrangeira ser um atributo a mais nessa relao e se a restrio de participao total isso implica que esse valor sempre dever ser preenchido (restrio not null). Caso ambas as restries sejam parciais, a escolha pode ser arbitrria (uni, duni, t, salam, mingue...) , ou seja, escolha qualquer das relaes e coloque a chave estrangeira referenciando a outra relao. Caso existam atributos no conjunto do relacionamento esses atributos (simples e monovalorados) devem ser incluidos na mesma relao que receber a chave estrangeira. Em nosso exemplo, como pode ser observado na figura 1, encontramos a restrio de participao total do lado de Departamento no conjunto de relacionamento Gerencia, isso nos auxilia na escolha da relao (DEPARTAMENTO) que ir receber o atributo chave estrangeira que indicar qual dos funcionrios o gerente do departamento. Observe que o atributo DataInicio tambm deve ser inserido na relao DEPARTAMENTO acompanhando a deciso de onde colocar a chave estrangeira. Analisemos o impacto de introduzir a chave estrangeira na relao EMPREGADO, que possui restrio de participao parcial no conjunto de relacionamentos Gerencia pois nem todo empregado gerente de departamento. Isso poderia ser feito porm o custo disso seria a introduo de valores null para esse atributo em todas as tuplas de empregado que no fossem gerentes (o que, obviamente, deve ser em nmero muito maior do que aqueles que so gerentes!). Outra possibilidade, que no recomendada a menos que se justifique plenamente, seria o de introduzir a chave estrangeira em ambas as relaes, porm, alm de grande nmero de valores null como explicado acima, poderamos ter problemas de consistncia na atualizao dessas tabelas. A justificativa mais plausvel para essa soluo a necessidade (muito forte!) de facilitar a navegao entre as tabelas. Isso s se justificaria se fossem previstas consultas muito frequentes que exigissem tal navegao. Podemos observar nossa nova verso do esquema lgico relacional do banco de dados Empresa na figura 2, onde esto salientados os atributos acrescentados na relao DEPARTAMENTO para refletir o conjunto de relacionamentos Gerencia. O atributo GerSSN a chave estrangeira que referencia a relao EMPREGADO, portanto, esse atributo deve pertencer ao mesmo domnio do atributo chave de EMPREGADO, o atributo SSN.
Figura 2. Esquema lgico relacional do banco de dados Empresa aps etapa de mapeamento dos conjuntos de relacionamentos binrios 1:1 Abordagem 2: Opo da relao unificada (ou relacionamento incorporado) Essa abordagem prev a incorporao dos conjuntos de entidade e do conjunto de relacionamento em uma s relao. Essa opo pode ser interessante quando ambas
ead.sead.ufscar.br/mod/book/print.php?id=232593 45/67
18/04/13
name
as restries de participao so totais. Se fosse esse o caso em nosso exemplo, deveramos criar uma relao EmpregadoGerenciaDepartamento com todos os atributos de Empregado, todos os atributos de Departamento e o atributo do conjunto de relacionamento. Essa tabela substituiria as tabelas EMPREGADO e DEPARTAMENTO. muito fcil perceber que essa uma abordagem que no deve ser adotada trivialmente. Abordagem 3: Opo Referncia Cruzada (ou relao de relacionamento) Nessa abordagem deve ser gerada uma nova relao com as chaves estrangeiras para referenciar as relaes envolvidas no conjunto de relacionamento e o atributo presente no relacionamento. Essa abordagem deve ser evitada pois provoca, na maioria das vezes sem justificativas plausveis, um acrscimo de tempo na execuo de consultas pois envolve o uso da operao mais cara para o SGBD - a juno - como veremos nas unidades que tratam de linguagens de banco de dados. Essa nova relao gerada chamada de Relao de Relacionamento (ou tabela de busca) pois cada tupla representa uma instncia do relacionamento. Essa a soluo para os conjuntos de relacionamentos binrios N:M e para os de grau >2 (n-rios), como veremos nos prximos captulos.
ead.sead.ufscar.br/mod/book/print.php?id=232593
46/67
18/04/13
name
Figura 1. Extrato do esquema conceitual do BD Empresa com os conjuntos de relacionamentos 1:N ou N:1. Como mapear esses conjuntos de relacionamentos? O mapeamento desses conjuntos de relacionamentos se faz por chave estrangeira. Mas em que conjunto de entidade devemos introduzir a chave estrangeira? Vamos raciocinar utilizando o conjunto de relacionamentos Controla, se colocarmos a chave estrangeira em DEPARTAMENTO o que ir acontecer? A restrio de cardinalidade nos diz que 1 departamento pode se relacionar com vrias entidades de PROJETO, correto? Ento, vejamos a figura 2.
ead.sead.ufscar.br/mod/book/print.php?id=232593
47/67
18/04/13
name
Figura 2. Tentativa fracassada de mapeamento do conjunto de relacionamento 1:N - Controla Ou seja, no devemos inserir a chave estrangeira em DEPARTAMENTO! Devemos inserir na relao PROJETO, ento? A resposta sim! Vejamos a figura 3 para comprovar!
Figura 3. Mapeamento correto do conjunto de relacionamento 1:N - Controla Pode observar, na figura 3, que todas as instncias de PROJETO so nicas (no h valores de chave repetidos) e a informao de qual o departamento controlador tambm est toda representada! Anote a regra: Para mapear um conjunto de relacionamento 1:N, localizar a relao que representa o tipo de entidade do lado N do conjunto de relacionamento e inserir nessa relao a chave estrangeira da relao do lado 1. Essa a regra pois cada instncia do lado N se relaciona a apenas uma instncia do lado 1. Como ficou nosso esquema lgico do banco de dados Empresa? Vejamos o esquema lgico atual na figura 4.
ead.sead.ufscar.br/mod/book/print.php?id=232593
48/67
18/04/13
name
Figura 4. Esquema lgico relacional do banco de dados EMPRESA aps mapeamento de conjuntos de relacionamentos binrios 1:N Algumas observaes importantes que voc pode conferir na figura 4: O conjunto de relacionamento Superviso em EMPREGADO, um autorelacionamento (ou relacionamento recursivo) porisso o mapeamento desse conjunto de relacionamento foi expressa na prpia relao EMPREGADO atravs da chave estrangeira, SuperSSN, que referencia a tabela EMPREGADO. Esse atributo mantm quem o supervisor imediato de cada instncia da relao. Mas como chegamos a concluso que deveramos manter o SSN do supervisor e no do supervisionado? Fcil, observando os papis que as entidades empregado fazem no relacionamento (anotadas em cada aresta) e as respectivas cardinalidades. Perceba que foi mantida a regra geral para o mapeamento, inserimos a chave estrangeira no lado N do conjunto de relacionamentos, ou seja, trouxemos o SSN do supervisor para o lado de quem supervisionado! A relao EMPREGADO possui tambm o atributo chave estrangeira DNO que referncia o DEPARTAMENTO onde o funcionrio trabalha. Alternativa de mapeamento: Podemos adotar a Tabela de Relacionamento (ou Tabela de Busca) como uma soluo alternativa de mapeamento caso existam poucas tuplas da relao que recebe a chave estrangeira participando do conjunto de relacionamentos, pois nesse caso, adotando a alternativa padro incluiramos muitos nulos. Essa soluo, como j explicado anteriormente, aplica-se no caso de conjuntos de relacionamentos binrios N:M e nos de grau maior que 2 (n-rios). No prximo captulo ser explicado como gerar essas Tabelas de Relacionamento.
ead.sead.ufscar.br/mod/book/print.php?id=232593
49/67
18/04/13
name
Figura 1. Extrato do esquema conceitual do BD Empresa com um conjunto de relacionamento binrio M:N Para conjuntos de relacionamentos M:N adotamos a criao de uma Tabela de Relacionamento (ou Tabela de Busca), como j foi mencionado em captulos anteriores. Como construimos essa Tabela de Relacionamento? Devemos criar uma relao para representar o conjunto de relacionamento. Seguindo o exemplo, devemos criar uma relao Trabalha_Em, inserir duas chaves estrangeiras - ESSN e PNO - que respectivamente iro referenciar as tabelas EMPREGADO e PROJETO. Devemos acrescentar o atributo presente no conjunto de relacionamentos - horas. Como podemos definir uma chave primria para essa nova relao? A chave primria da relao deve ser composta pelos atributos que so chaves estrangeiras - ESSN e PNO. Observaes Importantes: Essa a nica situao de mapeamento de conjuntos de relacionamentos binrios em que as chaves estrangeiras passam a fazer parte da chave primria da relao que a recebe. A utilizao da Tabela de Relacionamento para conjuntos de relacionamentos binrios 1:1 e 1:N no so incentivados mas podem ser particularmente teis quando a relao que recebe a chave estrangeira tem poucas entidades que participam efetivamente do relacionamento para evitar o excesso de valores null na tabela. Nesses casos, a chave primria da Tabela de Relacionamentos ser apenas uma das chaves estrangeiras (e no as 2 como nos conjuntos de relacionamentos M:N). Nosso esquema lgico relacional aps o mapeamento do conjunto de relacionamentos Trabalha_Em apresentado na Figura 2.
Figura 2. Esquema lgico relacional do BD Empresa aps o mapeamento dos conjuntos de relacionamentos N:M.
ead.sead.ufscar.br/mod/book/print.php?id=232593
50/67
18/04/13
name
Figura 1. O conjunto de relacionamento ternrio FORNECE sem as restries de cardinalidade Como podemos descobrir as restries de cardinalidade desse conjunto de relacionamentos ternrios? Devemos fazer as seguintes questes: Dados 1 projeto e 1 lote quantos fornecedores podem fornecer o lote de peas para aquele projeto? Dados 1 lote e 1 fornecedor quantos projetos podem receber o fornecimento do lote de peas daquele fornecedor? Dados 1 fornecedor e 1 projeto quantos lotes de peas podem ser fornecidos por aquele fornecedor para aquele projeto? Dependendo dessas respostas atribuimos os valores 1 ou N ou M em cada aresta. Consideramos que N e M podem assumir quaisquer valores maiores do que 1. Em funo do aumento de complexidade envolvida em n-rios, recomenda-se bastante firmemente que sejam buscadas alternativas de modelagem se voc se deparar com um conjunto de relacionamentos com grau maior do que 3. Procure ter em mente que o maior grau recomendado o grau 3. Dependendo das restries de cardinalidade indicadas no conjunto de relacionamentos n-rios voc dever optar por uma forma de mape-lo: Caso todas as restries de cardinalidade sejam mltiplas (N:N:N) voc deve utilizar uma Tabela de Relacionamento onde a chave primria composta por todas as chaves estrangeiras inseridas na nova relao e inserir nela tambm os atributos simples e monovalorados presentes no conjunto de relacionamento. Supondo que a resposta a cada uma das questes anteriores tenham sido: vrios (N), a restrio de cardinalidade em Fornece N:N:N conforme apresentada na figura 2.
Figura 2. O conjunto de relacionamento ternrio FORNECE com as restries de cardinalidade N:N:N O mapeamento do conjunto de relacionamentos Fornece seria a criao da relao FORNECE com as chaves estrangeiras: Fornecedor, Projeto, Lote referindo-se respectivamente s relaes FORNECEDOR, PROJETO e LOTE. Alm delas incluiramos o atributo Quantidade presente no relacionamento Fornece. A chave primria da relao seria composta pelas trs chaves estrangeiras. Caso alguma das restries de cardinalidade seja 1 (1:N:N) ou (1:1:N) ou (1:1:1) ento a chave estrangeira referente quele conjunto de entidades que possui restrio de cardinalidade 1 no deve entrar na chave primria. No ltimo caso citado (1:1:1) apenas uma delas seria chave primria. No exemplo acima vamos supor que dado um projeto e um lote podemos encontrar apenas um fornecedor, ou seja, a restrio de cardinalidade desse conjunto de relacionamento seria 1:N:N, conforme apresentado na figura 3.
Figura 3. O conjunto de relacionamento ternrio FORNECE com as restries de cardinalidade 1:N:N Nesse caso, o mapeamento levaria construo de uma relao FORNECE com as chaves estrangeiras referentes a cada relao participante e o atributo do relacionamento, porm a chave primria seria composta apenas pelas chaves estrangeiras Projeto e Lote.
ead.sead.ufscar.br/mod/book/print.php?id=232593 51/67
18/04/13
name
Observao Importante: um conjunto de relacionamento Identidade (que associa um conjunto de entidades fracas sua proprietria) pode ser de grau maior que 2, porm o mapeamento segue o mesmo procedimento adotado em casos de conjuntos de relacionamento Identidade de grau 2.
ead.sead.ufscar.br/mod/book/print.php?id=232593
52/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
53/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
54/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
55/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
56/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
57/67
18/04/13
name
O processo de normalizao pode envolver diversas formas normais, no entanto, nesta disciplina sero apresentadas apenas a Primeira Forma Normal (1FN), Segunda Forma Nor
Um projeto de sistema de banco de dados, que parte de um conjunto de requisitos, com um bom projeto conceitual e um projeto lgico relacional adequado possui, normalmente, u O que isso significa? Diz-se que um "bom" sistema de banco de dados relacional contm esquemas relao que atendem a, no mnimo, a terceira forma normal! Ento, pode-se deduzir que projetos de sistemas de banco de dados quando executados com cuidado encaminham a bons esquemas lgicos relacionais!
Porm, se for necessrio efetuar uma re-engenharia de um sistema de banco de dados em atividade, modelado conforme qualquer modelo de dados, desejando-se obter ao final do O livro do Heuser traz uma boa idia de como a normalizao pode auxiliar esse processo de re-engenharia.
Nos prximos captulos sero apresentadas as formas normais acima citadas e os conceitos de dependncias funcionais e multivaloradas necessrias para o bom entendimento das m
ead.sead.ufscar.br/mod/book/print.php?id=232593
58/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
59/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
60/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
61/67
18/04/13
name
Um exemplo de uma tabela no-normalizada (n): Aluno(RA, nome, {(e-mail: login, domnio)}), onde {(e-mail: login, domnio)} implica que o atributo e-mail multivalorado e com
Para transformar uma tabela n em uma tabela normalizada deve-se extrair os atributos multivalorados e os atributos compostos, para tanto, lembre-se como seria a representao d
DER_Aluno
Observe que se fossem seguidos os passos para o mapeamento do DER para o esquema relacional, seriam obtidas as seguintes relaes: Aluno(RA, nome) EmailAluno(RA, login, domnio) *
*Adotando a construo de uma nova tabela para representar o atributo multivalorado e-mail, como esse atributo tambm composto, ento foram acrescidos os atributos login e d Ou seja, conforme j mencionado, efetuando-se o mapeamento adequado obtm-se as relaes j normalizadas. Em resumo: n: Aluno(RA, nome, {(e-mail: login, domnio)}) Na primeira forma normal (pelo menos): Aluno(RA, nome)
ead.sead.ufscar.br/mod/book/print.php?id=232593
62/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
63/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
64/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
65/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
66/67
18/04/13
name
ead.sead.ufscar.br/mod/book/print.php?id=232593
67/67