Professional Documents
Culture Documents
Apostila do Professor
1/2 Bim. Semestre 3 MBD
3 MBD 1e2T 1
Prezado aluno, Este material compreende apenas o contedo da disciplina. Assim, no deve ser a nica fonte de consultas em seus estudos. O contedo deve ser complementado com outras obras, indicadas por seu professor ou encontradas em suas pesquisas.
Revises:
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
ndice
1. Projetos de Bancos de Dados ................................................................................................. 1 1.1. Levantamento de Dados ou Levantamento de Requisitos ................................................. 2 1.1.1. Anlise de Requisitos .............................................................................................. 3 1.2. Modelo Conceitual .............................................................................................................. 3 1.2.1. Objetivos do Modelo Conceitual .............................................................................. 4 1.2.2. Caractersticas do Modelo Conceitual ..................................................................... 4 1.2.3. O Modelo Conceitual propicia .................................................................................. 5 1.2.4. Exemplo de Modelagem Conceitual ........................................................................ 6 1.3. Modelo Lgico .................................................................................................................... 7 1.3.1. Dicionrio de Dados (DD) ........................................................................................ 8 1.3.2. Matria CRUD (Create, Read, Update, Delete) ......................................................... 9 1.4. Modelo Fsico ..................................................................................................................... 9 1.4.1. O que acontece na Converso do Modelo Lgico para o Modelo Fsico .............. 10 1.4.2. Matriz CRUD .......................................................................................................... 11 2. Modelo de Banco de Dados ................................................................................................... 13 2.1. Modelo Hierrquico de Banco de Dados .......................................................................... 13 2.2. Modelo Banco de Dados em Rede ................................................................................... 14 2.3. Modelo Relacional ............................................................................................................ 16 2.3.1. Vantagens do Modelo Relacional .......................................................................... 18 2.4. Modelo Orientado a Objetos ............................................................................................. 19 3. Modelo Entidade Relacionamento (MER) ............................................................................ 21 3.1. Conceitos Bsicos ............................................................................................................ 21 3.1.1. Dados e Informaes ............................................................................................. 21 3.1.2. Entidade ................................................................................................................. 23 3.1.3. Atributos ................................................................................................................. 23 3.1.4. Chaves ................................................................................................................... 24 3.1.5. Relacionamento ..................................................................................................... 25 4. Metodologias para Modelagem de Banco de Dados Relacionais ...................................... 26 4.1. Metodologia de Peter Chen .............................................................................................. 26 4.2. Metodologia de James Martin ........................................................................................... 29 4.3. CASE*MethodTM ............................................................................................................... 32 4.4. ERWin ............................................................................................................................... 34 4.5. Quadro Resumido ............................................................................................................. 40 5. Entidade ................................................................................................................................. 41 5.1. Como identificar uma entidade ......................................................................................... 41
1
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
5.2. Representaes de Entidades ......................................................................................... 43 5.3. Cuidado: Aquilo que entidade numa circustncia, pode no ser em outra! .................. 44 5.4. Tipos de Entidades ........................................................................................................... 45 5.4.1. Entidade meramente Conceitual ........................................................................... 45 5.4.2. Entidade Forte ....................................................................................................... 45 5.4.3. Entidade fraca ........................................................................................................ 45 5.4.4. Entidade Associativa ............................................................................................. 45 5.4.5. Entidade de Dados ................................................................................................ 46 6. Atributos .................................................................................................................................. 47 6.1. Como identificar os atributos? .......................................................................................... 47 6.2. Representaes de Atributos ........................................................................................... 47 6.3. Classificao de Atributos ................................................................................................ 48 6.4. Tipos de Atributos ............................................................................................................. 48 6.4.1. Atributo Simples ..................................................................................................... 49 6.4.2. Atributo Composto ................................................................................................. 49 6.4.3. Atributo Monovalorado ........................................................................................... 50 6.4.4. Atributo Multivalorado ............................................................................................ 50 6.4.5. Atributo Derivado ou Virtual ................................................................................... 50 6.4.6. Atributo Opcional ou Nulo ...................................................................................... 50 6.4.7. Atributo Chave ....................................................................................................... 51 7. Relacionamentos .................................................................................................................... 53 7.1. Introduo ......................................................................................................................... 53 7.2. Como identificar os Relacionamentos? ............................................................................ 54 7.3. Cardinalidade ................................................................................................................... 55 8. Modelo Entidade Relacionamento Estendido ...................................................................... 58 8.1. Natureza do Relacionamento ........................................................................................... 58 8.1.1. Relacionamentos Parciais e Totais ....................................................................... 58 8.1.2. Relacionamentos Recursivos ou Auto-Relacionamento ........................................ 58 8.1.3. Relacionamentos Multiplos / Agregao ............................................................... 59 8.2. Generalizao Especializao ......................................................................................... 61 9. Normalizao .......................................................................................................................... 62 9.1. Primeira Forma Normal (1FN) .......................................................................................... 63 9.2. Segunda Forma Normal (2FN) ......................................................................................... 64 9.3. Terceira Forma Normal (3FN) .......................................................................................... 66 9.4. Forma Normal de Boyce-Codd (FNBC) ............................................................................ 67 9.5. Quarta Forma Norma (4FN) ............................................................................................ 67 9.6. Quinta Forma Normal (5FN) ............................................................................................. 69 9.7. Resumo dos Passos para Normalizao .......................................................................... 71
2
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Bancos de Dados so componentes importantes dos sistemas de informao, portanto, o projeto do banco de dados torna-se uma atividade essencial na fase de desenvolvimento dos sistemas. Muitas vezes a falta de uma abordagem adequada para o projeto de um banco de dados pode incorrer em resultados indesejveis, como queda de performance ao atender a demanda de aplicaes e problemas com a manuteno do banco de dados. Geralmente a causa disso est associada a etapa de entendimento do problema e transcrio da representao para o modelo conceitual. De acordo com Korth1 Um modelo de dados pode ser definido como uma Coleo de ferramentas conceituais para descrio de dados, relacionamento entre os dados, semntica e restries de dados. O Modelo de Dados basicamente um conjunto de conceitos utilizados para descrever um Banco de Dados. No existe uma nica forma de representao deste modelo, porm qualquer forma que emite a correta compreenso das estruturas de dados compreendidas no Banco de Dados, pode ser considerada adequada. Os modelos so a base do design. Os engenheiros criam um modelo de carro para estudar os detalhes antes de coloc-lo em produo. Da mesma forma, projetistas de sistemas desenvolvem modelos para explorar idias e compreender melhor o design de um banco de dados. Os modelos ajudam a comunicar conceitos imaginados pelas pessoas. possvel us-los com os seguintes objetivos:
KORTH, H.F., SURDASHAN, S., SILBERSCHATZ, A., Sistema de Banco de Dados, Makron, 1999 1
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Modelo Fsico.
Requisito de Dados
Modelo Conceitual
Esquema Conceitual
Modelo Lgico
Esquema Lgico
Modelo Fsico
Esquema Fsico
Figura 1.
Um projeto de banco de dados deve ser iniciado com um bom levantamento de dados, seguido da anlise de requisitos; a partir de ento o projeto conceitual do banco realizado, em seguida so derivados os modelos lgico e fsico.
2
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
1. "Identificao das principais reas de aplicao, bem como dos grupos de usurios do banco de dados, ou seja, quem ter seu trabalho afetado por ele. So escolhidas as pessoas-chave e os comits dentro de cada grupo para apoiar os passos subseqentes de coleta e especificao dos requisitos. 2. Anlise e estudo da documentao existente relativa s aplicaes. Outros documentos manuais de procedimentos, formulrios, relatrios e organogramas - so revisados para determinar se tm qualquer influncia no levantamento de requisitos e no processo de especificao. 3. O estudo do ambiente operacional atual e o uso planejado da informao, incluindo a anlise dos tipos de transao e sua freqncia, bem com o fluxo de informao dentro do sistema. So estudadas as caractersticas geogrficas relativas aos usurios, origem das transaes, destino de relatrios e assim por diante. So especificadas as entradas e as sadas das transaes. 4. Respostas a conjuntos de consultas levantadas por usurios ou grupos de usurios potenciais do banco de dados. Essas consultas envolvem as prioridades dos usurios e a importncia que eles atribuem s diversas aplicaes. Pessoas-chave podem ser entrevistadas para ajudar a definir o valor da informao e o estabelecimento de prioridades." Algumas tcnicas utilizadas para o levantamento de dados so: anlise dos documentos utilizados pelo usurio, anlise das tarefas do usurio, entrevistas e questionrios.
1.1.1. Anlise de Requisitos Feito o levantamento de dados, inicia-se a etapa de anlise dos requisitos. Os requisitos so divididos em: requisitos de dados e requisitos de sistema (processamento). Para o projetista do banco de dados o que realmente importa so os requisitos de dados, no entanto, para o bom funcionamento do sistema e aderncia do projeto do banco de dados ao projeto do sistema, deve-se desenvolver em paralelo a anlise dos requisitos de dados e a anlise dos requisitos do sistema. A documentao dos requisitos pode ser realizada por meio de casos de uso ou DFD.
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
objetos, suas caractersticas e relacionamentos tm a representao fiel ao ambiente observado, independente de quaisquer limitaes impostas por tecnologias, tcnicas de implementao ou dispositivos fsicos. Considerando o ciclo de vida de desenvolvimento de um sistema esta etapa pode ser considerada a fase de anlise dos dados (ou requisitos) capturados na etapa anterior (levantamento de dados). So analisados os fatos (entidades ou conjunto de ocorrncias de dados) de interesse e seus relacionamentos, juntamente com seus atributos (propriedades ou caractersticas) e construda uma notao grfica (abstrata, uma representao de alto nvel) para facilitar o entendimento dos dados e suas relaes, tanto para os analistas quanto para os futuros usurios.
Representao da Realidade Registra as necessidades de informao de uma realidade. Melhor Conhecimento do Sistema Permite que os analistas possam interagir melhor com os
usurios validando seus objetivos e metas permitindo a construo de um sistema de informaes cada vez mais prximo da realidade do usurio.
4
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Para auxiliar o projetista a elaborar o projeto conceitual de um banco de dados existem as abstraes de dados, que apresentam as vantagens:
ajudam o projetista a entender, classificar e modelar a realidade, melhoram a eficincia de implementaes subseqentes, permitem melhor representar a semntica das novas aplicaes de banco de dados,
provenientes de reas no tradicionais.
Traduo para qualquer modelo de dados de BD: Um modelo conceitual pode ser
mapeado para qualquer modelo de BD, desde que se saibam as regras para realizar tal tarefa. Isto facilita o upgrade do BD (por exemplo, migrao de um SGBD relacional para um SGBD orientado a objetos), uma vez que no preciso repensar do zero a nova organizao lgica que os dados tero no novo modelo de dados.
5
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Filme
nome data copyright duracao custo id: nome data id: copyright
produzido-por 1-1 producao
tem-atuacao 1-N
produz 0-N Estudio nome dono fundacao faturamento id: nome Figura 2.
q Explicao do Exemplo
O modelo retrata o estudo de caso de uma produtora de filmes.
Um filme tem a atuao de vrios atores; Um filme dirigido por um Diretor; Um estdio pode produzir vrios filmes;
Perceba que em nenhum momento este modelo relata tipo de dados ou fica preso a qualquer restrio de sistema. No caso apresentado ele demonstra as relaes existentes entre cada objeto importante dentro da produtora de filmes e caracteriza cada um desses objetos com as informaes existentes na realidade da situao.
6
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Modelos lgicos baseados em objetos: Descrio dos dados nos nveis conceitual e de
vises de usurios. Exemplos: Entidade-relacionamento, orientado a objetos.
Modelos lgicos baseados em registros: Descrio dos dados nos nveis conceitual e de
vises de usurios; o banco de dados estruturado em registros de formatos fixos, de diversos tipos; cada tipo de registro tem sua coleo de atributos; h linguagens para expressar consultas e atualizaes no banco de dados. Exemplos: Relacional, Rede, Hierrquico. No modelo relacional, dados e relacionamentos entre dados so representados por tabelas, cada uma com suas colunas especficas.
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Nome do Funcionrio Endereo do Funcionrio Telefone do Funcionrio Salrio do Funcionrio Cargo do Funcionrio Data de Admisso do Funcionrio Data de Nascimento do Funcionrio Observaes do Funcionrio
Nome do Dependente Data de Nascimento do Dependente Grau de Parentesco do Dependente Cdigo do Funcionrio (FK)
Figura 3.
1.3.1. Dicionrio de Dados (DD) Na transio do modelo lgico para o modelo fsico deve ser gerado o dicionrio de dados. O dicionrio de dados um importante documento do projeto de banco de dados que registra todos os conceitos pertinentes ao modelo de dados, ou seja, uma fonte nica de documentao e informao sobre os objetos (metadados) e seus relacionamentos; so conceituados: 1. entidade; 2. atributos; 3. domnios de valores, com os respectivos detalhes; 4. premissas e justificativas adotadas durante a modelagem, principalmente para situaes em que o modelo no esteja normalizado; 5. exemplos para reforar entidades/conceitos relevantes no modelo. Na pgina seguinte apresentado um modelo para documentao do dicionrio de dados (DD).
8
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
1.3.2. Matriz CRUD (Create, Read, Update, Delete) Modelo para documentao do Dicionrio de Dados sugerido por Frana 5
Entidade: XXXXXXXXXXXXXXXXXXXXXX Descrever o nome da entidade Conceito / Definio: Texto que conceitue a entidade e os dados por ela representado, circunstncias relevantes ao modelo de dados. Trata-se de descrever o conceito mais prximo da regra de negcio, sem preocupao com as caractersticas tcnicas que ser implementado o Bando de Dados. Volume esperado: 9.999.999 Tempo de Reteno: 99 anos Processo de Limpeza: texto explicando como ser o processo de limpeza dos dados, bem como os critrios para eliminar os dados.
Atributo Atributo
Tipo Integer
Tamanho
Nulidade No
Definio Texto que explica a caracterstica da entidade definida pelo seu atributo.
5 6
Professor Mst. Edson Tarcisio Frana COUGO, P., Modelagem Conceitual e Projeto de Bancos de Dados, Campus, 2000 9
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Considerando o ciclo de vida de desenvolvimento de um sistema esta etapa est associada a etapa de implementao (codificao ou desenvolvimento). Para a realizao desta etapa, deve-se conhecer a linguagem para descrio e controle 7 do Sistema Gerenciador de banco de dados para realizar a descrio do modelo lgico. O resultado a especificao do esquema da aplicao, juntamente com a implementao de restries de integridade e vises.
Funcionrio
Figura 4.
Nesta etapa tambm necessrio conhecimento sobre a Linguagem de Manipulao de Dados (DML), pois por meio dela que ser possvel o acesso e manipulao dos dados organizados pelo modelo de dados apropriado e sobre gerenciamento de transaes. Uma transao uma coleo de operaes que realizam uma nica ao lgica na aplicao do banco de dados. A gerncia de transaes assegura que o banco de dados permanea em um estado consistente (correto) a despeito de falhas no sistema (ex.: quedas de energia, e crashes do sistema operacional) e falhas de transaes. A gerncia de controle de concorrncia controla as interaes atravs de transaes concorrentes, para assegurar a consistncia do banco de dados.
1.4.1. O que acontece na Converso do Modelo Lgico para o Modelo Fsico? A especificao de campos, ou seja, o modelo lgico est mais perto do usurio e o modelo fsico vai ficar bem mais prximo da mquina. Os campos so a base do banco de dados. Eles representam caractersticas dos assuntos que so importantes para a organizao. Eles armazenam os dados que so recuperados e depois apresentados como informaes informaes que so vitais para as operaes dirias, para o sucesso e para o futuro crescimento da organizao. Eles so os bem mais ignorados, subutilizados e freqentemente negligenciados da organizao! Freqentemente, pouco ou nenhum tempo gasto para se garantir a integridade estrutural e lgica /dos campos do banco de dados.
A linguagem de Definio de dados (DDL) uma notao de especificao para definio do esquema do banco de dados. O compilador da DDL gera um conjunto de tabelas armazenadas em um dicionrio de dados. A estrutura de armazenamento e mtodos de acesso usados pelo sistema de banco de dados so especificados. 10
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
A especificao de campos muito importante por inmeras razes, dentre elas podemos citar:
A definio de especificao de campo para cada campo melhora a integridade dos dados. A definio de Especificaes de Campo o impulsiona a adquirir um entendimento completo da
natureza e propsito dos dados do banco de dados.
As especificaes de campo compreendem vrios elementos que so usados para definir cada atributo de um campo. Esses elementos so divididos em trs categorias: Elementos Gerais, Elementos Fsicos e Elementos Lgicos. H uma quarta categoria separada: Informaes de Especificao. Agrupar os elementos dessa maneira torna-os mais fceis de encontrar. Isso tambm permite que voc focalize um aspecto especfico do campo para o qual voc est definindo a Especificao de Campo. Os itens encontrados dentro de cada categoria so:
Elementos Gerais: Nome de campo, tabela de origem, rtulo, compartilhado por, alias (um ou
mais), descrio.
Elementos Lgicos: Tipo de Chave, exclusividade, valor obrigatrio, suporte a nulo, regra de
edio, comparaes permitidas, operaes permitidas, valores introduzidos por valor padro, intervalo de valores.
1.4.2. Matriz CRUD C Create Criao de tabelas e operaes de insero R Retrieve Recuperao de dados U Update Atualizao de dados D Delete Excluso de dados
11
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
utillizada como uma ferramenta de rastreabilidade para garantir a aderncia entre o modelo do banco de dados e os requisitos levantados. Pode ser desenvolvida na passagem do modelo conceitual para o lgico e na passagem do lgico para o fsico. Para montar a tabela CRUD deve-se listar todas as funcionalidades do sistema identificadas na anlise de requisitos e as entidades/tabelas do banco. As funcionalidades podem ser representadas por: 1. Processos apresentados nos DFD's para anlise estruturada 2. Eventos da lista de eventos para anlise essencial 3. Caso de uso para orientao a objeto A seguir ser apresentado um modelo de matriz CRUD proposto por Frana:
Evento 1 XXXXXXXX
Evento 2 XXXXXXXX
Evento 3 XXXXXXXX
UC01 XXXXXXXX
Funcionalidade
Entidade
R,U D R C U D R R,U C D
C,R,U,D
U,D
UC02 XXXXXXXX R D R
P1.1 XXXXXXXX
P1.2 XXXXXXXX
P1.2 XXXXXXXX
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Nome
Sobrenome
Rua cliente
Conta
Saldo conta
Campo-chave conta
Campo-chave cliente
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
No modelo hierrquico o os dados so armazenados em registros organizados hierarquicamente como rvores. Os registros so conjuntos de campos conectados uns aos outros por meio de um link, onde cada link deve relacionar apenas dois registros.
Ins
Coel
Vergueiro
Ana
Knor
Laguna
Vera Henfil
Correio
0933
4000
1024
3280
0020
6000
1963
4000
Na Figura 6. Exemplo de Banco de Dados Hierrquico: h dois tipos de registros, Cliente e Conta. O registro Cliente composto por trs campos: Nome, Sobrenome e Rua. O registro Conta composto por dois campos: Nmero da Conta e Saldo. Podemos ver que o cliente Ins tem a conta 0933, o cliente Ana tem as contas 1024 e 0020 e o cliente Vera tem a conta 1963. O conjunto de todos os registros de clientes e de contas organizado na forma de uma raiz, em que a raiz da rvore um n vazio (dummy). Como podemos ver, um banco de dados hierrquico uma coleo do tipo de rvores com raiz e, por isso, forma uma floresta. Podemos nos referir a cada uma dessas rvores com raiz como sendo uma rvore de banco de dados 9. O modelo hierrquico acessa os dados rapidamente por trabalhar com ponteiros, mas sua estrutura em rvore pode levar a redundncia de dados e isso, eventualmente, pode resultar em dados inconsistentes quando ocorrer uma atualizao, sem contar com o desperdcio inevitvel de espao. O acesso aos dados s pode ser feito atravs de programas desenvolvidos por especialistas. DICA: Para saber mais sobre bancos de dados hierrquicos consulte
http://www.cs.yale.edu/homes/avi/db-book/b.pdf
9 10
Silberschatz, Abraham; Korth, Hary F. e Sudashan, S., Sistema de Banco de Dados, Editora Makron Books, 1999 CODASYL: Conferncia Sobre Linguagem de Sistemas de Dados (Conference on Data Sistems Languages).
14
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Uma rede , essencialmente, um conjunto ilimitado de ns (tipos de registros neste caso) e de ramais de ligao, ou bordas. Na verdade, uma hierarquia (visto no tpico anterior) apenas um tipo particular de rede. Uma rede no apresenta o conceito de n raiz e os registros podem ter diversos tipos de registros-pais, assim como diversos tipos de registros-filhos. Abaixo temos um modelo de um banco de dados em rede mostrando detalhadamente.
Ins Coel
Vergueiro
0933
4000,00
3280,00
6000,00
Vera
Henfil
Correio
1963
4000,00
Na Figura 7 Exemplo de modelo de rede podemos ver que o cliente Ins possui a conta 0933, o cliente Ana possui as contas 1024 e 0020 e o cliente Vera possui a conta 1963. Funcionalmente os modelos de rede e hierquico possuem muitas semelhanas. Tal como no modelo hierrquico os registros so interligados por ponteiros e as linhas entre os registros (tambm conhecidos como ramais) representam relacionamentos um-para-muitos. Outras semelhanas com o modelo hierrquico persistem, por exemplo, ambos precisam usar de artifcios para implementar uma relao muitos-para-muitos; no modelo de rede foi criado um registro especial chamado de ligao para implementar esse relacionamento. No modelo hierrquico esse registro especial chamado de registro virtual. importante lembrar que ambos os sistemas-hierrquicos e de rede so chamados de sistemas de navegao j que, nos dois casos, os programadores precisam atravessar um conjunto de registros pr-articulados (pr-interligados). Sabe-se que esta pr-articulao representa um benefcio em termos de desempenho, embora seja restrita em termos da complexibilidade do processo do projeto e das modificaes posteriores ao projeto. O modelo Banco de Dados em rede foi criado na tentativa de resolver alguns problemas do modelo hierrquico. O modelo em rede tambm pode ser representado como uma rvore invertida. Entretanto, podem existir inmeras rvores invertidas compartilhando galhos, que so parte de uma mesma estrutura de bando de dados. Os relacionamentos num modelo em rede so estabelecidos e representados por uma estrutura de conjunto. Uma estrutura de conjunto uma construo transparente que relaciona duas tabelas ao mesmo tempo, usando uma tabela como proprietria e outra como membro. Estruturas de conjunto suportam relacionamentos um-para-muitos, o que significa que numa estrutura de conjunto, um registro numa tabela proprietria pode ser associado a vrios registros na tabela-membro, mas um nico registro da tabela-membro est relacionado a um s registro na tabela-proprietria. Um registro da tabela-membro tambm no pode existir sem que ele esteja
15
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
relacionado com um registro existente na tabela-proprietria. Por exemplo, uma conta-corrente deve ser associada a um cliente, apesar de poder existir um cliente sem conta-corrente 11.
Cliente
Tabela - Proprietria
Deposita
Estrutura de Conjunto
Conta/Corrente
Figura 8. Exemplo de Estrutura de Conjunto.
Tabela - Membro
Na figura 8 Exemplo de Estrutura de Conjunto um cliente pode depositar em uma ou mais de suas contas correntes. No modelo em rede os dados podem ser acessados rapidamente, o que uma das vantagens deste modelo. O usurio pode elaborar consultas mais complexas no modelo em rede do que no modelo hierrquico. Como no modelo hierrquico o usurio deve estar familiarizado com a estrutura do banco de dados para poder trabalhar atravs das estruturas de conjunto. Na figura 8, por exemplo, obrigatrio que o usurio esteja familiarizado com as estruturas de conjunto para que ele possa descobrir se uma apresentao especfica foi paga. Tambm, no fcil mudar a estrutura do banco de dados sem afetar as aplicaes do programa que interagem com ele. Os relacionamentos so definidos como estruturas de conjunto, uma estrutura de conjunto no pode ser mudada sem afetar as aplicaes do programa, pois so usadas pela aplicao para navegar pelos dados. Se uma estrutura de conjunto mudada, todas as referncias usadas nas aplicaes daquela estrutura devero ser alteradas. DICA: Para saber mais sobre bancos de dados em rede consulte: http://www.cs.yale.edu/homes/avi/db-book/a.pdf
11 12
Silberschatz, Abraham; Korth, Hary F. e Sudashan, S., Sistema de Banco de Dados, Editora Makron Books, 1999 O modelo de banco de dados relacional ser estudado em detalhes ao longo dos captulos seguintes.
16
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Em 1970 o Dr. Codd apresentou o seu trabalho, agora patenteado, Um Modelo Relacional de Dados para Grandes Bancos de Dados Compartilhados. Neste trabalho ele primeiramente apresenta o modelo relacional de banco de dados. Este modelo se baseou em duas vertentes da matemtica teoria dos conjuntos e lgica de predicado de primeira ordem. Na verdade o modelo relacional deriva seu nome do termo relao, que uma parte da teoria dos conjuntos. Em um modelo relacional, os dados so armazenados em relaes, que so percebidas pelo usurio como sendo tabelas. Cada relao composta de tuplas ou registros e atributos ou campos. A ordem fsica em que os registros encontram-se numa tabela totalmente arbitrria. Cada registro de uma tabela identificado por um campo que contm valores nicos. Essas duas caractersticas do modelo relacional permitem que os dados existam, independente da forma como eles foram fisicamente armazenados. Ento, o usurio no precisa saber o local fsico de um registro para poder trabalhar com ele. Por este lado, o modelo relacional diferente do modelo hierrquico e do de rede, pois nestes modelos era imprescindvel que o usurio conhecesse o desenho da estrutura para que pudesse usar os seus dados.
Cliente
Conta
Emprstimo
Na figura 9 Exemplo de modelo relacional, um cliente pode ter uma ou mais contas correntes. Emprstimos podem ser depositados em sua conta corrente. Esse mesmo cliente pode fazer pagamento do emprstimo atravs de depsito em conta corrente. Uma das principais caractersticas do modelo relacional a possibilidade de relacionar vrias tabelas para evitar a redundncia no armazenamento de dados. Os relacionamentos no modelo relacional podem ser um-para-um, um-para-muitos e muitos-para-muitos. Duas tabelas (A e B) estaro conectadas quando uma delas (A, por exemplo) tiver um campo de compartilhamento que poder ser plenamente usado em outra (B) para diminuir redundncia de dados nas inseres de registros e facilitar futuras buscas e/ou pesquisas. Logo vrias tabelas podem estar compartilhando um mesmo campo de uma determinada tabela. A partir do momento em que o usurio esteja familiarizado com os relacionamentos entre as tabelas do banco de dados, ele pode acessar os dados de inmeras formas diferentes. Ele pode acessar os dados de tabelas que estejam diretamente conectadas, como de tabelas que estejam indiretamente conectadas. No exemplo a seguir, apesar da tabela Cliente estar indiretamente conectada a tabela de Emprstimo, o usurio pode gerar uma listagem de emprstimos por cliente ou por conta. O usurio pode facilmente fazer isso, porque a tabela de Emprstimos est diretamente conectada tabela de Conta.
17
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Cliente
Identificao do Cliente 100 101 102 Prenome do Cliente Ins Ana Vera Sobrenome do Cliente Coel Knor Henfil Data da Contratao 21/10/02 12/01/01 15/02/99
Conta
Identificao da Conta 0933 1024 0020 1963 Identificao do Cliente 100 101 101 102 Saldo 4000,00 3280,00 6000,00 4000,00 B26 Cdigo Emprstimo A15
Tabela 1.
18
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
13
Modelagem de sistemas complexos ser visto com mais detalhes em captulo especfico ao tema 19
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Valores: A maioria dos SGBDOOs representam as entidades primitivas, tais como inteiros ou
caracteres, por valores (no possuem OIDs), enquanto as entidades no primitivas so representadas como objetos.
atmico: integer, real, character, booleano, etc. 14 complexo: definido atravs de construtores: array, table, UDT .
Encapsulamento: A cada objeto est associado sua estrutura e seu comportamento (os
mtodos ou operaes). O comportamento armazenado no banco de dados junto com a estrutura do objeto.
obtm-se melhor desempenho, pois os OIDs so implementados em baixo nvel pelo sistema; embora as chaves sejam mais significativas ao usurio, muitas vezes o usurio precisa usar
cdigos artificiais, sem significado semntico, para poder identificar as tuplas de uma relao.
14
UDT - User Defined Type. Tipo de dado definido pelo usurio. Caso necessrio possvel criar tipos de dados diferentes do tipos de dados padro do BD. Ex: litro, pneu, galo, permetro.
20
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
3.1.1. Dados e Informaes Os dados existem fisicamente e precisam de um contexto para adquirir algum significado. So estticos, isto , permanecem no mesmo estado at que sejam modificados por um processo manual ou automtico.
Mellanzone
55
03909-70
22,00
Mesozica
Isoladamente estes dados no tm nenhum sentido. O que Mellanzone? Ser o nome de uma pessoa, de um supermercado ou de uma pizza? E 55? um cdigo? Uma soma? Uma nota? Os dados tornam-se informaes quando so associados a um contexto e transmitem significados lgicos s pessoas.
Ingredientes 55
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
A informao existe quando o crebro humano recebe um conjunto de dados e os utiliza como entrada para algum tipo de processamento neural. Se no houver esse processamento neural, o dado no se transforma em informao; continua sendo dado. A informao a compreenso do dado, matria-prima para atividade cerebral. Se algum conversa em russo, grego ou chins conosco, recebemos dados, mas se no conhecermos o idioma (protocolo de comunicao) no podemos traduzir os dados em informaes. Ficamos parados sem ao. Sem dados e um mecanismo (processo) de compreenso desses dados, no existe o exerccio cerebral.
Dado Data do Nascimento: 16/07/61 Medio x Mtrica de Temperatura = 38 C Medio x Mtrica de Distncia = 10.000
O Dado to importante ao ser humano que permanecemos 24 horas por dia com nossos sensores ligados ou de prontido! Para nossos propsitos de modelagem, estaremos estudando as informaes que queremos ou precisamos para transform-las em dados. Nosso objetivo obteno de um modelo de dados onde no exista informao. Declarao estranha para um observador casual, mas um modelo de dados, conforme o prprio nome sugere, deve conter dados, e no informaes. Suponha que venhamos a armazenar a informao idade de uma pessoa em vez do dado data de nascimento. Daqui a alguns anos, as pessoas cujas informaes (e no dados) esto armazenadas conosco continuaro a apresentar a mesma idade de hoje, pois, evidente, armazenado 35 anos de idade hoje, tal informao ser a mesma com o passar do tempo! Mas armazenando-se a data de nascimento, digamos, 21/12/1960, podemos saber com preciso e em qualquer ponto da rgua do tempo a informao da idade da pessoa. A concluso que armazenando informao perdemos informaes. Na vida real, verifica-se freqentemente o armazenamento de informaes, e no de dados, por motivos de limitaes tcnicas do processamento de dado em larga escala. Caso tpico o dos correntistas de bancos que fazem ao longo de suas vidas, como clientes, uma infinidade de transaes de crdito e dbito em suas contas correntes, sendo estes os dados bsicos resultantes que devem ser armazenados. Todavia, se quisermos obter o saldo atual das contas, teramos de promover as somas e subtraes de todos os movimentos, o que seria impraticvel do ponto de vista de carga de processamento e tempo de resposta. Portanto, a soluo tcnica mais vivel armazenar os saldos dos correntistas (saldo uma informao) em uma dada posio de tempo, no muito distante da atual fazendo-se os clculos aritmticos com os dados mais recentes para se obter a ltima posio de saldo. Essa situao aceitvel, uma vez que no h outra forma mais eficaz de contornar o problema, restando-nos apenas a preocupao de manter a informao armazenada consistente com os movimentos realizados, se ocorrer um lanamento retroativo data do saldo, este ltimo dever ser ajustado automaticamente. Tais limitaes tcnicas tm conduzido criao de bases de informaes, como o caso das bases
22
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
de dados executivas. Vemos a utilizao de bases de informaes apenas como um artifcio tcnico que no deve representar a base de dados principal de uma organizao.
3.1.2. Entidade Uma entidade15 ou classe de entidade uma representao abstrata de coisas semelhantes, concretas ou abstratas, que existem no mundo real, sobre a qual um sistema de informao captura, armazena e processa dados para cumprir seus objetivos na empresa, atendendo, assim, s necessidades de seus usurios. Para Korth16 uma entidade uma coisa ou objeto no mundo real que pode ser identificada de forma unvoca em relao a todos os outros objetos. Por exemplo, um aluno uma entidade que tem um conjunto de propriedades (dados), dentre elas o nmero do registro acadmico, que deve ser um valor nico capaz de identificar cada ocorrncia desta entidade. Cada ocorrncia17 de uma entidade um conjunto de propriedades (atributos)18 que identificam, qualificam ou quantificam esta entidade, por exemplo a entidade aluno tem como atributos nome, registro acadmico, data de nascimento, entre outros. Estas ocorrncias devem satisfazer duas regras bsicas:
Todas as coisas do mundo real que compem o conjunto - suas ocorrncias - devem ter as
mesmas caractersticas;
15 16
As entidades so representadas por tabelas na etapa de implementao do Banco. Silberschatz, A; Korth, H. R. e Sudarshan, S. Sistemas de Bancos de dados. So Paulo: Makroon Books, 1999 17 Uma ocorrncia o mesmo que um registro. 18 Um atributo representado em uma tabela por um campo. O campo a menor estrutura de armazenamento de dados em um banco de dados relacional 23
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Nome = Joo da Silva Nome = Cooper Sugar Endereo = Rua Gois 711, So Paulo, SP - 1301100 Idade = 55
Presidente = Joo da Silva
e1
c1
Telefone residencial = 713-749 Figura 10. Exemplo de duas entidades (e1 e c1) com seus atributos.
A entidade EMPREGADO e1 tem quatro atributos: Nome, Endereo, Idade e Telefone residencial. Os seus valores (dados) so: Joo da Silva, Rua Gois 711, So Paulo, SP, 1301100, 55 e 713-749, respectivamente. A entidade companhia c1 tem trs atributos: Nome, Sede e Presidente. Seus valores (dados) so: Cooper Sugar, Ribeiro Preto, Joo da Silva. Ateno:
Os atributos de uma entidade permanecem constantes para todos os seus relacionamentos. Os atributos de uma entidade so independentes de todas as demais entidades
3.1.4. Chaves
Chave Composta: a chave que contm mais de um atributo (Por exemplo, um cadastro
ordenado alfabeticamente por Estado, Cidade e Nome do Cliente, necessitaria de uma chave composta que contivesse esses trs atributos).
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
3.1.5. Relacionamentos Um relacionamento estabelece a conexo entre duas tabelas dentro de um banco de dados por meio das chaves primria e estrangeira ou por meio de tabelas de vnculo. No exemplo da figura 11. podemos ver que um aluno pode se matricular em mais de uma disciplina. Ao dizermos que um aluno est matriculado em muitas disciplinas estamos determinando a cardinalidade de nosso relacionamento. Como veremos mais frente, neste caso a cardinalidade e de 1:N.
a1 a2 a3 Aluno Matrcula
d1 d2 d3 Disciplina
25
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Segundo o dicionrio Michaelis a Metodologia o estudo cientfico dos mtodos, que por sua vez o conjunto dos meios dispostos convenientemente para alcanar um fim e especialmente para chegar a um conhecimento cientfico ou comunic-lo aos outros. Uma metodologia para modelagem de bancos de dados relacionais um conjunto de regras que so empregadas para demonstrar como ser constitudo o banco de dados, isto , como as tabelas sero relacionadas. uma ferramenta de comunicao de alto nvel. Neste captulo sero apresentadas algumas metodologias e definies propostas por diferentes autores e que so utilizadas para modelagem de bancos de dados relacionais.
Exemplo: Funcionrio trabalha em Departamento. Neste exemplo temos duas entidades: Funcionrio e Departamento. Representao dessas duas entidades fica da seguinte forma:
Departamento
Funcionrio
Identificador do aTributo
19
26
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Ateno: Muitas vezes, com o objetivo de manter o modelo simples e claro, os atributos s so representados no dicionrio de dados. Exemplos de atributos da Entidade DEPARTAMENTO:
DEPARTAMENTO
CDIGO
NOME
LOCALIZAO
Podemos usar uma representao alternativa para os atributos. No exemplo abaixo usaremos traos ao invs de elipses:
Funcionrio
Trabalha em
Departamento
NOME
TELEFONE
CDIGO
NOME
Identificao
Figura 14.
27
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
FUNCIONRIO
trabalha
DEPARTAMENTO
Representao da cardinalidade: O grau da cardinalidade expresso acima da linha do relacionamento e pode ser representado por 0, 1 ou N
N FUNCIONRIO trabalha
1 DEPARTAMENTO
Figura 16.
1:1 DEPARTAMENTO
Figura 17.
Um-para-um Um-para-muitos Muitos Um-e-apenas-um Zero-para-um Zero-ou-muitos Um-ou-muitos Figura 18. Cardinalidade segundo Chen.
28
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Identificador da entidade
Figura 19.
Exemplo: Funcionrio trabalha em Departamento. Neste exemplo temos duas entidades: Funcionrio e Departamento. A representao dessas duas entidades fica da seguinte forma:
FUNCIONRIO
DEPARTAMENTO
20
Silberschatz, A; Korth, H. R. e Sudarshan, S. Sistemas de Bancos de dados. So Paulo: Makroon Books, 1999 29
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
ENTIDADE
Figura 21.
DEPARTAMENTO
Representao dos Relacionamentos e Cardinalidade No mtodo proposto por Martin devemos indicar a cardinalidade do relacionamento. Dessa forma temos:
30
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Cardinalidade - 1:1
Esta linha indica que um departamento est relacionando com apenas um registro de funcionrio
Esta linha indica que um funcionrio est relacionado com apenas um registro de departamento Figura 23.
Cardinalidade - 1:1
Esta linha indica que um departamento est relacionando com apenas um registro de funcionrio
Esta linha indica que um funcionrio est relacionado com apenas um registro de departamento Figura 24.
Neste caso a leitura da relao das tabelas : Cada funcionrio est em um departamento e um departamento tem vrios funcionrios.
31
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Relacionamento Opcional
Esta linha indica que um departamento est relacionando com muitos registros de funcionrio. A bola cheia indica participao opcional.
Esta linha indica que um funcionrio est relacionado com apenas um registro de departamento. A bola vazia indica participao obrigatria. Figura 25.
Neste caso a leitura da relao das tabelas : cada funcionrio deve estar em um departamento e um departamento pode ter vrios funcionrios.
4.3. CASE*MethodTM
A notao CASE*MethodTM, foi criada por Richard Baker, Ian Palmer, Harry Ellis na poca em que eram funcionrios da empresa britnica de consultoria CACI. O CASE*MethodTM usado por grandes companhias, como a Oracle Corporation. uma derivao da metodologia de James Martin e Peter Chen. Seu uso deve-se ao fato de estar mais focado para o desenho de banco de dados do que para a estrutura inerente dos dados da empresa.
Representao da entidade
Identificador da entidade
Figura 26.
32
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Figura 27.
Um ou mais atributos descrevem uma entidade, e os valores desses atributos descrevem as ocorrncias da entidade.
Os identificadores dos atributos (nomes) devem estar no singular e em letras minsculas. Os atributos obrigatrios ou que devem ser conhecidos so marcados com *. Os opcionais ou valores que podem ser conhecidos devem ser marcados com .
Identificadores exclusivos (Chaves primrias) devem ser marcados com #. Exemplo:
Figura 28.
Descrio Elemento opcional indicando pode ser Elemento obrigatria indicando deve ser Elemento de grau indicando um ou mais Elemento de grau indicando somente um
Representao
33
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Como o relacionamento indica a relao entre duas entidades para cada direo do relacionamento, so necessrios:
um label, verbo que indica o relacionamento; uma opcionalidade, indicando que algo deve ser ou pode ser; um grau (ou cardinalidade) indicando somente um ou um ou mais.
Exemplo:
Usurio id cod_usuario (FK) cod_obra (FK) nome email endereo fone responsavel id_responsavel fone_responsavel email_responsavel Obra ID_obra cod_usuario (FK) cod_obra (FK) id (FK) tipo edicao id_editora nome_obra nome_editora id_autor nome_autor classificacao
FUNCIONRIO
DEPARTAMENTO
#* *
Trabalha em composto de
#* *
Figura 29.
4.4. ERWin21
O software ERWin foi criado pela Logic Works, sendo uma ferramenta para o projeto de sistemas cliente-servidor de banco de dados. A principal caracterstica do software a existncia de editores que definem os objetos lgicos e fsicos do Banco de Dados, e de suporte linguagem de definio de dados dos diversos servidores de banco de dados, SQL e no SQL. Utilizando-se 21 uma interface totalmente grfica, padro Windows, deExtraido do manual on-line do ERWin, traducao livre do autor esta ferramenta permite uma modelagem
34
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
completa de entidades e relacionamentos, a partir de ferramentas de desenho, tornando sua utilizao extremamente fcil. Esta ferramenta gera o modelo lgico e fsico para diversos gerenciadores de Banco de Dados, sejam eles SQL ou no SQL, distribudos ou no. O ERWin uma ferramenta de modelagem de dados com capacidade de gerar DDL para os principais RDBMS de mercado podendo incorporar triggers, stored procedures, regras de validao, domnios e templates. Uma de suas caractersticas mais avanadas a capacidade de fazer engenharia reversa atravs de scripts ou direto do dicionrio de dados do banco podendo, atravs da funo COMPLETE COMPARE, oferecer um relatrio detalhado das eventuais discrepncias entre o modelo e a base ou script podendo inclusive promover a sincronizao entre ambos. Ao acessarmos o software encontramos o menu principal:
35
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
O software permite trabalhar com o modelo fsico, com o lgico ou ambos. Para isso basta escolher o modelo na caixa:
A figura 33. mostra a diferena ente os dois modelos. O modelo lgico no se preocupa com os futuros campos das tabelas e, sim, com a criao do dicionrio de dados. O modelo fsico preocupa-se com os campos das tabelas, suas chaves e restries. Physical Model
MOVIE
Logical Model
MOVIE
MOVIE_COPY
MOVIE_COPY
O ERWin distingue as entidades usando retngulos. Esses retngulos podem ter os cantos arredondados (soft-box) ou no. Quando o retngulo no tiver os cantos arredondados dizemos que ir dar origem a uma tabela pai. Quando o retngulo tiver os cantos arredondados (soft-box) indica que ir dar origem a uma tabela filho, ou seja, ir receber uma chave estrangeira da tabela pai.
36
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
No importa se voc estiver usando o modelo fsico ou lgico, voc pode escolher a notao que deseja trabalhar. O ERWin trabalha com duas notaes:
IE
STORE store number manager address phone rents / is in
A notao defaulf usada pelo ERWin IDEF1X mas pode ser alterado a qualquer momento. Basta entrar em Model, Properties, e escolher a notao. Para os modelos fsicos existe a opo de DM (Dimensional Notation) que usado para modelagem de Datawarehouse.
37
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
O relacionamento identificado, representado pela linha contnua com uma bola cheia na ponta
(Notao IDEF1X) ou com um p de galinha (Notao IE)
O relacionamento no-identificado, representado pela linha tracejada com uma bola cheia na
ponta (Notao IDEF1X) ou com um p de galinha (Notao IE)
O relacionamento muitos-para-muitos, representado pela linha contnua com uma bola cheia
em cada ponta (Notao IDEF1X) ou com um p de galinha em cada ponta (Notao IE)
38
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
No caso do relacionamento identificado a chave primria da tabela pai faz parte da chave primria da tabela filho. No caso do relacionamento no-identificado a chave primria no faz parte da chave primria da tabela filho. A figura 37. nos ajuda a compreender melhor..
CUSTOMER
customer number credit card customer first_name credit card exp status code customer address customer phone email migrated non-key attribute
Identifying relationship
PAYMENT
non-identifying relationship
39
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
James Martin
IDEF1X
IE
ENTIDADE ENTIDADE
atributo chave Atributos
Atributo
Atributos
Relacionamento
Cardinalidade
0:1
0:N
1:1
1:N
N:M
Figura 38.
40
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
5. Entidade
De acordo com o que vimos nos captulos anteriores. uma entidade 22 ou classe de entidade uma representao abstrata de coisas semelhantes, concretas ou abstratas, que existem no mundo real, sobre a qual um sistema de informao captura, armazena e processa dados para cumprir seus objetivos na empresa, atendendo, assim, s necessidades de seus usurios.
As coisas tangveis As funes exercidas por elementos Eventos ou ocorrncias Interaes Especificaes
Segundo Cougo[2], esta separao das entidades ser tratada como grupos de classificao que sero teis apenas para identificao das entidades. Coisas tangveis Tudo aquilo que pode ser tocado, que tem existncia concreta. Exemplos: caminho, computador, moto, tear. O agrupamento desses objetos em Entidades depender do nvel de abstrao que se deseja atingir na modelagem do ambiente observado.
Por exemplo:
Entidade Produto
Tabela 5.
22 23
As entidades so representadas por tabelas na etapa de implementao do Banco. apud Cougo, Paulo. Modelagem Conceitual e projeto de banco de dados. Rio de Janeiro:Campus, 1997 41
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Objetos Todos os caminhes observados Todas as motos observadas Todos os computadores observados Todos os teares observados
Funes Papel, atribuio, classificao ou outra caracterstica que especifique a atuao de um objeto identificado no ambiente observado. Exemplos: Uma analista de suporte, um engenheiro civil, departamento de Recursos Humanos.
Entidade Especialista
Tabela 8.
42
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Eventos ou ocorrncias Cougo24 define como objetos que so materializveis quando alguma ao ou fato acontece. Enquanto programado, durante sua execuo ou aps encerrado, esse elemento caracteriza-se como um evento ou ocorrncia ao qual podemos fazer alguma referncia. Exemplos: Uma partida de futebol, um vo de avio, uma viagem de carro. Interaes Resultantes da associao entre objetos em funo de um processo sendo executado. Tambm podem ser modelados como entidades associativas (relacionamentos). Exemplos: A compra de um imvel, a venda de um produto a um cliente. Especificaes Entidades que renem as caractersticas de objetos pertencentes a outros objetos. Podem ser identificados j na modelagem conceitual, ou aparecerem somente no modelo lgico, em funo da aplicao de tcnicas de normalizao. Exemplo: Automvel; Modelo do automvel Automvel uma coisa tangvel que poderamos detalhar com os atributos: cor, modelo, ano de fabricao entre outros. J a entidade Modelo do automvel uma entidade que especfica (detalha) dados sobre o modelo tais como: banco de couro, direo hidramtica, cambio hidrulico, farol de milha, entre outros.
Peter Chen
IDENTIFICADOR DA ENTIDADE
Figura 39.
24 25
Cougo, Paulo. Modelagem Conceitual e projeto de banco de dados. Rio de Janeiro:Campus, 1997 Ferramenta de Modelagem relacional comercializada pela empresa Computer Associates. 43
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Exemplos: 1. Sistema de Controle de Conta Corrente No ambiente de um sistema de controle de conta corrente, temos pessoas que so clientes de um banco. Pode-se ento definir uma entidade cliente. Neste mesmo sistema, as contas mantidas no banco podero ser definidas como uma entidade conta.
CLIENTE
CONTA
Figura 40.
Exemplo: Sistema de Controle de contas de um Hospital No contexto de um sistema de controle de contas de um hospital, algumas pessoas desempenham a funo de mdicos. Neste mesmo sistema, as pessoas que iro realizar uma consulta desempenham a funo de pacientes. Estas pessoas so ocorrncias de entidades distintas: mdicos e pacientes. Note que um mdico em um determinado momento tambm pode desempenhar a funo de um paciente.
MDICO
PACIENTE
Figura 41.
Ateno: O identificador de uma entidade deve ser um nome relevante ao assunto que representar e recomenda-se que:
No sejam utilizados caracteres especiais tais como acento, cedilha, *, $, entre outros; No seja iniciado por nmeros; Esteja no singular.
Na etapa de implementao do modelo deve-se tambm atentar para as recomendaes e particularidades do SGBDR utilizado.
5.3. Cuidado: Aquilo que entidade numa circunstncia, pode no ser em outra!
Portanto, ao identificar as entidades de um sistema de informao, os desenvolvedores de software devem estar atentos possibilidade de uma coisa do mundo real desempenhar mais de um papel no contexto deste sistema.
44
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
5.4.2. Entidade Forte Uma entidade forte aquela que no depende de outra entidade para existir. Exemplo: No contexto de uma organizao faz-se necessrio o armazenamento de dados de um funcionrio por diversas demandas, uma delas a folha de pagamento. Cada ocorrncia de funcionrio r identificada de forma nica, por exemplo por uma atributo identificado por registro funcional, sendo assim a entidade funcionrio uma entidade forte.
5.4.3. Entidade Fraca Entidades cuja existncia depende da existncia de outra entidade, dita forte. representada por um retngulo duplo, podendo, opcionalmente, ser indicada uma seta que parte dela e chega a sua entidade forte, para tornar mais clara a dependncia. A cardinalidade de uma ocorrncia de uma entidade fraca com a forte sempre (1,1), indicando que ela sempre depende de uma ocorrncia da entidade forte. Em poucas palavras, entidade fraca aquela que depende de uma outra entidade para existir. entidade da qual depende d-se o nome de entidade pai. Exemplo: Os funcionrios de uma empresa possuem dependentes, por exemplo, seus filhos, cujos dados so utilizados por exemplo para concesso de benefcios ou descontos de IRRF. Os dados de dependentes esto relacionados diretamente existncia de uma ocorrncia de funcionrio.
FUNCIONRIO
1:1
possui
0:N
DEPENDENTE
Figura 42.
5.4.4. Entidade Associativa Uma entidade associativa aquela que no existe por si s e sua existncia est condicionada existncia de duas ou mais entidades, a partir das quais ela concebida.
45
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Exemplo: A entidade associativa aluno x disciplina surge quando h a derivao do modelo lgico a partir do modelo conceitual devido ao relacionamento n:n entre a entidade aluno e a entidade disciplina26.
5.4.5. Entidade de Dados Podem ser subdivididas em diversas categorias de elementos (Subtipos), cada uma se caracterizando por atributos especficos.
Pessoa
Fsica
Jurdica
Figura 43.
Supertipo: o conjunto de caractersticas que originou o subtipo. Subtipo: definido como um subconjunto de caractersticas de um tipo. Exemplo: Supertipo pessoa e subtipos Pessoa Fsica e Pessoa Jurdica.
26
Veja tpico sobre Derivao do Modelo Lgico a partir do Modelo Conceitual nos captulos anteriores.
46
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
6. Atributos
Conforme vimos anteriormente, cada entidade tem propriedades particulares, chamadas atributos, estas propriedades podem identificar, qualificar ou quantificar a entidade, em outras palavras os atributos descrevem as entidades. Por exemplo, uma entidade funcionrio pode ser descrita pelo seu nome, o trabalho que realiza, data de nascimento, endereo e salrio. Cada ocorrncia de uma entidade ter um valor para cada um de seus atributos.
Peter Chen
Erwin
FUNCIONARIO FUNCIONRIO cod_func nome dt_nasc cargo endereco
endereo
Figura 44.
27
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Atributos Nominativos: Atributos que podem identificar um objeto, mesmo que no o faa de
maneira nica. Por exemplo: Nome de um funcionrio, Registro acadmico de um aluno, Cdigo do produto, Placa de um automvel. Ateno: Os atributos nominativos podem ser chaves candidatas e aqueles que atendem aos critrios podem vir a ser chaves primrias.
Atritutos Referenciais: Atributos que no pertencem entidade a qual esto alocados, mas
que fazem algum tipo de citao ou estabelecem uma relao entre esta entidade e a entidade de origem. Normalmente estes atributos so as chaves estrangeiras. No exemplo apresentado a seguir note que a entidade FUNCIONARIO tem o atributo cod_dept (cdigo do departamento), mas este atributo, originalmente um atributo nominativo da tabela DEPARTAMENTO, sendo assim para a entidade FUNCIONARIO este atributo um atributo referencial, pois ser utilizado para estabelecer um relacionamento 29 com a tabela DEPARTAMENTO.
FUNCIONRIO
DEPARTAMENTO
cod_func
nome_func
end
Figura 45.
28 29
Cougo, Paulo. Modelagem Conceitual e projeto de banco de dados. Rio de Janeiro:Campus, 1997 Este assunto foi apresentado anteriormente e ser detalhado no prximo captulo
48
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
6.4.2. Atributo Composto Alguns atributos podem ser divididos em subpartes com significados independentes. Um atributo que composto de outros atributos mais bsicos chamado composto. Ateno: Atributos compostos podem formar uma hierarquia. No exemplo a seguir o endereo da entidade FUNCIONARIO pode ser dividido em endereo da rua, cidade, estado e cep; o atributo endereo da rua pode ser subdividido em nome da rua, numero do imvel e complemento.
FUNCIONRIO
cod_dept
UF
nome_rua nmero
complemento
Figura 46.
Atributos compostos so teis quando os usurios referenciam o atributo composto como uma unidade e, em outros momentos, referenciam especificamente a seus componentes. Se o atributo
49
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
composto for sempre referenciado como um todo, no existe razo para subdividi-lo em componentes elementares.
6.4.3. Atributo Monovalorado Um atributo monovalorado - tambm chamado de univalorado - possui um valor nico, ou seja, s existe uma representao daquele atributo para a mesma tupla. Vejamos, por exemplo, o atributo idade: um funcionrio nunca poder ter mais de uma idade ao mesmo tempo, o que torna esse atributo monovalorado.
6.4.4. Atributo Multivalorado Uma nica entidade que tem ocorrncias com diversos valores para este atributo. Atributos multivalorados podem possuir uma multiplicidade, indicando as quantidades mnima e mxima de valores.
1:1
FUNCIONARIO POSSUI
0:N
DEPENDENTE
cod_func
dt_nasc
endereco
cod_finc
nome
nome
cargo
Figura 47.
6.4.5. Atributo Derivado ou Virtual De acordo com Silberschatz [1] o valor deste tipo de atributo pode ser derivado de outros atributos ou entidades a ele relacionados. Por exemplo a idade de um funcionrio pode ser obtida a partir da subtrao entre o valor do atributo data de nascimento e a data corrente. Em outro caso, alguns valores de atributos podem ser derivados de entidades relacionadas, por exemplo, um atributo nmero de funcionrios de uma entidade DEPARTAMENTO que pode ser calculado contando-se o nmero de funcionrios relacionados com cada departamento.
6.4.6. Atributo Opcional ou Nulo So atributos para os quais no existe a obrigatoriedade de preenchimento de dados, isto , so atributos cujo preenchimento de dados opcional. De acordo com Silberschatz [1] um atributo nulo usado quando uma entidade no possui um valor para um determinado atributo. Por exemplo, o atributo complemento aplica-se somente
50
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
queles funcionrios que residam em algum prdio ou vila, nesse caso nas ocorrncias da entidade FUNCIONARIO para as quais os dados do atributo complemento no forem informados o valor deste atributo ser nuto. Ateno: O nulo pode ser utilizado para denotar que o valor desconhecido ou inexistente.
6.4.7. Atributo Chave Os atributos utilizados para identificar uma entidade, para indexar as ocorrncias da entidade ou os atributos referenciais so chaves. Conforme vimos anteriormente as chaves podem ser:
Chave Composta: a chave que contm mais de um atributo (Por exemplo, um cadastro
ordenado alfabeticamente por Estado, Cidade e Nome do Cliente, necessitaria de uma chave composta que contivesse estes trs atributos).
Classificao dos Atributos atributo nominativo chave primria atributo nominativo chave candidata atributo descritivo composto atributo nominativo chave candidata atributo nominativo chave candidata atributo referencial chave estrangeira a origem do atributo est na entidade DEPARTAMENTO.
51
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Classificao dos Atributos atributo referencial chave estrangeira atributo nominativo junto com o atributo reg_funcional compe a chave primria; esta uma entidade FRACA, pois a existncia de uma ocorrncia desta entidade depende de um relacionamento com a entidade FUNCIONRIO; no possui um atributo que sozinho consiga identificar cada ocorrncia da entidade. atributo descritivo atributo descritivo
atributos
data_nascimento parentesco
Classificao dos Atributos atributo referencial _ chave estrangeira atributo nominativo junto com o atributo reg_funcional compe a chave primria; esta uma entidade FRACA, pois a existncia de uma ocorrncia desta entidade depende de um relacionamento com a entidade FUNCIONRIO; no possui um atributo que sozinho consiga identificar cada ocorrncia da entidade. atributo descritivo atributo descritivo
atributos
data_nascimento parentesco
52
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
7. Relacionamentos
7.1. Introduo
De acordo com Machado [3] os relacionamentos podem ser definidos como o fato ou o acontecimento que liga dois objetos (entidades), duas coisas do mundo real. No ambiente relacional podemos entender o relacionamento como o fato que efetua a juno de duas ou mais tabelas de dados.
F1 F2 F3 Funcionrio Trabalha
P1 P2 Projeto
N
Funcionrio Trabalha
N
Projeto
Um relacionamento estabelece a conexo entre duas tabelas dentro de um banco de dados. Este relacionamento entre tabelas possvel atravs da relao entre as chaves primria e estrangeira ou atravs de uma terceira tabela chamada tabela de vnculo. Esta conexo entre tabelas depende do tipo de relacionamentos existente entre elas. Porque um relacionamento fundamental dentro de um banco de dados?
Estabelece uma conexo entre tabelas que esto logicamente relacionadas, entre os dados
contidos nelas.
o mecanismo que permite que dados de vrias tabelas sejam agrupados para extrao
simultnea.
Permite aprimorar as definies das estruturas de tabelas e a reduo de dados redundantes. Estabelece a integridade em nvel de relacionamento quando definido corretamente.
A importncia na definio dos relacionamentos corretamente est relacionada com a qualidade do banco de dados projetado, pois se mal projetados traro prejuzo na manipulao simultnea entre tabelas, para insero, atualizao e excluso de registros em tabelas relacionadas.
53
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
PESSOA
Figura 49.
IMVEL
30 31 32
Cougo, Paulo. Modelagem Conceitual e projeto de banco de dados. Rio de Janeiro:Campus, 1997 Cougo, Paulo. Modelagem Conceitual e projeto de banco de dados. Rio de Janeiro:Campus, 1997 Ocorrncia, instncia e registro so similares.
54
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Representao do Relacionamento
0:N
PESSOA Possui
0:N
IMVEL
Observe no exemplo apresentado que o primeiro passo para identificar o relacionamento compreender como as coisas se comportam no mundo real, a partir deste entendimento possvel caracterizar o relacionamento entre elas, isto , definir o grau do relacionamento entre as entidades. Em outras palavras, definir se uma ocorrncia de uma entidade poder ou dever se relacionar com uma ou muitas ocorrncias da outra tabela e vice-versa.
7.3. Cardinalidade
A cardinalidade ou grau do relacionamento uma restrio que expressa o nmero de ocorrncias de uma entidade ao qual outra entidade pode estar associada por meio de um relacionamento. Por exemplo: Todo FUNCIONARIO trabalha em um DEPARTAMENTO. O DEPARTAMENTO pode ter muitos FUNCIONARIOS. A seguir, considerando a caracterizao do relacionamento entre as entidades FUNCIONARIO e DEPARTAMENTO veja como a relao entre as ocorrncias das entidades:
DEPARTAMENTO deptno 10 10 20 30 deptno 10 20 30 40 nome-dept Accouting Research Sales operations Loc New YorkDallas Chicago Boston
O FUNCIONRIO King trabalha no DEPARTAMENTO 10. O FUNCIONRIO CLARK trabalha no DEPARTAMENTO 10. O DEPARTAMENTO 10 possui 2 ocorrncias de FUNCIONARIO (King e Clark), mas cada uma destas ocorrncias de FUNCIONARIO est associada a apenas uma ocorrncia de DEPARTAMENTO (10).
55
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
1:1
FUNCIONARIO Trabalha em
1:1
DEPARTAMENTO
Departamento
Funcionrio
Departamento
Funcionrio
Figura 51.
Cada funcionrio trabalha em um departamento Um departamento pode conter nenhum ou muitos funcionrios;
1:1
FUNCIONARIO Possui
1:1
CONTRATO
Funcionrio
56
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
N:N
FUNCIONARIO PARTICIPA
N:N
PROJETO
Projeto
Cada funcionrio pode participar de muitos projetos Cada projeto pode ser realizado por muitos funcionrios
N
PROJETO
FUNCIONRIO/ PROJETO
N
FUNCIONRIO
Figura 54.
57
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Funcionrio N
Lota 1
Departamento
Figura 55.
Todo funcionrio obrigatoriamente ( | ) lota um departamento, mas nem todo (0) departamento lotado por funcionrios
8.1.2. Relacionamentos Recursivos ou Auto-Relacionamento Os auto-relacionamentos so casos especiais onde uma Entidade se relaciona com si prpria. Os auto-relacionamentos podem ser de tipo Um-para-Um, Um-para-Muitos ou Muitos-para-Muitos.
Gerencia
Figura 56.
58
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
8.1.3. Relacionamentos Mltiplos / Agregao a associao que envolve mais de duas Entidades.
Professor
Ensina
Disciplina
N Aluno
Figura 57.
Obs.: Para entendermos este relacionamento devemos cortar uma das arestas e fazermos um relacionamento binrio. Devido a uma limitao do modelo E-R no possvel expressar relacionamentos entre relacionamentos. Para resolver esse problema usamos a agregao. Ao associarmos um conjunto de Entidades e um Relacionamento temos uma Agregao. A agregao aplicada aos modelos para facilitar o entendimento semntico e tornar mais claros os graus dos relacionamentos ternrios ou de maior nmero. A agregao , na realidade, uma abstrao do modelo E-R atravs da qual relacionamentos so tratados como entidades de nvel superior. Vamos ver no exemplo:
Funcionrio N
Trabalha
N N
Projeto
Utiliza N Mquina
Figura 58.
Temos um relacionamento N:N entre FUNCIONRIO e PROJETO, outro relacionamento N:N entre FUNCIONRIO e MQUINA e, por fim, outro relacionamento N:N entre MQUINA e PROJETO. Agora iremos representar o relacionamento entre duas entidades como se fosse uma nova entidade. Vamos considerar o relacionamento entre FUNCIONRIO e PROJETO como se fosse uma nova entidade e iremos represent-la como sendo uma nova entidade. A seguir
59
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
devemos estabelecer o relacionamento entre a entidade MQUINA e a nova entidade. Veja como essa operao fica representada graficamente:
Funcionrio
Trabalha
Projeto
N Utiliza N Mquina
Figura 59.
Note que o relacionamento feito com a nova entidade e no com o relacionamento (a reta vai at a nova entidade e no at o relacionamento TRABALHA). A partir dessa nova modelagem podemos fazer uma releitura do modelo. Podemos interpretar que quando um funcionrio trabalha em um projeto ele utilizar uma mquina.
Funcionrio
Trabalha
Projeto
N Utiliza N Mquina
Figura 60.
60
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Professor
Ensina
Disciplina
Cursa
N Aluno
Figura 61.
O modelo E-R uma ferramenta valiosa para qualquer sistema com mltiplos depsitos (objetos) e complexos relacionamentos de dados. Ele inteiramente voltado para os relacionamentos de dados, sem oferecer quaisquer informaes sobre as funes que criam ou utilizam os dados.
8.2. Generalizao-Especializao
Existem casos em que uma entidade pode ser dividida em categorias, cada qual com atributos especficos, isto , a entidade pode possuir subclasses ou pertencer asuperclasses. A associao entre uma Generalizao (superclasses) e suas Especializaes (subclasses) representado por um tringulo e recebe o nome de "IS A" ( um).
No caso temos a Super-Classe CLIENTE e as Sub-Classes PESSOA FSICA e PESSOA JURDICA. O que diferencia essas duas subclasses so alguns poucos atributos.
61
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
O uso de uma estrutura de Generalizao-Especializao tambm conhecido como PARTICIONAMENTO. Sua principal utilidade que com ele podemos representar ENTIDADES com ATRIBUTOS parcialmente disjuntos, alm de permitir que um RELACIONAMENTO fique restrito a um subconjunto de uma ENTIDADE. Uma superclasse , portanto, uma GENERALIZAO de um conjunto de ESPECIALIZAES (subclasses). Cada ESPECIALIZAO herda atributos e relacionamentos da ENTIDADE da qual derivou. O RELACIONAMENTO entre Especializaes de uma mesma Generalizao um tipo de Auto-Relacionamento.
9. Normalizao
A Normalizao um processo formal passo a passo que examina os atributos de uma entidade com o intuito de evitar anomalias de armazenamento de tuplas (registros) especficas. Esse processo causa a simplificao dos atributos dentro da respectiva tupla, eliminando grupos repetitivos, dependncias parciais de chaves concatenadas, dependncias transitivas, entre outros, colaborando sobremaneira para integridade e a estabilidade do modelo. A experincia tem mostrado que o investimento de tempo que se faz para efetuar manutenes em uma base de dados implementada inversamente proporcional ao tempo aplicado no processo de normalizao. Para se atingir esse estgio, necessrio que as tuplas sejam analisadas de modo a verificar se seus atributos apresentam relaes no normalizadas, submetendo-as a conceitos subseqentes de primeira, segunda e terceira forma normal (FN). H tambm outras formas normais superiores terceira FN, ou seja, Boyce-Cood (BCFN), quarta forma normal, quinta forma normal e chave-domnio, que visam a agrupar atributos em tuplas mais refinadas e distintas a fim de se evitarem anomalias especficas. Porm, atingir o nvel de terceira forma normal suficiente para a maioria dos propsitos prticos de normalizao, sendo rara a necessidade de perseguir formais superiores. A normalizao um mecanismo para transformar estruturas complexas de dados em sua forma mais simples. Portanto, diz-se que uma estrutura de dados est "normalizada" quando est em seu estgio de maior simplicidade. Simplicidade de uma estrutura pode ser definida como a existncia de apenas dependncia funcional. Assim, uma tabela deve conter apenas informaes que se refiram a um mesmo tipo de dados, ou seja, todas as colunas da tabela devem depender funcionalmente da chave primria. Em resumo, a normalizao consiste em descobrir o lugar certo para cada coisa e colocar cada coisa em seu devido lugar, com o objetivo de:
minimizao de redundncias e inconsistncias; facilidade de manipulaes do Banco de Dados; facilidade de manuteno do Sistema de Informaes.
Os trs principais casos de anomalias que caracterizam uma estrutura desnormalizada so:
Grupo Repetitivo: Conjunto de atributos de uma entidade que ocorre mltiplas vezes para
cada ocorrncia da Entidade.
62
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
q Procedimentos
identificar a chave primria da entidade; identificar os atributos que formam o grupo repetitivo e remov-lo da entidade; criar uma nova entidade com a chave primria da entidade anterior e o grupo repetitivo.
A chave primria da nova entidade ser obtida pela concatenao da chave primria da entidade inicial e um ou mais atributos do grupo repetitivo. Exemplo: A empresa Bits Ltda possui um formulrio para solicitao de compra de produtos para empresa.
ORDEM DE COMPRA NEW DATA SYSTEM LTDA A Dt de Cadastro Dt de entrega Quantidade 5 100 6 01/01/2003 05/01/2003
ORD N 1234
Cdigo do Produto Descrio do Produto 015460 122236 456698 PAPEL A4 RESMA-500 FLS CD-RW 700M TINTA P/IMPRESSORA HP850
Valor Unitrio Valor Total 10,00 1,20 85,00 TOTAL: 50,00 120,00 510,00 680,00
Tabela 14.
Analisamos o formulrio por ela utilizado e verificamos a necessidade de criar uma entidade ORDEM com seus atributos. Aplicando a 1 Forma Normal criamos uma entidade chamada ORDEM_ITEM que armazenar o grupo repetitivo encontrado. Como chave primria para entidade ORDEM_ITEM teramos uma chave concatenada (Cdigo da Ordem + Cdigo do Item).
63
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Notem que, no diagrama, os atributos Cdigo da Ordem e Cdigo do Produto foram indicados como PK. Isso foi feito para ressaltar que ambas formam uma chave primria composta. Cdigo da Ordem , na verdade, uma chave estrangeira.
Entidade PK
ORDEM Cdigo da Ordem Data de Cadastro Plano de Comisso Data da Entrega Cdigo Fornecedor Nome do Fornecedor Valor Total da Ordem Cdigo do Produto Descrio do Produto Preo Unitrio do Produto Quantidade do Produto Preo Total do Produto
Entidade PK PK
ORDEM_ITEM Cdigo da Ordem Cdigo do Produto Descrio do Produto Preo Unitrio do Produto Quantidade do Produto Preo Total do Produto N
1 Entidade PK ORDEM Cdigo da Ordem Data de Cadastro Plano de Comisso Data da Entrega Cdigo Fornecedor Nome do Fornecedor Valor Total da Ordem
Figura 63.
q Procedimentos
Identificar os atributos que possuem dependncia parcial.
64
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles. A chave primria da nova entidade ser o atributo do qual os atributos removidos so
funcionalmente dependentes. Exemplo : Continuando a anlise da Ordem de Compra. A criao da entidade ORDEM_ITEM fez com que a chave primria da entidade ORDEM fosse transportada para a nova entidade ORDEM_ITEM, que juntamente com os atributos transferidos pela aplicao da 1 Forma Normal fossem para a entidade ORDEM_ITEM. A chave da nova entidade passou a ser a chave concatenada formada por [Cdigo da Ordem + Cdigo do Item]. Entretanto o atributo [Descrio do Produto] apresenta dependncia parcial com a chave primria concatenada da entidade ORDEM_ITEM, sugerindo a aplicao da 2 Forma Normal.
Entidade PK PK
ORDEM_ITEM Cdigo da Ordem Cdigo do Produto Descrio do Produto Preo Unitrio do Produto Quantidade do Produto Preo Total do Produto
Entidade PK
PK PK - FK
1 Entidade PK ORDEM Cdigo da Ordem Data de Cadastro Plano de Comisso Data da Entrega Fornecedor Valor Total da Ordem Entidade PK
1 ORDEM Cdigo da Ordem Data de Cadastro Plano de Comisso Data da Entrega Cdigo Fornecedor Nome do Fornecedor Valor Total da Ordem
Figura 64.
65
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
q Procedimentos
Identificar todos os atributos que possuem dependncia transitiva. Remov-los e criar uma nova entidade com os mesmos. A chave primria da nova entidade ser o atributo do qual os atributos removidos so
funcionalmente dependentes.
Entidade PK
Entidade PK
N Entidade PK PK - FK ORDEM_ITEM Cdigo do Item Cdigo do Produto Preo Unitrio do Produto Quantidade do Produto Preo Total do Produto N 1 Entidade PK PK - FK
N ORDEM_ITEM Cdigo do Item Cdigo do Produto Preo Unitrio do Produto Quantidade do Produto Preo Total do Produto N Entidade PK 1 FORNECEDOR Cdigo do Fornecedor Nome do Fornecedor 1 Entidade PK ORDEM Cdigo da Ordem Data de Cadastro Plano de Comisso Figura 65. Data da Entrega FK Cdigo Fornecedor Valor Total da Ordem N
Entidade PK
ORDEM Cdigo da Ordem Data de Cadastro Plano de Comisso Data da Entrega Cdigo Fornecedor Nome do Fornecedor Valor Total da Ordem
66
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
A entidade possuir vrias chaves candidatas; As chaves candidatas forem compostas; As chaves compostas compartilharem pelo menos um atributo em comum.
Exemplo: vamos considerar a relao TURMA (aluno, professor, matria) Onde: Cada aluno s assiste a uma determinada disciplina com um professor; Cada professor ministra uma matria; A matria pode ser ministrada por vrios professores. Nesse caso, a matria funcionalmente dependente de professor, que no chave candidata; dessa maneira a relao poderia ser dividida em 2 partes: (aluno, professor) e (matria, professor).
33 34
Machado, Felipe Nery Rodrigues. Banco de Dados: Projeto e Implementao, rica, 2004 Heuser, Carlos Alberto. Projeto de banco de dados, Sagra Luzzatto, 2000 67
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
FUNCIONRIO
PROJETO
FUNCIONARIO(cdigo_func, nome)
Utiliza
Cdigo_equip 1 1 1 2 2 2
A tabela encontra-se na 3FN, no entanto, os dados do equipamento so armazenados com redundncia, pois participam de um mesmo projeto trs funcionrios que utilizam o mesmo equipamento. Isso representa o conceito de dependncia funcional multivalorada e poderia ser resolvido aplicando a 4FN como segue:
FUNCIONRIO
Proj. Func
PROJETO
Proj. Equip
68
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Retirar esses atributos no chaves e multivalorados, criando novas entidades para cada um
deles, herdando a chave primria da entidade desmembrada.
COMPANHIA Ford GM
Premissa: se um agente vende um certo produto e ele representa uma companhia, ento ele vende um produto fabricado por esta companhia. Todos os pares se combinam:
Neste caso possvel decompor uma tripla em trs relaes binrias com eliminao de certas redundncias:
35
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
AGENTE X COMPANHIA
AGENTE Joo Joo
Tabela 18.
COMPANHIA Ford GM
AGENTE X PRODUTO
AGENTE Joo Joo
Tabela 19.
COMPANHIA X PRODUTO
COMPANHIA Ford Ford GM GM
Tabela 20.
Resultado:
Apenas uma vez est dito que Ford produz carros; Apenas uma vez est dito que Joo agente da GM
70
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
71
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
02. Quais so as caractersticas de um Banco de dados Relacional? R: Armazenamento de dados em Estruturas lgicas denominadas tabelas Controle de acesso aos dados Permite o relacionamento entre tabelas evitando a necessidade de armazenamentos duplicados desnecessariamente
1.1. Atividade envolvendo o Cenrio Instituio de Ensino "Aprendendo a Aprender" Etapa 1 Considere a seguinte situao: A instituio de Ensino Tcnico "Aprendendo a aprender", localizada na zona Norte de So Paulo, fundada em 1970 contava com aproximadamente 250 alunos, 18 professores e os cursos de Processamento de Dados e Magistrio, que eram oferecidos nos perodos manh, tarde e noite, alm dos 15 funcionrios que davam suporte administrativo e financeiro a instituio. Inicialmente a instituio controlava as suas informaes manualmente por meio de fichas que continham o histrico dos alunos, os dados cadastrais de alunos, professores e funcionrios, informaes sobre os cursos, entre outras informaes. Sabemos que os alunos so matriculados em curso, que os cursos so compostos por disciplinas e que as disciplinas so ensinadas por professores. A seguir so apresentados alguns exemplos de relatrios com as informaes que eram preenchidas:
72
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
ALUNO Nome Curso Semestre Data de RG Nascimento Endereo Completo (Rua, No., complemento, Bairro, Cep, Cidade, Estado) Rua Silva Jardim, no. 329 - Bela Vista - Cep 02460-044 - So Paulo/SP
15/08/1955
3789789
Magistrio
01/05/1953
48937321 Rua Irm Jussara, no. 33 apto. 5 - Jardim Eldorado - Cep 03845-000 - So Paulo/SP 2134812 Rua Diogo Prado, no. 4 - Vila Velha - Cep 04231-123 - So Paulo/SP
Aristides Almeida
Processamento 2 de dados
02/12/1952
CURSO Nome Processamento de Dados Magistrio Durao 2000 horas 1800 horas Disciplinas Clculo numrico, Portugus, Fundamentos de Computao ... Portugus, Tcnicas de Magistrio, Literatura ... Portaria de aprovao 578/70 579/70
DISCIPLINA Nome Clculo Numrico Clculo Numrico Tcnicas de Ensino Tcnicas de Ensino Carga Horria 80 80 80 80 Semestre 2 2 4 4 Professor Edgard Munhoz Beltro Edgard Munhoz Beltro Turma 1 2 Curso Processamento de dados Processamento de dados Magistrio Magistrio
73
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
PROFESSOR Nome Edgard Munhoz Beltro Maria Eustquia Xavier Data de Nascimento 15/08/1935 11/10/1940 RG 1787789 12387941 Endereo Completo (Rua, No., complemento, Bairro, Cep, Cidade, Estado) Rua Altino Campestre, 32, Cep 04022-010 Jaboato, So Paulo/SP Rua Altamira, 48 apto. 3 - Vila Aurora - Cep 03847-100 - So Paulo/SP
04. Considerando a tabela ALUNO identifique e exemplifique: a. Um registro R: Antonio Ubaldo da Silva Processamento 1 de dados 15/08/1955 3789789 Rua Silva Jardim, no. 329 Bela Vista Cep 02460-044 So Paulo/SP
05. Supondo que voc tenha sido contratado para implementar este "banco de dados", e que tenha que sugerir um sistema gerenciador de bancos de dados para fazer isso, que aspectos voc levaria em considerao para sugerir o SGBD, justifique a sua resposta. R: Porte da empresa, Volume de informaes a serem gerenciados, Oramentos disponveis, Nvel de Segurana, Tempo de espera, entre outras.
06. Supondo que as informaes acima foram armazenadas em Tabelas, quais as caractersticas de um Banco de dados Relacional que no esto sendo consideradas de acordo com as informaes observadas? Justifique a sua resposta. R: Redundncia no armazenamento de informaes
74
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Considerando o Cenrio "Aprendendo a Aprender", faa o que se pede para cada uma das tabelas.
01. Defina o identificador, tipo de dado e tamanho adequado para cada campo. R:
ALUNO Nome Identificador nome_aluno Tipo de dado varchar2 Tamanho 30 Nome do Curso curso varchar2 20 Semestre semestre number 2 Data de Nascimento dt_nasc date RG rg number 9 Endereo Completo end varchar2 60
CURSO Nome Identificador Tipo de dado Tamanho nome_curso varchar2 20 Durao duracao number 5 Disciplinas disciplina varchar2 20 Portaria de aprovao port_apr varchar2 8
DISCIPLINA Nome Identificador nome_disc Tipo de dado varchar2 Tamanho 20 Carga Horria ch number 3 Semestre Sem Number 2 Professor professor varchar2 30 Turma turma varchar2 3 Nome do Curso curso varchar2 20
PROFESSOR Nome Identificador Tipo de dado Tamanho nome_aluno varchar2 30 Data de Nascimento dt_nasc date RG rg number 9 Endereo Completo end varchar2 60
75
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
02. Identifique um campo candidato chave primria, caso isso no seja possvel sugira o acrscimo de uma nova coluna tabela, indicando o nome da coluna e o tipo de dado. R: ALUNO poderia ser adicionado um campo Registro do Aluno (ra), do tipo numrico com 5 posies, ou ento considerar o campo RG CURSO poderia ser adicionado um campo Cdigo do Curso (cod_curso), do tipo numrico com 5 posies DISCIPLINA poderia ser adicionado um campo Cdigo da Disciplina (cod_disc), do tipo numrico com 5 posies PROFESSOR - poderia ser adicionado um campo Registro do Professor (rp), do tipo numrico com 5 posies, ou ento considerar o campo RG
03. Para que possamos estabelecer o relacionamento entre as tabelas e, com isso, evitar o armazenamento de informaes duplicadas deve-se acrescentar chaves estrangeiras s tabelas, sendo assim: a. Cite duas tabelas que deveriam ser relacionadas? R: ALUNO e CURSO DISCIPLINA e CURSO PROFESSOR e DISCIPLINA Quais seriam as vantagens obtidas ao relacionarmos as tabelas, alm de evitar a duplicao de informaes? R: Atualizao em uma nica fonte, garantindo a preciso da informao, economia de memria e espao em disco, otimizao de consultas, eliminao de colunas b. Identifique ou sugira campos que possam vir a ser chaves estrangeiras nas tabelas citadas na resposta 3.a R: Na tabela ALUNO o campo curso no qual est sendo matriculado, este campo poderia ser chamado curso, do tipo numrico com 5 posies. Na tabela DISCIPLINA poderia ser acrescida a coluna cdigo do curso ao qual est disciplina pertence, este campo poderia ser chamado curso, do tipo numrico com 5 posies. * Na tabela DISCIPLINA poderia ser acrescida a coluna cdigo do professor, este campo poderia ser chamado cod_prof, do tipo numrico com 5 posies, est sugesto no foi implementada nas solues apresentadas nos itens posteriores.
76
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
c. Com o relacionamento entre as tabelas da resposta 3.a quais campos poderiam ser eliminados nas tabelas? R: a princpio: ALUNO - Nome do curso DISCIPLINA - Nome do curso CURSO Nome da disciplina PROFESSOR nenhuma
04. Considere as sugestes apresentadas anteriormente e identifique as colunas que devem possuir restries, mencione qual a restrio que dever ser utilizada e justifique a sua resposta. R:
ALUNO Registro do Aluno Identificador ra Tipo de dado Tamanho Restrio number 5 Nome Cdigo do Curso Semestre semestre number 2 Data de RG Nascimento dt_nasc date rg Endereo Completo end
CURSO Cdigo do Curso Identificador Tipo de dado Tamanho Restrio cod_curso number 5 primary key Durao duracao number 5 Portaria de aprovao port_apr varchar2 8
77
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
DISCIPLINA Cdigo da Nome Disicplina Identificador cod_disp Tipo de dado number Tamanho Restrio 5 nome_disc varchar2 20 Carga Horria ch number 3 not null Semestre sem number 2 Professor professor varchar2 30 Turma turma varchar2 3 Cdigo do Curso curso number 5 foreing key
PROFESSOR Registro do Professor Identificador Tipo de dado Tamanho Restrio rp number 5 primary key Nome nome_aluno varchar2 30 not nul Data de Nascimento dt_nasc date RG rg number 9 unique Endereo Completo end varchar2 60
78
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Estamos no ano de 2004, a Instituio de Ensino "Aprendendo a Aprender" estar completando no prximo ano 35 anos de atuao, ao longo de sua existncia preserva a preocupao com a qualidade, no s nos seus servios prestados, mas principalmente no ser humano. Atualmente conta com 10.000 alunos, gradativamente deixou de oferecer cursos tcnicos e substituindo-os por cursos de Tecnologia, conta atualmente com 8 cursos de tecnologia, dentre eles Bancos de Dados, Redes de Computadores, Sistemas de Informao e Sistemas Web. Possui 500 funcionrios, sendo que, 300 so professores e 200 funcionrios administrativos. Os seus cursos continuam sendo oferecidos nos perodos matutino, vespertino e noturno. Cada curso possui uma carga horria que distribuda em disciplinas com ciclos semestrais, tambm possui um professor coordenador. As disciplinas so especficas para cada curso, mesmo que disciplinas com mesmo nome faam parte da grade de vrios cursos ela dever possuir cdigos diferentes, isso se faz necessrio, pois para cada curso a disciplina visa atender um objetivo na formao das competncias a serem desenvolvidas, tendo por isso, objetivos especficos diferenciados para cada curso. Toda disciplina possui uma carga horria, a soma das cargas horrias de uma disciplina dever ser compatvel com a carga horria do curso, o cdigo da disciplina dever ser composto pelo cdigo do curso e um identificador para a disciplina. Cada professor poder ensinar diferentes disciplinas. Cada turma dever possuir um conjunto de alunos, um conjunto de disciplinas compatvel com o semestre da grade daquela turma, um professor para cada disciplina e as informaes de ano e semestre letivos. O cdigo identificador da turma dever ser composto pelo contedo dos campos: ano letivo, que representa o ano corrente, o semestre letivo que dever identificar o se 1. semestre ou 2. semestre do ano, cdigo do curso, semestre da grade de disciplinas que dever ser atribuda turma e o identificador da turma. Os funcionrios da Instituio dividem-se em duas categorias: professores e administrativos. Para os professores necessrio o armazenamento de sua titulao, especialmente para fins de pagamento, uma vez que existe uma tabela para pagamentos que varia de acordo com a titulao do professor, o professor remunerado em funo da quantidade de aulas que leciona. J para os funcionrios administrativos importante que se conhea o cargo e salrio, tambm existe um plano de carreira para os funcionrios administrativos que prev os cargos, salrios e benefcios para cada funo.
01. Identifique as possveis entidades apresentadas no cenrio da Instituio de Ensino Aprendendo a Aprender.
03. Qualifique os atributos definindo: Nome, tipo de dado a ser armazenado, tamanho do dado e restries.
79
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
R:
ALUNO
registro de aluno: numrico com 5 posies, chave primria nome: alfanumrico com 30 posies, preenchimento obrigatrio email: alfanumrico com 20 posies data de nascimento: data
FUNCIONARIO
cdigo de funcionrio: numrico com 5 posies,chave primria nome: alfanumrico com 20 posies e preenchimento obrigatrio email: alfanumrico com 20 posies data de nascimento: data dt_admissao: date tipo: numrico com 1 posio, o contedo do campo poder ser 1 ou 2
PROFESSOR
cdigo de professor: numrico com 5 posies, chave primria, estabelece o relacionamento com a tabela FUNIONARIO titulao: alfanumrico com 15 posies
ADMINISTRATIVO
cdigo de funcionrio: : numrico com 5 posies, chave primria, estabelece o relacionamento com a tabela FUNIONARIO cargo: alfanumrico com 15 posies salrio: numrico real com 2 casas decimais
CURSO
cdigo do curso: numrico com 5 posies, chave primria nome: alfanumrico com 30 posies, contedo exclusivo carga horria: numrico com 4 posies parecer de aprovao: alfanumrico com 6 posies, contedo exclusivo coordenador: numrico com 5 posies, campo de ligao com o PROFESSOR DISCIPLINA cdigo da disciplina: campo numrico com 12 posies, chave primria nome: campo numrico com 30 posies, preenchimento obrigatrio carga horria da disciplina: numrico com 3 posies cdigo do curso: numrico com 5 posies, este campo estabelece relacionamento com a tabela CURSO
80
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
TURMA
ano letivo: numrico com 4 posies semestre letivo: numrico com 1 posio cdigo do curso: numrico com 5 posies, este campo estabelece relacionamento com a tabela CURSO semestre da grade: numrico com 5 posies cdigo da turma: numrico com 12 posies, chave primria
81
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Estamos no ano de 2004, a Instituio de Ensino "Aprendendo a Aprender" estar completando no prximo ano 35 anos de atuao, ao longo de sua existncia preserva a preocupao com a qualidade, no s nos seus servios prestados, mas principalmente no ser humano. Atualmente conta com 10.000 alunos, gradativamente deixou de oferecer cursos tcnicos e substituindo-os por cursos de Tecnologia, conta atualmente com 8 cursos de tecnologia, dentre eles Bancos de Dados, Redes de Computadores, Sistemas de Informao e Sistemas Web. Possui 500 funcionrios, sendo que, 300 so professores e 200 funcionrios administrativos. Os seus cursos continuam sendo oferecidos nos perodos matutino, vespertino e noturno. Cada curso possui uma carga horria que distribuda em disciplinas com ciclos semestrais, tambm possui um professor coordenador. As disciplinas so especficas para cada curso, mesmo que disciplinas com mesmo nome faam parte da grade de vrios cursos ela dever possuir cdigos diferentes, isso se faz necessrio, pois para cada curso a disciplina visa atender um objetivo na formao das competncias a serem desenvolvidas, tendo por isso, objetivos especficos diferenciados para cada curso. Toda disciplina possui uma carga horria, a soma das cargas horrias de uma disciplina dever ser compatvel com a carga horria do curso, o cdigo da disciplina dever ser composto pelo cdigo do curso e um identificador para a disciplina. Cada professor poder ensinar diferentes disciplinas. Cada turma dever possuir um conjunto de alunos, um conjunto de disciplinas compatvel com o semestre da grade daquela turma, um professor para cada disciplina e as informaes de ano e semestre letivos. O cdigo identificador da turma dever ser composto pelo contedo dos campos: ano letivo, que representa o ano corrente, o semestre letivo que dever identificar o se 1. semestre ou 2. semestre do ano, cdigo do curso, semestre da grade de disciplinas que dever ser atribuda turma e o identificador da turma. Os funcionrios da Instituio dividem-se em duas categorias: professores e administrativos. Para os professores necessrio o armazenamento de sua titulao, especialmente para fins de pagamento, uma vez que existe uma tabela para pagamentos que varia de acordo com a titulao do professor, o professor remunerado em funo da quantidade de aulas que leciona. J para os funcionrios administrativos importante que se conhea o cargo e salrio, tambm existe um plano de carreira para os funcionrios administrativos que prev os cargos, salrios e benefcios para cada funo.
01. Identifique os relacionamentos existentes entre as entidades apresentadas nos exerccios 2 e 3. R: Cada ALUNO deve ser alocado em uma e somente uma TURMA. Uma TURMA pode conter um ou muitos alunos. As TURMAS assistem a muitas DISCIPLNAS As DISCIPLINAS so assistidas por muita TURMAS Uma DISCIPLINA pode ser lecionada por um ou muitos PROFESSORES.
82
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Um PROFESSOR pode ministrar uma ou muitas DISCIPLINAS Uma DISCIPLINA compe um ou muitos CURSOS. UM CURSO composto por muitas DISCIPLINAS. Um PROFESSOR coordena um CURSO Um CURSO coordenado por um PROFESSOR. Um funcionrio pode ser ADMINISTRATIVO ou PROFESSOR.
02. Proponha um MER para o cenrio apresentado utilizando a metodologia de Peter Chen. R: Obs.: Neste ponto da matria especializao ainda no foi abordado, mas est sendo ilustrado na soluo.
Aluno 1:N
Funcionrio
1:N alocado em Professor 1:1 1:1 Turma 1:N Coordena Assiste Leciona Administrativo
Compe
83
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
01. Realize o levantamento de dados para identificao das necessidades do cliente e descreva o cenrio encontrado. R: A instituio de Ensino Aprendendo a Aprender possui um acervo composto por livros, revistas, artigos, peridicos, entre outros, todos so denominados como obras. Atualmente a catalogao das obras realizada manualmente, isto , os dados das obras so armazenados em fichas de papel e disponibilizadas em 2 arquivos, um organizado por ordem alfabtica de autor e outro por ordem alfabtica de ttulo. Estas fichas contm os seguintes dados das obras: Cdigo da Obra, Tipo da Obra (revista, livro, etc), nome do autor, cdigo do autor, ano de edio, nome da editora, cdigo da editora, classificao da obra (Informtica, infantil, literatura, etc.) Todos os usurios da biblioteca podem consultar as obras disponveis no acervo, mas somente podem pegar livros emprestados os usurios cadastrados. Para realizao do cadastro o usurio deve preencher uma ficha de cadastro e apresentar o seu documento de identificao. A ficha de cadastro preenchida manualmente e contm os seguintes dados: Identificao do usurio, tipo de usurio (aluno, professor ou funcionrio), data de nascimento, telefone, endereo, email e para menores de 18 anos dados do responsvel: nome, identidade, telefone e endereo. Quando um usurio pega um livro emprestado, a ficha do livro retirada do acervo e anexada ficha do aluno e a ficha que a atendente preenche informando cdigo do livro, cdigo do usurio, data de retirada e data de entrega e este conjunto arquivado em uma pasta organizada por data de entrega. Os usurios podem retirar qualquer tipo de obra por um prazo mximo de 10 dias. A quantidade de obras que cada usurio pode retirar de 3 obras. Para cada exemplar de uma obra preenchida uma ficha de catalogao, desta maneira se existirem 10 exemplares de um determinado livro sero preenchidas 10 fichas. Com o aumento de obras do acervo e tambm de usurios este controle est invivel, pois os atendentes precisam registrar:
Novas obras Novos usurios Emitir relatrios de utilizao de livros Emitir a listagem dos usurios em atraso e cobrar multa
a multa de 3 dias de suspenso do direito de retirada de livros para cada dia de atraso
controlar os emprstimos.
O objetivo da instituio que os processos da biblioteca sejam automatizados.
84
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
02. Identifique as entidades e atributos. R: Usurio: ID, Nome, DT_nascimento, Email, Endereco, Telefone, Responsvel, RG_Responsavel, Endereco_responsavel, Fone_responsavel Obra: ID, Tipo, Nome, DT_edio, Nome_editora, Cdigo_Editora, Nome_autor, Codigo_Autor, Classificao Emprstimo: ID_Usurio, ID_obra, DT_retirada, DT_devoluo
03. Identifique os relacionamentos entre as entidades. R: Um usurio pode retirar at 3 obras por perodo; Cada obra s pode ser retirada por um usurio de cada vez; Quando um usurio retira uma obra da biblioteca uma ficha de emprstimo preenchida.
85
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Usurio
id: VARCHAR2(20) cod_usuario: INTEGER cod_obra: INTEGER nome: VARCHAR2(20) email: CHAR(18) endereo: VARCHAR2(20) fone: VARCHAR2(20) responsavel: VARCHAR2(20) id_responsavel: VARCHAR2(20) fone_responsavel: VARCHAR2(20) email_responsavel: CHAR(18)
Obra
ID_obra: CHAR(18) cod_usuario: INTEGER cod_obra: INTEGER id: VARCHAR2(20) tipo: VARCHAR2(20) edicao: INTEGER id_editora: INTEGER nome_obra: VARCHAR2(20) nome_editora: VARCHAR2(20) id_autor: INTEGER nome_autor: VARCHAR2(20) classificacao: VARCHAR2(20)
Emprstimo
cod_usuario: INTEGER cod_obra: INTEGER data_emprestimo: DATE data_retirada: DATE
86
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Emprstimo
Autor x Obra cod_autor cod_obra ID_obra (FK) id_autor (FK) id_editora (FK) Autor id_autor nome_autor
87
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Nota Fiscal Numero Cliente Nome vendedor Cdigo vendedor Produto Valor total Data Entrega
O cliente ao efetuar uma compra tem seus dados pessoais cadastrados. Existe a necessidade de se verificar a forma de pagamento, que pode ser a vista ou a prazo e em ambos os casos existe a possibilidade de faze-lo com cheque, dinheiro ou carto de crdito O produto pode ser retirado pelo cliente ou entregue em um endereo que pode ou no ser o seu endereo pessoal A venda gera um pagamento de comisso ao vendedor, o percentual de venda de 2% do valor da compra Os produtos ficam armazenados em um estoque. O vendedor antes de efetuar uma venda consulta o estoque Toda venda gera uma nota fiscal que deve conter os dados do vendedor, do cliente, da entrega, dos produtos, data e nmero da nf, valor total de cada produto, valor total geral Todo vendedor possui um gerente, que tambm deve ser cadastrado como sendo um funcionrio. Com base nestas informaes, verifique se as tabelas indicadas so suficientes para o armazenamento dos dados necessrios a construo de uma base de dados que permita o funcionamento adequado de uma loja de eletrodomsticos e:
88
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
Modelo do Banco
1. Construa um modelo lgico 2. Aplique as regras de normalizao 3. Justifique as tabelas criadas ou desmembradas. 4. Construa um modelo Fsico. R: Soluo apresentada pelos alunos Alexandre Bevilacqua Pacheco e Ricardo de Moraes Peretto ( turma 3Bd2 2s2003) Foi utilizada a ferramenta Erwin para modelagem e gerao dos scripts de criao das tabelas
89
Copyright Faculdade IBTA
90
Produto_estocado ID_PRODUTO_ESTOCADO: number(5) Gerente ID_GERENTE: number(5) VALOR_UNITRIO: number(10,2) QUANTIDADE: number(10) DESCRIO: varchar2(40) Itens_nf ID_NFISCAL: number(5) ID_PRODUTO_ESTOCADO: number(5) Fone_cliente VALOR_UNITRIO: number(5,2) QTDE: number(5) DDD: number(3) NUMERO: number(15) ID_CLIENTE: number(5) Cliente ID_CLIENTE: number(5) Forma_pgto ID_FORMA_PGTO: number(5) DESCRICAO: varchar2(20) CPF: number(9) CPF_CONTROLE: number(2) RG: varchar2(15) END: varchar2(50) DT_NASC: date NOME: varchar2(40)
Funcionrio
ID_FUNCIONRIO: number(5)
Vendedor
ID_VENDEDOR: number(5)
Nfiscal
ID_NFISCAL: number(5)
ID_CLIENTE: number(5) ID_FORMA_PGTO: number(5) ID_TIPO_PGTO: number(5) DT: date END_ENTREGA: varchar2(50) ID_VENDEDOR: number(5)
Tipo_pgto
ID_TIPO_PGTO: number(5)
DESCRICAO: varchar2(20)
IBTA 2563
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________
91
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________
92
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________
93
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________
94
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________
95
Copyright Faculdade IBTA
IBTA 2563
BD Modelagem de Banco de Dados Semestre III
______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________ ______________________________________________________________________________
96
Copyright Faculdade IBTA
IBTA 2756
BD Modelagem de Banco de Dados Semestre III Nome: Professor: Turma: Data:
Figura 1
Figura 2
IBTA 2756
BD Modelagem de Banco de Dados Semestre III
Selecione a forma de exibio dos atributos Hierachically ou Alphabetically O cone para representao do atributo, se ele pertencer a famlia string, number etc. Especifique o Nome do atributo Attribute Name Selecione OK.
IBTA 2757
BD Modelagem de Banco de Dados Semestre III
Prtica 2 Representao de Entidades e Atributos Instrues: Esta prtica baseada no Exerccio 3 Identificao de Entidades e Atributos, cujo cenrio apresentado a seguir. Caso: Instituio de Ensino Aprendendo a Aprender
Estamos no ano de 2004, a Instituio de Ensino Aprendendo a Aprender estar completando no prximo ano 35 anos de atuao, ao longo de sua existncia preserva a preocupao com a qualidade, no s nos seus servios prestados, mas principalmente no ser humano. Atualmente conta com 10.000 alunos, gradativamente deixou de oferecer cursos tcnicos e substituindo-os por cursos de Tecnologia, conta atualmente com 8 cursos de tecnologia, dentre eles Bancos de Dados, Redes de Computadores, Sistemas de Informao e Sistemas Web. Possui 500 funcionrios, sendo que, 300 so professores e 200 funcionrios administrativos. Os seus cursos continuam sendo oferecidos nos perodos matutino, vespertino e noturno. Cada curso possui uma carga horria que distribuda em disciplinas com ciclos semestrais, tambm possui um professor coordenador. As disciplinas so especficas para cada curso, mesmo que disciplinas com mesmo nome faam parte da grade de vrios cursos ela dever possuir cdigos diferentes, isso se faz necessrio, pois para cada curso a disciplina visa atender um objetivo na formao das competncias a serem desenvolvidas, tendo por isso, objetivos especficos diferenciados para cada curso. Toda disciplina possui uma carga horria, a soma das cargas horrias de uma disciplina dever ser compatvel com a carga horria do curso, o cdigo da disciplina dever ser composto pelo cdigo do curso e um identificador para a disciplina. Cada professor poder ensinar diferentes disciplinas. Cada turma dever possuir um conjunto de alunos, um conjunto de disciplinas compatvel com o semestre da grade daquela turma, um professor para cada disciplina e as informaes de ano e semestre letivos. O cdigo identificador da turma dever ser composto pelo contedo dos campos: ano letivo, que representa o ano corrente, o semestre letivo que dever identificar o se 1o. semestre ou 2o. semestre do ano, cdigo do curso, semestre da grade de disciplinas que dever ser atribuda turma e o identificador da turma. Os funcionrios da Instituio dividem-se em duas categorias: professores e administrativos. Para os professores necessrio o armazenamento de sua titulao, especialmente para fins de pagamento, uma vez que existe uma tabela para pagamentos que varia de acordo com a titulao do professor, o professor remunerado em funo da quantidade de aulas que leciona. J para os funcionrios administrativos importante que se conhea o cargo e salrio, tambm existe um plano de carreira para os funcionrios administrativos que prev os cargos, salrios e benefcios para cada funo. 1) Abra o erwin e salve o seu arquivo com o nome PRATICA2 2) Represente as entidades e atributos identificados no cenrio apresentado. 3) Salve o seu arquivo.
IBTA 2757
BD Modelagem de Banco de Dados Semestre III
R:
ALUNO registro Nome_Aluno email data_nascimento FUNCIONARIO codigo Nome email data_admissao tipo data_nascimento CURSO codigo_curso nome carga_horaria coordenador
TURMA PROFESSOR ano_letivo semestre codigo_curso codigo da turma ADMINISTRATIVO codigo cargo salario codigo titulacao
IBTA 2758
BD Modelagem de Banco de Dados Semestre III
Prtica 3 Representao de Entidades e Atributos Instrues: Esta prtica baseada no Exerccio 3 Identificao de Entidades e Atributos e d continuidade a prtica 2
1) 2) 3) 4) Abra o arquivo PRTICA 2 e salve-o com o nome PRATICA3 Identifique as chaves primria e estrangeira de cada entidade Estabelea os relacionamentos entre as entidades. Salve o seu arquivo.
IBTA 2758
BD Modelagem de Banco de Dados Semestre III
R:
ALUNO registro codigo da turma (FK) Nome_Aluno email data_nascimento codigo_turma TURMA codigo da turma ano_letivo semestre codigo_curso
Z FUNCIONARIO codigo (FK) Nome email data_admissao tipo data_nascimento ADMINISTRATIVO codigo (FK) cargo salario Z
IBTA 2759
BD Modelagem de Banco de Dados Semestre III
Prtica 4 Modelo Fsico Instrues: Esta prtica baseada no Exerccio 3 Identificao de Entidades e Atributos e d continuidade a prtica 3
1) Abra o arquivo PRTICA 3 e salve-o com o nome PRATICA4 2) Gere o modelo Fsico. 3) Salve o seu arquivo. Obs.: Modelo no normalizado
IBTA 2759
BD Modelagem de Banco de Dados Semestre III
R:
ALUNO codigo_da_turma: INTEGER Nome_Aluno: VARCHAR(20) email: DATE data_nascimento: DATE codigo_turma: CHAR(18) TURMA codigo_da_turma: INTEGER ano_letivo: INTEGER semestre: INTEGER codigo_curso: INTEGER
DISCIPLINA codigo_disciplina: CHAR(18) codigo_curso: INTEGER codigo: INTEGER nome: VARCHAR(20) carga_horaria: INTEGER
CURSO codigo_curso: INTEGER codigo: INTEGER nome: VARCHAR(20) carga_horaria: INTEGER coordenador: INTEGER
FUNCIONARIO codigo: INTEGER Nome: CHAR(18) email: VARCHAR(20) data_admissao: DATE tipo: INTEGER data_nascimento: DATE
IBTA 2760
BD Modelagem de Banco de Dados Semestre III Nome: Professor: Turma: Data:
Obs: Se voc j resolveu o Exerccio terico e prtico 5, utilize os dados anotados seno faa agora a conforme o procedimento abaixo.
Considere a situao: Seu grupo foi contratado para implementao de um banco de dados para a biblioteca da Instituio de Ensino Aprendendo a Aprender. Para isso, vocs devero realizar as seguintes tarefas:
1. Realize o levantamento de dados para identificao das necessidades do cliente e descreva o cenrio encontrado. 2. Identifique as entidades e atributos. 3. Identifique os relacionamentos entre as entidades. 4. Desenvolva o MER conceitual 5. Desenvolva o MER lgico 6. Desenvolva o MER fsico.
IBTA 2761
BD Modelagem de Banco de Dados Semestre III
Roteiro: 1) Para realizao do login no sistema operacional utilizar: Usurio: Oracle Senha: Oracle
2) Para iniciar o servio Oracle: a. Nos laboratrios de informtica do IBTA voc encontrar o cone de servio na barra de tarefas do Windows. Para acessa-la sem o atalho utilize as opes de menu: Iniciar Configuraes Painel de Controle Ferramentas Administrativas Servios b. Selecione a opo: OracleServiceNomeDoBanco, OracleServiceDB3BD1 no nosso caso
c. Inicie o Servio, para isso, clique com o boto direito do mouse e selecione a opo Iniciar/Start ou na barra de ferramentas selecione o cone .
IBTA 2761
BD Modelagem de Banco de Dados Semestre III
3) Para acessar o SQL: a. Nos laboratrios de informtica do IBTA voc encontrar o cone do SQL Plus na barra de tarefas do Windows.
Para acessa-lo sem o atalho selecione as opes de Menu: Iniciar Programas Oracle OraHome92 Application Development SQL Plus b. Para realizar o login no ambiente do SQLPlus, temos as seguintes opes de usurio/Senha: Usurio Senha Privilgios Scott Tiger usurio HR HR usurio SYS Oracle1 administrador Para esta atividade iremos realizar o login como administrador do Banco, pois iremos preparar o ambiente de trabalho, para isso digite: Nome do Usurio: SYS Senha: ORACLE String de Host: DB3BD1 as SYSDBA 4) Agora vamos criar o usurio SCOTT, para isso, no prompt do SQL Plus: @ C:\oracle\ora92\rdbms\admin\SCOTT.SQL 5) Realize a conexo com o usurio SCOTT. Para isso, no prompt do SQL: a. Digite EXIT, voc estar fechando a sesso do usurio SYS b. Selecione o cone do SQLPlus
1
Esta a senha default utilizada nos laboratrios do IBTA, a senha de instalao CHANGE_ON_INSTALL
IBTA 2761
BD Modelagem de Banco de Dados Semestre III
c. Na caixa de dilogo Logon digite: Nome do Usurio: SCOTT Senha: TIGER String de Host: DB3BD1 6) Vamos verificar quais so as tabelas pertencentes ao esquema do SCOTT: Select object_name from user_objects where object_type = TABLE; O comando acima ir retornar o nome dos objetos do usurio destes objetos (Scott) quando o tipo de objeto for Tabela. 7) Vamos verificar a estrutura de cada uma das tabelas do SCOTT: Describe EMP Desc DEPT Desc SALGRADE Desc BONUS Exerccio: Agora vamos realizar os mesmos procedimentos para criao do usurio HR. 1) Relaize a conexo com o usurio administrador R: Conn Sys/Oracle@DB3BD1 as SYSDBA 2) Localize e rode o script do usurio hr, nome do arquivo HR_MAIN.SQL R: @ C:\oracle\ora92\demo\schema\human_resources\HR_MAIN.SQL O comando Describe ou simplesmente Desc listra a estrutura da Tabela: Nome da Coluna Se a coluna aceita nulos ou no Tipo de dado/Comprimento da coluna O comando Select utilizado para realizao de consultas sua sintaxe : Select lista_colunas From nome_tabela Where condio;
IBTA 2761
BD Modelagem de Banco de Dados Semestre III
OBSERVAO: Sero solicitados os parmetros abaixo, informe conforme a indicao: specify password for HR as parameter 1: Informe o valor para 1: HR specify default tablespeace for HR as parameter 2: Informe o valor para 2: USER specify temporary tablespace for HR as parameter 3: Informe o valor para 3: TEMP specify password for SYS as parameter 4: Informe o valor para 4: ORACLE specify log path as parameter 5: Informe o valor para 5: C: 3) Realize a conexo com o usurio HR R: CONN HR/HR@DB3BD1 4) R: Liste os objetos Tabela do usurio HR.
5) Verifique a estrutura das tabelas do usurio HR. R: DESC EMPLOYEES DESC DEPARTMENT ...
IBTA 2762
BD Modelagem de Banco de Dados Semestre III
2. Crie uma consulta para exibir os cargos exclusivos a partir da tabela EMP. R: SQL> SELECT DISTINCT job 2 FROM emp; 3. Crie uma consulta para exibir o nome e o salrio dos funcionrios que recebem mais de US$2.850. R: SQL> SELECT ename, sal 2 FROM emp 3 WHERE sal > 2850; 4. Crie uma consulta para exibir o nome do funcionrio e o nmero do departamento relativos ao nmero de funcionrio 7566. R: SQL> SELECT ename, deptno 2 FROM emp 3 WHERE empno = 7566; 5. Exiba o nome do funcionrio, o cargo e a data de admisso dos funcionrios admitidos entre 20 de fevereiro de 1981 e 1 de maio de 1981. Ordene a consulta de modo crescente pela data inicial. R: SQL> SELECT ename, job, hiredate 2 FROM emp
IBTA 2762
BD Modelagem de Banco de Dados Semestre III
3 4 5 6
6. Exiba o nome do funcionrio e o nmero do departamento de todos os funcionrios dos departamentos 10 e 30 em ordem alfabtica de nome. R: SQL> SELECT ename, deptno 2 FROM emp 3 WHERE deptno IN (10, 30) 4 ORDER BY ename; 7. Exiba o nome e a data de admisso de todos os funcionrios admitidos em 1982. R: SQL> SELECT ename, hiredate 2 FROM emp 3 WHERE hiredate LIKE '%82'; 8. Exiba o nome e o cargo de todos os funcionrios sem um gerente. R: SQL> SELECT ename, job 2 FROM emp 3 WHERE mgr IS NULL; 9. Exiba o nome, o salrio e a comisso de todos os funcionrios que recebem comisso. Classifique os dados em ordem decrescente de salrio e comisso. R: SQL> SELECT ename, sal, comm 2 FROM emp 3 WHERE comm IS NOT NULL 4 ORDER BY sal DESC, comm DESC; 10. Exiba os nomes de todos os funcionrios cuja terceira letra do nome seja A. Observao: H dois sublinhados (_) antes de A na clusula WHERE. R: SQL> SELECT ename 2 FROM emp 3 WHERE ename LIKE '__A%';
IBTA 2762
BD Modelagem de Banco de Dados Semestre III
11. Exiba os nomes de todos os funcionrios cujo nome tem duas letras L no departamento 30 ou cujo gerente seja 7782. R: SQL> SELECT ename 2 FROM emp 3 WHERE ename LIKE '%L%L%' 4 AND deptno = 30 5 OR mgr = 7782; 12. Crie uma consulta para exibir o nome, o nmero do departamento e o nome do departamento de todos os funcionrios. R: SQL> SELECT e.ename, e.deptno, d.dname 2 FROM emp e, dept d 3 WHERE e.deptno = d.deptno; 13. Crie uma lista nica de todos os cargos existentes no departamento 30. Inclua a localizao do departamento 30 na sada. R: SQL> SELECT DISTINCT e.job, d.loc 2 FROM emp e, dept d 3 WHERE e.deptno = d.deptno 4 AND e.deptno = 30; 14. Crie uma consulta para exibir o nome do funcionrio, o nome do departamento e a localizao de todos os funcionrios que recebem comisso. R: SQL> SELECT e.ename, d.dname, d.loc 2 FROM emp e, dept d 3 WHERE e.deptno = d.deptno 4 AND e.comm IS NOT NULL; 15. Exiba o nome do funcionrio e o nome do departamento de todos os funcionrios que tm A no nome. R: SQL> SELECT e.ename, d.dname 2 FROM emp e, dept d 3 WHERE e.deptno = d.deptno 4 AND e.ename LIKE '%A%';
IBTA 2762
BD Modelagem de Banco de Dados Semestre III
16. Crie uma consulta para exibir o nome, o cargo, o nmero do departamento e o nome do departamento de todos os funcionrios que trabalham em DALLAS. R: SQL> SELECT e.ename, e.job, e.deptno, d.dname 2 FROM emp e, dept d 3 WHERE e.deptno = d.deptno 4 AND d.loc = 'DALLAS'; 17. Crie uma consulta que exibir o nome do funcionrio, o nmero do departamento e todos os funcionrios que trabalham no mesmo departamento que um determinado funcionrio. Fornea a cada coluna um label apropriado. R: SQL> SELECT e.deptno department, e.ename employee, 2 c.ename colleague 3 FROM emp e, emp c 4 WHERE e.deptno = c.deptno 5 AND e.empno <> c.empno 6 ORDER BY e.deptno, e.ename, c.ename; SELECT e.ename "Employee", e.empno "Emp#", m.ename "Manager", m.empno "Mgr#" FROM emp e, emp m WHERE e.mgr = m.empno(+) SQL> SELECT e.ename "Employee", e.empno "Emp#", 2 m.ename "Manager", m.empno "Mgr#" 3 FROM emp e, emp m 4 WHERE e.mgr = m.empno; 18. Crie uma consulta para exibir o nome e a data de admisso de qualquer funcionrio admitido aps o funcionrio Blake. R: SQL> SELECT emp.ename, emp.hiredate 2 FROM emp, emp blake 3 WHERE blake.ename = 'BLAKE' 4 AND blake.hiredate < emp.hiredate;
IBTA 2762
BD Modelagem de Banco de Dados Semestre III
19. Exiba os nomes e as datas de admisso de todos os funcionrios junto com o nome do gerente e a data de admisso de todos os funcionrios admitidos antes dos respectivos gerentes. Coloque um label nas colunas Employee, Emp Hiredate, Manager e Mgr Hiredate, respectivamente. R: SQL> SELECT e.ename "Employee", e.hiredate "Emp Hiredate", 2 m.ename "Manager", m.hiredate "Mgr Hiredate" 3 FROM emp e, emp m 4 WHERE e.mgr = m.empno 5 AND e.hiredate < m.hiredate;
IBTA 2763
BD Modelagem de Banco de Dados Semestre III
1) Exiba o nome dos funcionrios e o nome dos departamentos em que trabalham. R: Select ename, dname from emp, dept where dept.deptno = emp.deptno; 2) Exiba o nome do departamento e a sua localizao para todos os departamentos que possuem funcionrios com o cargo de CLERK R: Select dname, loc from deptno, emp where emp.deptno = dept.deptno and emp.job = CLERK; 3) Exiba o nome de todos os funcionrios que atuam nos departamentos localizados em NEW YORK R: Select ename from emp, dept where dept.deptno = emp.deptno and dept.loc = NEW YORK; 4) Exiba a localizao dos departamentos que possuem salrios superiores a 1500. R: Select dept.loc from dept, emp where dept.deptno = emp.deptno and emp.sal > 1500; 5) Exiba o nome e o nmero de dias inteiros trabalhados por cada um dos funcionrios do departamento 30. R: Select ename, round(sysdate hiredate,0) dias_trabalhados from emp, deptno where dept.deptno = emp.deptno and emp.deptno = 30; 6) Exiba o nome do funcionrio e o nome do seu gerente sob os apelidos Funcionrio e Gerente respectivamente. R: Select func.ename, gerente.ename From emp func, emp gerente Where func.mgr = gerente.empno; 7) Crie uma consulta para exibir o nome, cargo, salario, data de admisso da tabela de funcionrios e relacione com a tabela de departamento exibindo tambm os campos Nome do departamento e Localizao R: SELECT A.ENAME, A.JOB, A.SAL, A.HIREDATE, B.DNAME, B.LOC
IBTA 2763
BD Modelagem de Banco de Dados Semestre III
IBTA 2764
BD Modelagem de Banco de Dados Semestre III
1) Exibir nomes (ename) e cargos (job) dos funcionrios sob a identificao nomes e cargos respectivamente. R: Select ename nomes, job cargos from emp; 2) Exibir o nome de todos os funcionrios que trabalham no departamento 30 R: Select ename from emp where deptno = 30; 3) Exiba o nome de todos os funcionrios com cargo de analista (ANALYST) R: Select ename from emp where job = ANALYST; 4) Exiba o nome de todos os funcionrios que trabalham nos departamentos 10 ou 30 R: SElect ename from emp where deptno = 10 or deptno = 30; 5) Exiba o nome de todos os funcionrios que trabalham no departamento 10 com salrio maior ou igual a 500 R: Select ename from emp where deptno = 10 and sal >= 500; 6) Exiba em ordem crescente o nome de todos os funcionrios: a) em letras maisculas R: Select upper(ename) from emp order by ename; b) Com a primeira letra de cada palavra em minsculas R: Select initicap(ename) from emp order by ename; c) Com todas as letras minsculas R: Select lower(ename) from emp order by ename;
IBTA 2764
BD Modelagem de Banco de Dados Semestre III
7) Escreva consultas que retornem o resultado das seguintes operaes: a) Exiba o resto da diviso de 151 por 8 R: Select mod(151,8) resto_divisao from dual; b) Exiba o resultado da diviso de 151 por 8 com 2 casas decimais R: Select round(151/8,2) diviso from dual; c) Exiba o resultado da diviso de 151 por 8 truncado e sem nenhuma casa decimal. R: Select trunc(151/8,0) from dual; Obs.: Utilize a tabela DUAL. 8) Exiba o nome do funcionrio e o resultado da operao indicada de acordo com as condies abaixo sob o apelido bnus: Se o cargo do funcionrio for CLERk o bnus do salrio dever ser de 15% Se o cargo do funcionrio for ANALYST o bnus do salrio dever ser de 20% Para os demais cargos no o valor do bnus 0. Utilize a funo Decode. R: Select ename, decode (job, CLERK, sal * 0.15, ANALYST, sal * 0.20, 0) as BONUS From emp; 9) Resolva o exerccio 9 utilizando a funo Case. R: select ename, case job when 'CLERK' THEN sal * 0.15 when 'ANALYST' THEN sal * 0.20 else 0 end as BONUS from emp; 10) Exiba o nome dos funcionrios, o salrio sob o apelido salrio e calcule o reajuste de salrio para cada funcionrio de acordo com as condies abaixo, exiba o resultado do clculo sob o apelido Salrio_atualizado. Se salrio <= 500 reajuste de 50% Se salrio > 500 e salrio <= 1000 reajuste de 25% Se salrio > 1000 e salrio <= 5000 reajuste de 12,5% Demais salrios 6%
IBTA 2764
BD Modelagem de Banco de Dados Semestre III
R: Select ename, sal as salario, case WHEN sal <= 500 THEN sal + (sal * 0.5) WHEN sal > 500 and sal <= 1000 THEN sal +(sal *0.25) WHEN sal > 1000 and sal < 5000 THEN sal+(sal *0.125) Else sal+(sal * 0.06) End as Salario_atualizado From EMP; 11) Exiba nome e o valor do salrio adicionado da comisso de cada funcionrio. Utilize a funo NVL. R: Select ename, sal + (nvl(comm,0) from emp; 12) Exiba nome e o valor do salrio adicionado da comisso de cada funcionrio Utilize a funo NVL2. R: Select ename, nvl2(comm,sal + comm, sal) from emp; 13) Exiba o nome de todos os funcionrios cuja primeira letra do nome S. R: Select ename from emp where ename like S%; 14) Exiba o nome e o cargo de todos os funcionrios que foram contratados no ano de 1981 ou 1982; R: Select ename, job from emp where hiredate like %1981 or hiredate like %1982; 15) Exiba o nome de todos os funcionrios que trabalham em um dos departamentos 10, 20 ou 30 e tenham um dos cargos CLERK, SALESMAN R: Select ename from emp where deptno in (10, 20,30) and job in (CLERK, SALESMAN); 16) Exiba o nome e cargo de todos os funcionrios que possuem salrio entre 1000 e 2000 R: Select ename, job from emp where sal between 1000 and 2000; 17) Exiba o nome e o salrio de todos os funcionrios cuja data de contratao foi entre o perodo de 01/05/1981 e 05/10/2005. R: Select ename, sal from emp where hiredate between 01/05/1981 and 02/10/2005;
IBTA 2765
BD Modelagem de Banco de Dados Semestre III
1) Insira as linhas a seguir na tabela EMP. Empno 8816 8817 8818 Ename JORGE LUIZA Job Mgr Hiredate Sal Comm 800 deptno 10 20 20
ROBERTO ANALISTA
R: insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) values(8816, 'JORGE', 'VENDEDOR', 7839, '15/08/2002', 2500, 800, 10); insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) values(8817,'LUIZA', 'ANALISTA', 7902, '23/02/2004', 3800, null, 20); insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) values(8818,'ROBERTO', 'ANALISTA', 7902, '15/01/2001', 4800, null, 20) 2) Altere o salrio de todos os funcionrios que possuem cargo de CLERK para 5000,50 R: Update EMP set sal = 5000.50 where job = CLERK; 3) Exclua todos os funcionrios que possuem salrios superiores a 1500,00 R: Delete from EMP where sal > 1500.00;
IBTA 2765
BD Modelagem de Banco de Dados Semestre III
4) Inclua o departamento de cdigo 28 e nome Recursos Humanos, localizado em Cuiab R: Insert into dept(deptno, dename, loc) values (28, Recursos Humanos, Cuiaba); 5) Altere a localizao de todos os departamentos com cdigo > 10 e menor do que 15 para So Paulo. R: Update DEPT set loc = So Paulo where deptno > 10 and deptno < 15; 6) Desfaa as alteraes R: Rollback 8) Altere o nome do departamento da tabela DEPT para DBA, onde a localizao for NEW YORK. Cancele a transao. R: UPDATE DEPT SET DNAME = 'DBA' WHERE LOC = 'NEW YORK'; ROLLBACK; 9) Altere o cargo dos empregados da tabela EMP, onde for ANALYST para DBA. Cancele a transao. R: UPDATE EMP SET JOB = 'DBA' WHERE JOB = 'ANALYST'; ROLLBACK; 11) Delete todos os funcionrios da tabela EMP que ganhem menos que 1500. Cancele a transao. R: DELETE FROM EMP WHERE SAL < 1500; ROLLBACK; 12) Delete todos os departamentos localizados em BOSTON. Cancele a transao. R: DELETE FROM DEPT WHERE LOC = 'BOSTON'; ROLLBACK;
IBTA 2765
BD Modelagem de Banco de Dados Semestre III
13) Altere o nome do funcionrio JOO para JOHN. R: Update EMP Set nome = JOHN WHERE ENAME = JOO; 14) Alter para 3000 o salrio de todos os funcionrios que ganham menos do que 2000. Desfaa a transao. R: Update EMP Set sal = 3000 Where sal < 2000; Rollback; 15) Exclua todos os funcionrios que trabalham no departamento de nmero 20, desfaa a transao. R: Delete from EMP where deptno = 20; Rollback; 16) Selecione os campos (ename, job e sal) da tabela EMP R: SELECT ENAME, JOB, SAL FROM EMP; 17) Selecione o campo ename da tabela EMP e formate a apresentao desta consulta de forma que a sada seja a seguinte: EMPLOYEE KING EMPLOYEE ALAN EMPLOYEE CLARK R: SELECT EMPLOYEE || ENAME FROM EMP;
IBTA 2766
BD Modelagem de Banco de Dados Semestre III
1 Crie uma tabela com o usurio SCOTT com as seguintes caractersticas: Nome da tabela : XXX Campos : CODIGO NUMBER(5), NOME VARCHAR2(50), SALARIO NUMBER(19,2) e SEXO CHAR(1). R: CREATE TABLE XXX (CODIGO NUMBER(5), NOME VARCHAR2(50), SALARIO NUMBER(19,2), SEXO CHAR(1));
2 Inserir 5 linhas quaisquer na tabela previamente criada (XXX) e commitar ao final das inseres. R: INSERT INTO XXX (CODIGO, NOME, SALARIO, SEXO) VALUES (1, ARNALDO, 10000, M); INSERT INTO XXX (CODIGO, NOME, SALARIO, SEXO) VALUES (2, LCIA, 11000, F); INSERT INTO XXX (CODIGO, NOME, SALARIO, SEXO) VALUES (3, GABRIELA, 11000, F); INSERT INTO XXX (CODIGO, NOME, SALARIO, SEXO) VALUES (4, MILTON, 6000, M); INSERT INTO XXX (CODIGO, NOME, SALARIO, SEXO) VALUES (5, RICARDO, 4000, M); INSERT INTO XXX (CODIGO, NOME, SALARIO, SEXO) VALUES (6, JAIME, 4000, M); COMMIT;
IBTA 2766
BD Modelagem de Banco de Dados Semestre III
3 Adicione uma coluna nova na tabela XXX. CARGO VARCHAR2(30) R: ALTER TABLE XXX ADD CARGO VARCHAR2(30); 4 Modifique o tamanho da coluna criada NOME para o tamanho de 30. R: ALTER TABLE XXX MODIFY (NOME VARCHAR2(20)); ERROR at line 2: ORA-01441: column to be modified must be empty to decrease column length O erro acima deve ter acontecido, o que voc dever fazer para alterar o tamanho da coluna? UPDATE XXX SET NOME = NULL; COMMIT; ALTER TABLE XXX MODIFY (NOME VARCHAR2(20)); 5 Coloque novamente os valores na tabela XXX conforme antes estavam. R: DELETE FROM XXX; INSERT INTO XXX (CODIGO, NOME, SALARIO, SEXO) (SELECT CODIGO, NOME, SALARIO, SEXO FROM YYY); COMMIT; 6 Preencha os valores da tabela XXX na coluna CARGO conforme segue: 1 DBA ORACLE 4 - DBA DB2 2 DBA ORACLE 5 - DBA DB2 3 DBA ORACLE 6 - DBA SQL SERVER R: UPDATE XXX SET CARGO = DBA ORACLE WHERE CODIGO = 1; UPDATE XXX SET CARGO = DBA ORACLE WHERE CODIGO = 2; UPDATE XXX SET CARGO = DBA ORACLE WHERE CODIGO = 3; UPDATE XXX SET CARGO = DBA DB2
2
IBTA 2766
BD Modelagem de Banco de Dados Semestre III
WHERE CODIGO = 4; UPDATE XXX SET CARGO = DBA DB2 WHERE CODIGO = 5; UPDATE XXX SET CARGO = DBA SQL SERVER WHERE CODIGO = 6; COMMIT; 7 Coloque a coluna SEXO da tabela XXX como no usada. R: ALTER TABLE xxx SET UNUSED (SEXO); 8 Elimine as colunas que no esto sendo usadas. R: ALTER TABLE xxx DROP UNUSED COLUMNS; 9 Adicione uma restrio nica(UNIQUE KEY) com o nome de XXX_NOME_UK na coluna NOME da tabela XXX. (Testar a condio). R: ALTER TABLE XXX ADD CONSTRAINT XXX_NOME_UK UNIQUE(NOME); 10 Adicione uma restrio Check(Check Constraint) com o nome de XXX_SALARIO_CK na coluna SALARIO da tabela XXX, onde o salario deve ser maior que 500. (Testar a condio). R: ALTER TABLE XXX ADD CONSTRAINT XXX_SALARIO_CK CHECK (SALARIO > 500); 11 Adicione uma restrio Chave Primria(PRIMARY KEY) com o nome de XXX_CODIGO_PK na coluna CODIGO da tabela XXX. (Testar a condio). R: ALTER TABLE XXX ADD CONSTRAINT XXX_CODIGO_PK PRIMARY KEY(CODIGO); 12 Adicione uma restrio No nula(NOT NULL) com o nome de XXX_CARGO_NN na coluna CARGO da tabela XXX. (Testar a condio). R: ALTER TABLE XXX MODIFY CARGO CONSTRAINT XXX_CARGO_NN NOT NULL;
IBTA 2766
BD Modelagem de Banco de Dados Semestre III
13 - Adicione uma restrio No nula(NOT NULL) com o nome de XXX_SEXO_NN na coluna SEXO da tabela XXX. (Testar a condio). R: ALTER TABLE XXX MODIFY SEXO CONSTRAINT XXX_SEXO_NN NOT NULL; 14 - Elimine a restrio No nula(NOT NULL) com o nome de XXX_SEXO_NN na coluna SEXO da tabela XXX. (Testar a condio). R: ALTER TABLE XXX DROP CONSTRAINT XXX_SEXO_NN; 15 Desative a restrio No nula(NOT NULL) com o nome de XXX_CARGO_NN na coluna CARGO da tabela XXX. (Testar a condio). R: ALTER TABLE XXX DISABLE CONSTRAINT XXX_CARGO_NN; 16 - Ative novamente a restrio No nula(NOT NULL) com o nome de XXX_CARGO_NN na coluna CARGO da tabela XXX. (Testar a condio). R: ALTER TABLE XXX ENABLE CONSTRAINT XXX_CARGO_NN; 17 Selecione o nome, o tipo e o status da restrio criada para a tabela XXX. R: SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, STATUS FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'XXX'; 18 Elimine todas as linhas da tabela sem o uso do comando DELETE R: TRUNCATE TABLE xxx; 19 Elimine a tabela XXX. R: Drop table XXX.
IBTA 2767
BD Modelagem de Banco de Dados Semestre III
1) Exiba o maior salrio dos funcionrios que trabalham no departamento 10. R: SElect max(sal) from emp where deptno = 10; 2) Exiba a mdia salarial entre todos os funcionrios. R: SElect avg(sal) from emp; 3) Exiba a soma entre todos os salrios dos funcionrios que trabalham no mesmo departamento que o funcionrio SMITH. R: SElect sum(sal) from emp where deptno = (select deptno from emp where ename = SMITH); 4) Exiba os salrios menor, maior, mdio e a soma de todos os salrios de todos os funcionrios, colocando os apelidos (Labels ou Alias) Mnimo, Mximo, Mdio e Total respectivamente. R: SELECT MIN(SAL) MINIMO, MAX(SAL) MXIMO, AVG(SAL) MEDIA, SUM(SAL) TOTAL FROM EMP; 5) Exiba a data de hoje o mesmo formato do exemplo: 13 de Setembro de 2004 Horrio - 12:32:15 obs.: Devem ser utilizadas as funes para converso de datas e exibio da data do Sistema Operacional. R: Select to_char(sysdate, dd de month de YYYY Horrio HH24:MI:SS) from dual; 6) Exiba o salrio de todos os funcionrios, sem repetio, de acordo com o exemplo: $ 99,999.99 R: Select distinct to_char(sal, $ 99,999.99) from emp; 7) Crie uma consulta para exibir o nmero de pessoas com o mesmo cargo. R: SELECT JOB, COUNT(*) FROM EMP GROUP BY JOB;
IBTA 2767
BD Modelagem de Banco de Dados Semestre III
8) Selecione as medias salriais de cada departamento R: SELECT DEPTNO, AVG(SAL) FROM EMP GROUP BY DEPTNO; 9) Selecione os maiores salrios agrupados por departamento e verifique se nestes grupos o salrio maior ou igual a 2000 R: SELECT DEPTNO, MAX(SAL) FROM EMP GROUP BY DEPTNO HAVING MAX(SAL) >= 2000; 10) Exiba o nome do gerente e a quantidade de funcionrios que trabalham para o mesmo gerente. R: Select g.ename, count(e.mgr) From emp g, emp e Where e.mgr = g.empno Group by g.ename
IBTA 2768
BD Modelagem de Banco de Dados Semestre III
Prtica 13 Exerccios envolvendo subconsulta Lembrete: Inicie o servio do Oracle Instrues: Estabelea conexo com o usurio SCOTT. Utilize as tabelas do usurio Scott.
1) Exiba a soma entre todos os salrios dos funcionrios que trabalham no mesmo departamento que o funcionrio SMITH. 2) Crie uma consulta para exibir o nome do funcionrio e a data de admisso de todos os funcionrios do mesmo departamento que Blake. Excluindo Blake. 3) Exiba o nome e o salrio dos funcionrios que trabalham para o gerente KING. 4) Exiba o nmero do departamento, o nome e o cargo de todos os funcionrios do departamento de Vendas (SALES) 5) Crie uma consulta para exibir o nmero e o nome de todos os funcionrios que recebem mais que o salrio mdio. Classifique os resultados, por salrio em ordem decrescente. 6) Criar consulta que mostre o nome do funcinrio, nmero do departamento e o salrio dos funcionrios cujo nmero do departamento e o salrio correspondem ao nmero do departamento e ao salrio de qualquer funcionrio que receba comisso. 7) Selecione o nome do empregado com o maior salrio do departamento SALES 8) Selecione o nome, salario e cargo dos funcionrios cujo cargo o mesmo do funcionrio CLARK com exceo deste mesmo. 9) Selecione o cdigo do departamento e as mdias salarias agrupadas por departamento onde a mdia salarial agrupada deve ser maior que a mdia salarial do departamento com o cdigo 20. 10) Crie a tabela EMP2 com base na tabela EMP, na criao popule a tabela com os registros de todos os funcionrios com cargo = CLERK 11) Crie a tabela EMP3 com base nas tabelas EMP e DEPT, na criao popule a tabela com os registros de todos os funcionrios que trabalham nos departamentos localizados em NEW YORK. A tabela EMP3 dever conter os campos empno, ename, job, sal, mgr, deptno, dname e loc
IBTA 2768
BD Modelagem de Banco de Dados Semestre III
12) Insira na tabela EMP2 todos os registros dos funcionrios que trabalham nos departamentos 10 ou 20 13) Altere os salrios dos funcionrios da tabela EMP3 que trabalham no departamento 20 para o valor da mdia salarial dos funcionrios que trabalham no departamento 30 da tabela emp. Desfaa a transao 14) Exclua todas as linhas da tabela EMP quando o cdigo do departamento for o mesmo cdigo de departamento do funcionrio 7839. Desfaa a transao.
IBTA 2769
BD Modelagem de Banco de Dados Semestre III
Prtica 14 Views, Sinnimos, Seqncias, ndices Lembrete: Inicie o Servio do Banco Instrues: Realize conexo com o usurio Scott
1 Crie uma view VW_XXX com os campos NOME, CARGO, SALARIO da tabela XXX, onde os valores salariais sejam superiores a 6000. R: CREATE VIEW VW_XXX AS SELECT NOME, CARGO, SALARIO FROM XXX WHERE SALARIO > 6000;
2 - Crie uma view VW_XXX2 com os campos CODIGO, SEXO da tabela XXX, onde os valores salariais sejam inferiores ou iguais a 6000. R: CREATE VIEW VW_XXX2 AS SELECT CODIGO, SEXO FROM XXX WHERE SALARIO <= 6000;
3 Selecione as linhas das views criadas acima VW_XXX e VW_XXX2. R: SELECT * FROM VW_XXX; SELECT * FROM VW_XXX2; 4 Modifique a view VW_XXX2 para que esta contenha alm das colunas j existentes adicione a coluna NOME, mantendo as mesmas restries j existentes. R: CREATE OR REPLACE VIEW VW_XXX2 AS SELECT CODIGO, SEXO, NOME FROM XXX WHERE SALARIO <= 6000; 5 Limite as operaes da view VW_XXX apenas as condies que a ela foram apresentadas usando a clusula WITH CHECK OPTION. Testar condio com o comando que segue: UPDATE VW_XXX SET SALARIO = 5000; R: CREATE OR REPLACE VIEW VW_XXX AS SELECT NOME, CARGO, SALARIO FROM XXX WHERE SALARIO > 6000 WITH CHECK OPTION;
IBTA 2769
BD Modelagem de Banco de Dados Semestre III
6 Limitar os usurios a apenas selecionar as linhas da view VW_XXX2. (Usurios no podem emitir DMLs nesta view) R: CREATE OR REPLACE VIEW VW_XXX2 AS SELECT CODIGO, SEXO, NOME FROM XXX WHERE SALARIO <= 6000 WITH READ ONLY; 7 Remover a view VW_XXX2. R: DROP VIEW VW_XXX2; 8 Selecione o nome e o texto da view criada por voc. R: SELECT VIEW_NAME, TEXT FROM USER_VIEWS; 9 Crie uma sequncia (SEQUENCE) com o nome SQ_CODIGO_XXX, que inicie em 100 e que incremente de 10 em 10 unidades. R: CREATE SEQUENCE SQ_CODIGO_XXX INCREMENT BY 10 START WITH 100; 10 Consulte as sequencias criadas pelo usurio SCOTT. R: SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER FROM USER_SEQUENCES; 11 Insira 2 novas linhas na tabela YYY, usando no campo CODIGO os valores trazidos da Sequencia (SEQUENCE). Efetive a operao. R: INSERT INTO YYY (CODIGO, NOME, SALARIO, SEXO) VALUES (SQ_CODIGO_XXX.NEXTVAL, JOAO, 3000, M); INSERT INTO YYY (CODIGO, NOME, SALARIO, SEXO) VALUES (SQ_CODIGO_XXX.NEXTVAL, MARIA, 3000, F); COMMIT; 12 Altere a sequencia (SEQUENCE) para deixar 30 valores em cache e coloque o valor mximo da sequencia para 99999. R: ALTER SEQUENCE SQ_CODIGO_XXX INCREMENT BY 10
IBTA 2769
BD Modelagem de Banco de Dados Semestre III
MAXVALUE 99999 CACHE 30; 13 Remova a sequencia (SEQUENCE) SQ_CODIGO_XXX do usurio SCOTT. R: DROP SEQUENCE SQ_CODIGO_XXX; 14 Crie um ndice composto com o nome de IDX_NOMECARGO_XXX para os campos NOME e CARGO da tabela XXX. R: CREATE INDEX IDX_NOMECARGO_XXX ON XXX (NOME, CARGO); 15 - Consulte o ndice criado e quais colunas foram usadas para sua criao nas views do sistema. R: SELECT INDEX_NAME, INDEX_TYPE, TABLE_NAME, STATUS FROM USER_INDEXES; SELECT INDEX_NAME, COLUMN_LENGTH FROM USER_IND_COLUMNS; TABLE_NAME, COLUMN_NAME,
16 Elimine o ndice criado IDX_NOMECARGO_XXX. R: DROP INDEX IDX_NOMECARGO_XXX; 17 Crie um Sinnimo com o nome de VPX para a view VW_XXX. (Testar sinnimo com comando SQL). R: CREATE SYNONYM VPX FOR VW_XXX; SELECT * FROM VPX; 18 Elimine o Sinnimo VPX. R: DROP SYNONYM VPX;
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
NOTA FISCAL Numero Cliente Nome vendedor Cdigo vendedor Produto Valor total Data Entrega
Dados sobre o problema: O cliente ao efetuar uma compra tem seus dados pessoais cadastrados. Existe a necessidade de se verificar a forma de pagamento, que pode ser a vista ou a prazo e em ambos os casos existe a possibilidade de faze-lo com cheque, dinheiro ou carto de crdito O produto pode ser retirado pelo cliente ou entregue em um endereo que pode ou no ser o seu endereo pessoal A venda gera um pagamento de comisso ao vendedor, o percentual de venda de 2% do valor da compra Os produtos ficam armazenados em um estoque. O vendedor antes de efetuar uma venda consulta o estoque Toda venda gera uma nota fiscal que deve conter os dados do vendedor, do cliente, da entrega, dos produtos, data e nmero da nf, valor total de cada produto, valor total geral Todo vendedor possui um gerente, que tambm deve ser cadastrado como sendo um funcionrio. Com base nestas informaes, verifique se as tabelas indicadas so suficientes para o armazenamento dos dados necessrios a construo de uma base de dados que permita o funcionamento adequado de uma loja de eletrodomsticos e:
Modelo do Banco 1) A partir do Modelo Fsico desenvolvido do ERWIN, gere os scripts de criao das tabelas 2) Cadastre: os clientes:
1
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
Siliane Florzinha Joo Bonzo Leandro Grando Os vendedores Thiago Vende Tudo Ari Bab Pedro Pedrinha Os produtos Geladeira - preo 1200,00 Fogo preo 500,00 Secador de cabelos 90,00 Barbeador eltrico 120,00 Os demais dados devem ser complementados de acordo com a sua criatividade! Todas as tabelas criadas devem conter pelo menos 3 registros COMPLETOS 3) Inclua uma linha na tabela CLIENTE contendo os seus dados. 4) Altere o valor Do produto geladeira para 1288,00 5) Altere o preo de todos os produtos acrescentando 10 do seu valor original. 6) Cadastre o produto Microcomputador com valor de 1500,00 7) Exclua o produto Barbeador Eltrico
11.14 Consultas 8) Exiba o nome de todos os clientes atendidos pelo vendedor Thiago Vende Tudo 9) Exiba o nome dos vendedores e dos seus gerentes. 10) Exiba o nome dos vendedores e a soma das suas comisses no ms de julho 11) Exiba o nome dos clientes e o valor mdio das suas compras 12) Exiba a lista de clientes aniversariantes do ms corrente. 13) Exiba a lista com os 5 melhores vendedores da loja. 14) Exiba o nome e endereo de todos os clientes cujo nome iniciado com a letra A 15) Exiba todos os dados da nota fiscal para uma determinada compra. 16) Exiba todas as entregas programadas para o data corrente. 17) Exiba os nmeros das notas fiscais e os nomes dos clientes cujas notas foram emitidas na data corrente.
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
R: Soluo apresentada pelos alunos -- Alexandre Bevilacqua Pacheco e Ricardo de Moraes Peretto ( turma 3Bd2 2s2003) Foi utilizada a ferramenta Erwin para modelagem e gerao dos scripts de criao das tabelas
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
DROP TABLE cliente CASCADE CONSTRAINTS; CREATE TABLE cliente ( id_cliente number(5)CONSTRAINT PK_cliente PRIMARY KEY, nome varchar2(40) NOT NULL, cpf number(9) NOT NULL, cpf_controle number(2) NOT NULL, rg varchar2(15) NOT NULL, end varchar2(50) NOT NULL, dt_nasc date NOT NULL );
DROP TABLE fone_cliente CASCADE CONSTRAINTS; CREATE TABLE fone_cliente ( id_cliente number(5), ddd number(3), numero number(15), CONSTRAINT PK_fone_cliente PRIMARY KEY(id_cliente, ddd, numero), CONSTRAINT FK_fone_cliente FOREIGN KEY(id_cliente) REFERENCES cliente(id_cliente) );
DROP TABLE funcionario CASCADE CONSTRAINTS; CREATE TABLE funcionario ( id_funcionario number(5) CONSTRAINT PK_funcionario PRIMARY KEY, nome varchar2(40) NOT NULL, dt_admissao date NOT NULL );
DROP TABLE gerente CASCADE CONSTRAINTS; CREATE TABLE gerente ( id_gerente number(5) CONSTRAINT PK_gerente PRIMARY KEY, CONSTRAINT FK_gerente_funcionario FOREIGN KEY(id_gerente) REFERENCES funcionario(id_funcionario) );
DROP TABLE vendedor CASCADE CONSTRAINTS; CREATE TABLE vendedor ( id_vendedor number(5)CoNSTRAINT PK_vendedor PRIMARY KEY, id_gerente number(5) NOT NULL,
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
comissao number(3) NOT NULL, CONSTRAINT FK_vendedor_funcionario FOREIGN KEY(id_vendedor) REFERENCES funcionario(id_funcionario), CONSTRAINT FK_vendedor_gerente FOREIGN KEY(id_gerente) REFERENCES gerente(id_gerente) );
DROP TABLE produto_estocado CASCADE CONSTRAINTS; CREATE TABLE produto_estocado ( id_produto_estocado number(5) CONSTRAINT PK_produto PRIMARY KEY, descricao varchar2(40) NOT NULL, valor_unitario number(7,2) NOT NULL, quantidade number(10) NOT NULL );
DROP TABLE tipo_pgto CASCADE CONSTRAINTS; CREATE TABLE tipo_pgto ( id_tipo_pgto number(5)CONSTRAINT PK_tipo_pgto PRIMARY KEY, descricao varchar2(20) NOT NULL );
DROP TABLE forma_pgto CASCADE CONSTRAINTS; CREATE TABLE forma_pgto ( id_forma_pgto number(5) CONSTRAINT PK_forma_pgto PRIMARY KEY, descricao varchar2(20) NOT NULL );
DROP TABLE nfiscal CASCADE CONSTRAINTS; CREATE TABLE nfiscal ( id_nfiscal PK_nfiscal PRIMARY KEY, id_vendedor NULL, id_cliente NULL, id_forma_pgto NULL, id_tipo_pgto NULL,
number(5) CONSTRAINT number(5) number(5) number(5) number(5) NOT NOT NOT NOT
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
dt NULL, end_entrega varchar2(50) NOT NULL, CONSTRAINT FK_nfiscal_vendedor KEY(id_vendedor) vendedor(id_vendedor), CONSTRAINT FK_nfiscal_cliente KEY(id_cliente) cliente(id_cliente), CONSTRAINT FK_nfiscal_forma_pgto FOREIGN forma_pgto(id_forma_pgto), CONSTRAINT FK_nfiscal_tipo_pgto tipo_pgto(id_tipo_pgto) );
date
NOT
FOREIGN
DROP TABLE itens_nf CASCADE CONSTRAINTS; CREATE TABLE itens_nf ( id_nfiscal number(5) NOT NULL, id_produto_estocado number(5) NOT NULL, qtde number(5) NOT NULL, valor_unitario number(7,2) NOT NULL, CONSTRAINT PK_itens_nf PRIMARY KEY(id_nfiscal, id_produto_estocado), CONSTRAINT FK_nf_prod_nf FOREIGN KEY(id_nfiscal) REFERENCES nfiscal(id_nfiscal), CONSTRAINT FK_nf_prod_prod FOREIGN KEY(id_produto_estocado) REFERENCES produto_estocado(id_produto_estocado) );
-- SEQUENCIAS DROP DROP DROP DROP DROP DROP DROP SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE sq_cliente; sq_fone_cliente; sq_funcionario; sq_produto_estocado; sq_tipo_pgto; sq_forma_pgto; sq_nfiscal;
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
Instrues DML -- INSERTS TABELA CLIENTE INSERT INTO cliente VALUES ( sq_cliente.NEXTVAL , 'Siliane Florzinha' , 123456789 , 00 , '12.345.678-X' , 'Rua Estela, 10' , '01/01/1971' ); INSERT INTO cliente VALUES ( sq_cliente.NEXTVAL , 'Joo Bonzo' , 223456789 , 00 , '22.345.678-X' , 'Rua Estela, 20' , '02/01/1971' ); INSERT INTO cliente VALUES ( sq_cliente.NEXTVAL , 'Leandro Grando ' , 323456789 , 00 , '32.345.678-X' , 'Rua Estela, 30' , '03/01/1971' ); INSERT INTO cliente VALUES ( sq_cliente.NEXTVAL , 'Cicrano de Sousa' , 423456789 , 00 , '42.345.678-X' , 'Rua Estela, 40' , '04/01/1971' ); INSERT INTO cliente VALUES ( sq_cliente.NEXTVAL , 'Beltrano da Silva' , 523456789 , 00 , '52.345.678-X' , 'Rua Estela, 50' , '05/01/1971' ); -- INSERTS TABELA FONE_CLIENTE INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO fone_cliente fone_cliente fone_cliente fone_cliente fone_cliente VALUES VALUES VALUES VALUES VALUES ( ( ( ( ( 2 3 2 4 1 , , , , , 11 11 11 11 11 , , , , , 12345678 22345678 32345678 42345678 52345678 ); ); ); ); );
-- INSERTS TABELA FUNCIONARIO INSERT INTO funcionario VALUES ( sq_funcionario.NEXTVAL , 'Thiago Vende Tudo' , '12/12/2002' ); INSERT INTO funcionario VALUES ( sq_funcionario.NEXTVAL , 'Ari Bab' , '13/11/2001' ); INSERT INTO funcionario VALUES ( sq_funcionario.NEXTVAL , 'Pedro Pedrinha' , '14/01/2004' ); INSERT INTO funcionario VALUES ( sq_funcionario.NEXTVAL , 'Brano de Souza' , '14/05/2001' ); INSERT INTO funcionario VALUES ( sq_funcionario.NEXTVAL , 'Bruno de Souza' , '16/02/2002');
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
INSERT INTO funcionario VALUES ( sq_funcionario.NEXTVAL , 'Juao Alemao' , '20/01/1983'); -- INSERTS TABELA GERENTE INSERT INTO gerente VALUES ( 2 ); INSERT INTO gerente VALUES ( 4 ); INSERT INTO gerente VALUES ( 6 ); -- INSERTS TABELA VENDEDOR INSERT INTO vendedor VALUES ( 1 , 2 , 5 ); INSERT INTO vendedor VALUES ( 3 , 2 , 6 ); INSERT INTO vendedor VALUES ( 5 , 4 , 7 ); -- INSERTS TABELA PRODUTO_ESTOCADO INSERT INTO produto_estocado VALUES ( , 'Geladeira' , 1200 , 10 ); INSERT INTO produto_estocado VALUES ( , 'Fogo' , 500 , 5 ); INSERT INTO produto_estocado VALUES ( , 'Microondas' , 1100 , 10 ); INSERT INTO produto_estocado VALUES ( , 'PlayStation2' , 900 , 15 ); INSERT INTO produto_estocado VALUES ( , 'Computador' , 3200 , 50 ); INSERT INTO produto_estocado VALUES ( , 'NoteBook' , 6400 , 10 ); INSERT INTO produto_estocado VALUES ( , 'Handheld' , 900 , 5 ); INSERT INTO produto_estocado VALUES ( , 'Secador de cabelos' , 90 , 60 ); INSERT INTO produto_estocado VALUES ( , 'Barbeador eltrico' , 120 , 40 ); -- INSERTS TABELA TIPO_PGTO INSERT INSERT INSERT ); INSERT INSERT INSERT INTO tipo_pgto VALUES ( sq_tipo_pgto.NEXTVAL , 'cartao' ); INTO tipo_pgto VALUES ( sq_tipo_pgto.NEXTVAL , 'cheque' ); INTO tipo_pgto VALUES ( sq_tipo_pgto.NEXTVAL , 'dinheiro' INTO tipo_pgto VALUES ( sq_tipo_pgto.NEXTVAL , 'fiado' ); INTO tipo_pgto VALUES ( sq_tipo_pgto.NEXTVAL , 'boleto' ); INTO tipo_pgto VALUES ( sq_tipo_pgto.NEXTVAL , 'carne' ); sq_produto_estocado.NEXTVAL sq_produto_estocado.NEXTVAL sq_produto_estocado.NEXTVAL sq_produto_estocado.NEXTVAL sq_produto_estocado.NEXTVAL sq_produto_estocado.NEXTVAL sq_produto_estocado.NEXTVAL sq_produto_estocado.NEXTVAL sq_produto_estocado.NEXTVAL
10
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
-- INSERTS TABELA FORMA_PGTO INSERT INTO forma_pgto VALUES ( sq_forma_pgto.NEXTVAL , 'vista' ); INSERT INTO forma_pgto VALUES ( sq_forma_pgto.NEXTVAL , 'prazo' ); INSERT INTO forma_pgto VALUES ( sq_forma_pgto.NEXTVAL , 'outra' ); -- INSERTS TABELA NFISCAL INSERT INTO nfiscal '05/06/2004' , 'RUA INSERT INTO nfiscal '15/04/2004' , 'RUA INSERT INTO nfiscal '20/06/2004' , 'Rua VALUES ( sq_nfiscal.NEXTVAL DA MADRUGADA, 3965' ); VALUES ( sq_nfiscal.NEXTVAL SEI LA O QUE, 6815 BLOCO R' VALUES ( sq_nfiscal.NEXTVAL Tal, 199' ); , 1 , 2 , 1 , 4 , , 5 , 3 , 2 , 6 , ); , 1 , 1 , 3 , 5 ,
-- INSERTS TABELA ITENS_NF INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO itens_nf itens_nf itens_nf itens_nf itens_nf itens_nf itens_nf VALUES VALUES VALUES VALUES VALUES VALUES VALUES ( ( ( ( ( ( ( 1 1 1 2 2 2 2 , , , , , , , 1 2 3 4 5 6 7 , , , , , , , 1 1 1 2 1 3 2 , , , , , , , 1200 ); 500 ); 1100 ); 900 ); 3966 ); 6173 ); 900 );
--- CONSULTAS SIMPLES SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT * * * * * * * * * * FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM cliente; fone_cliente; funcionario; gerente; vendedor; produto_estocado; tipo_pgto; forma_pgto; nfiscal; itens_nf;
11
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
VALUES ( sq_cliente.NEXTVAL , 'Nova linha' , 111111985 , 11 , '30.909.808-8' , 'R. tal, 10' , '01/01/1976' ); UPDATE produto_estocado SET valor_unitario=1288.00 WHERE UPPER(descricao) = 'GELADEIRA';
Consultas SELECT c.nome NomeCliente FROM cliente c, nfiscal n, funcionario f WHERE c.id_cliente = n.id_cliente AND n.id_vendedor = f.id_funcionario AND UPPER(f.nome) = 'THIAGO VENDE TUDO'; SELECT ven.nome nomeVendedor, ger.nome nomeGerente FROM ( SELECT v.id_vendedor, v.id_gerente, f.nome FROM vendedor v, funcionario f WHERE v.id_vendedor=f.id_funcionario) ven, (SELECT g.id_gerente, f.nome FROM gerente g, funcionario f WHERE g.id_gerente=f.id_funcionario ) ger WHERE ven.id_gerente = ger.id_gerente;
SELECT func.nome, venda.comissao FROM ( SELECT v.id_vendedor, f.nome FROM vendedor v, funcionario f WHERE v.id_vendedor=f.id_funcionario) func, ( SELECT n.id_vendedor, sum(com.comi) comissao FROM nfiscal n, (SELECT id_nfiscal, (sum(valor_unitario*qtde)*0.02) comi FROM itens_nf GROUP BY id_nfiscal) com WHERE n.id_nfiscal = com.id_nfiscal AND TO_CHAR(n.dt, 'mm')='06' GROUP BY n.id_vendedor) venda WHERE func.id_vendedor = venda.id_vendedor;
SELECT c.nome, comp.mediaCompra FROM cliente c,( SELECT n.id_cliente, AVG(nota.valor) mediaCompra
12
IBTA 2770
BD Modelagem de Banco de Dados Semestre III
FROM nfiscal n, ( SELECT id_nfiscal, sum(valor_unitario*qtde) valor FROM itens_nf GROUP BY id_nfiscal) nota WHERE n.id_nfiscal = nota.id_nfiscal GROUP BY n.id_cliente) comp WHERE c.id_cliente = comp.id_cliente; SELECT ven.nome, 'Funcionario Ouro' mensagem FROM ( SELECT v.id_vendedor, f.nome, f.dt_admissao FROM vendedor v, funcionario f WHERE v.id_vendedor = f.id_funcionario AND TO_CHAR(f.dt_admissao, 'yyyy') < 1985) ven UNION SELECT ven.nome, 'Funcionario Prata' mensagem FROM ( SELECT v.id_vendedor, f.nome, f.dt_admissao FROM vendedor v, funcionario f WHERE v.id_vendedor = f.id_funcionario AND TO_CHAR(f.dt_admissao, 'yyyy') BETWEEN 1986 AND 2002) ven UNION SELECT ven.nome, 'Funcionario Bronze' mensagem FROM ( SELECT v.id_vendedor, f.nome, f.dt_admissao FROM vendedor v, funcionario f WHERE v.id_vendedor = f.id_funcionario AND TO_CHAR(f.dt_admissao, 'yyyy') > 2002) ven;
13