introdução a banco de dados à modelagem e projeto de banco de dados

88
Março 2013 - FUCAPI Introdução a banco de dados à Modelagem e Projeto de Banco de Dados Marcelo Mendes BANCO DE DADOS

Upload: andres

Post on 23-Feb-2016

74 views

Category:

Documents


2 download

DESCRIPTION

Introdução a banco de dados à Modelagem e Projeto de Banco de Dados. Marcelo Mendes. BANCO DE DADOS. OBJETIVOS:. Modelagem de dados de sistemas típicos através do Modelo Entidade Relacionamento. Conceitos e projeto lógico do Modelo Relacional Práticas de Modelagem e Projeto. BIBLIOGRAFIA. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Março 2013 - FUCAPI

Introdução a banco de dados à Modelagem e Projeto de Banco de Dados

Marcelo Mendes

BANCO DE DADOS

Page 2: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

OBJETIVOS:

Modelagem de dados de sistemas típicos através do Modelo Entidade Relacionamento.

Conceitos e projeto lógico do Modelo Relacional

Práticas de Modelagem e Projeto

Fucapi

Page 3: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

BIBLIOGRAFIA Fundamentals of Database Systems

Elmasri, R; Navathe, SBenjamin Cummings, 1994

Sistemas de banco de DadosKorth, H. F.; Silberschatz, A; Sudarshan, SMakkron Books, 1999

Introdução a Sistemas de Bancos de DadosDate, C. J. , Editora Campus, 2000

Fucapi

Page 4: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

BANCO DE DADOS “É uma coleção de dados inter-relacionados, representando

informações sobre um domínio específico (conceito geral) Representa aspectos do mundo real. Mudanças no mundo

real são refletidas no BD É uma coleção lógica e coerente de dados com

relacionamentos intrínsecos; É projetado, construído, e mantido para uma proposta

específica. É direcionado a um grupo de usuários/aplicação Pode ter qualquer tamanho/complexidade

Fucapi

Page 5: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MODELOS DE DADOS

Fucapi

Mundo Real SoluçãoProcesso de Solução

Modelo

Modelo é a representação abstrata e simplificada de uma determinada realidade. É um conjunto de conceitos para descrever os dados, de restrições e relacionamento entre esses dados.

Page 6: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

BANCO DE DADOS

Fucapi

É um conjunto de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação.

Um banco de dados normalmente agrupa registros utilizáveis para um mesmo fim.

Um banco de dados é usualmente mantido e acessado por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD).

Normalmente um SGBD adota um modelo de dados, de forma pura, reduzida ou estendida. Muitas vezes o termo banco de dados é usado, de forma errônea, como sinônimo de SGDB.

Page 7: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

BANCO DE DADOS

Fucapi

Os sistemas de gestão de banco de dados possuem características especiais para o armazenamento, classificação, gestão da integridade e recuperação dos dados.

Com a evolução de padrões de conectividade entre as tabelas de um banco de dados e programas desenvolvidos em linguagens como Java, Delphi, Visual Basic, C++ etc.

Como hoje em dia a maioria das linguagens de programação fazem ligações a bancos de dados, a apresentação destes tem ficado cada vez mais a critério dos meios de programação, fazendo com que os bancos de dados deixem de restringir-se às pesquisas básicas, dando lugar ao compartilhamento, em tempo real, de informações, mecanismos de busca inteligentes e permissividade de acesso hierarquizada.

Page 8: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

SGBD

Fucapi

Sistema Gerenciador de Bancos de Dados (SGBD):Software construıdo para facilitar as atividades de definição,construção e manipulação de bancos de dados;

Consistem em uma coleção de dados inter-relacionadose de um conjunto de programaspara acessá-los

Sistema de Bancos de Dados: Banco de Dados + Softwareque o manipula

Page 9: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Objetivos do SGBD

Fucapi

Prover um ambiente que seja conveniente e eficiente para recuperar e armazenar informações de Bancos de Dados.

Eliminar ou ReduzirRedundância e inconsistência de dadosDificuldade no acesso aos dadosIsolamento dos dados Anomalias de acesso concorrenteProblemas de segurança

Abstração de dadosSimplifica a interação do usuário com o Sistema

Page 10: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

SGBD

Fucapi

Page 11: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Funções do SGBD

Fucapi

1.Controle de Redundância;

2. Compartilhamento de Dados;

3. Controle de Acesso aos Dados;

4. Múltiplas Interfaces;

5. Representação de associações complexas;

6. Garantia de restrições de Integridade;

7. Recuperação de falhas

Page 12: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MODELOS DE DADOS

Fucapi a1

Modelo dosistema na mente do cliente

Modelo de Entidade do Modelo do cliente

Representação Tabular do modelode entidade

Server

Tabelas no disco

Page 13: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Níveis de Abstração de BD

Fucapi

Modelo Entidade Relacionamento

Modelo Relacional-Objeto Relacional

Mundo Real

Nível Conceitual

nível lógico

nível físico

Page 14: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Níveis de Abstração de BD

Fucapi

Modelo conceitualÉ a descrição do BD de maneira independente ao SGBD, ou seja, define quais os dados que aparecerão no BD, mas sem se importar com a implementação que se dará ao BD. Desta forma, há uma abstração em nível de SGBD.Uma das técnicas mais utilizadas dentre os profissionais da área é a abordagem entidade-relacionamento (ER), onde o modelo é representado graficamente através do diagrama entidade-relacionamento (DER) .

Page 15: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Níveis de Abstração de BD

Fucapi

Modelo LógicoDescreve o BD no nível do SGBD, ou seja, depende do tipo particular de SGBD que será usado. Não podemos confundir com o Software que será usado. O tipo de SGBD que o modelo lógico trata é se o mesmo é relacional, orientado a objetos, hierárquico, etc.Abordaremos o SGBD relacional, por serem os mais difundidos. Nele, os dados são organizados em tabelas.

Page 16: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Níveis de Abstração de BD

Fucapi

Page 17: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Níveis de Abstração de BD

Fucapi

O modelo lógico do BD relacional deve definir quais as tabelas e o nome das colunas que compõem estas tabelas.Para o nosso exemplo, poderíamos definir nosso modelo lógico conforme o seguinte:

Aluno(mat_aluno, nome, endereco)Turma (cod_turma, sala, periodo)

É importante salientar que os detalhes internos de armazenamento, por exemplo, não são descritos no modelo lógico, pois estas informações fazem parte do modelo físico, que nada mais é que a tradução do modelo lógico para a linguagem do software escolhido para implementar o sistema. 

Page 18: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Níveis de Abstração de BD

Fucapi

Nível físico: o nível mais baixo de abstração descreve como os dados estão realmente armazenados. No nível físico, complexas estruturas de dados de baixo nível são descritas em detalhes;

É importante salientar que os detalhes internos de armazenamento, por exemplo, não são descritos no modelo lógico, pois estas informações fazem parte do modelo físico, que nada mais é que a tradução do modelo lógico para a linguagem do software escolhido para implementar o sistema.

Page 19: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Níveis de Abstração de BD

Fucapi

Projeto de Banco de DadosNOME: FuncionáriosOBJETIVO: Armazena informações referentes aos funcionários.

Nome Tipo Tam PK FK Referência Null Descrição

FUN_CODIGO INTEGER 10 S - - - Atributo único gerado automaticamente para identificar o funcionário.

FUN_NOME VARCHAR 50 - - - - Nome do funcionário

FUN_DATA_NASCIMENTO

DATE - - - - - Data de nascimento do funcionário.

Page 20: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional

Fucapi

Conceito

A Álgebra Relacional é uma linguagem de consulta formal, porém procedimental, ou seja, o usuário dá as instruções ao sistema para que o mesmo realize uma seqüência de operações na base de dados para calcular o resultado desejado.

Page 21: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional

Fucapi

A discussão sobre algumas operações básicas de álgebra relacional realizada a seguir considera um banco de dados composto pelas seguintes relações:

funcionário (NrMatric, NmFunc, DtAdm, Sexo, CdCargo, CdDepto)cargo (CdCargo, NmCargo, VrSalario)depto (CdDepto, NmDepto, Ramal)

Os atributos sublinhados com linha contínua indicam a chave primária de cada relação enquanto que aqueles sublinhados com linha pontilhada constituem chaves estrangeiras.

Page 22: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional

Fucapi

Page 23: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional

Fucapi

Estamos interessados em obter informações armazenadas nesse banco de dados, e para isso deveremos formular expressões em álgebra relacional combinando apenas algumas operações primitivas clássicas, que serão apresentadas uma a uma de forma implificada em termos de seu significado prático e notação. Toda operação relacional opera (age) sobre um ou mais conjuntos de dados e fornece como resultado um novo conjunto. Devido a essa característica, podemos combinar mais de uma operação relacional em uma única expressão algébrica, fazendo com que o resultado de uma operação seja utilizado como entrada para outra operação, aumentando com isso grandemente o poder dessa linguagem de consulta.Suponha que, inicialmente, precisamos obter o nome completo de todos os funcionários de nosso banco de dados. Para isso será necessário executar uma operação chamada Projeção.

Page 24: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional-Projeção

Fucapi

Geralmente indicada na literatura por (a letra grega pi) produz um conjunto onde há um elemento para cada elemento do conjunto de entrada, sendo que a estrutura dos membros do conjunto resultante é definida nos argumentos da operação. Pode ser entendida como uma operação que filtra as colunas de uma tabela. Por operar sobre apenas um conjunto de entrada, a projeção é classificada como uma operação unária.

Ex.: NmFunc (funcionário)essa expressão produz um conjunto contendo um elemento para cada funcionário, e cada elemento contém apenas a informação referente a NmFunc da relação funcionário original.

Page 25: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional-Projeção

Fucapi

Page 26: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional-Projeção

Fucapi

Agora estamos interessados em identificar todos os funcionários de sexo masculino existentes no banco de dados. É uma situação que não podemos resolver com projeções apenas, uma vez que deveremos descartar elementos do conjunto inicial. Para casos desse tipo existe uma operação relacional chamada Seleção.Seleção (ou Restrição)Indicada por s (a letra grega sigma), é uma operação que para um conjunto inicialfornecido como argumento, produz um subconjunto estruturalmente idêntico, mas apenas com os elementos do conjunto original que atendem a uma determinada condição (também chamada de predicado). A seleção pode ser entendida como uma operação que filtra as linhas de uma tabela, e é também uma operação unária, já que opera sobre um único conjunto de dados.

Ex.: Sexo = ‘M’ (funcionário)produz o conjunto dos elementos de funcionário que atendem ao predicado [Sexo = ‘M’], ou seja, representa um subconjunto dos funcionários para o qual essa condição é avaliada como verdadeira.

Page 27: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional-Projeção

Fucapi

Page 28: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional-Projeção

Fucapi

No caso de querermos descobrir o nome completo e a data de admissão de todos os funcionários do sexo feminino existentes na empresa, será necessário combinar uma projeção com uma seleção. Isso porque se decidirmos projetar as colunas desejadas diretamente a partir da relação funcionário, estaremos considerando também os elementos do sexo masculino, o que não queremos. Como a projeção não permite descartar linhas, apenas colunas, deveremos fornecer a essa operação o subconjunto resultante de uma filtragem (seleção) da relação de funcionários original, como mostram as duas figuras a seguir, que representam as relações e as operações de duas maneiras diferentes.

Page 29: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional-Projeção

Fucapi

Page 30: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Assim, a expressão que atende nossos objetivos nesse caso é

cabendo observar que devido ao alinhamento das operações está implícito que primeiro será executada a seleção e depois a projeção, sendo que nesse exemplo não poderíamos inverter essa ordem (você poderia explicar porquê?).

Por esse motivo, dizemos que a álgebra relacional é uma linguagem procedural, já que requer alguma definição quanto à ordem em que as operações serão realizadas. Linguagens em que apenas mencionamos o resultado desejado, sem fazer menção alguma à forma como isso deve ser feito são chamadas de linguagens não-procedurais.

Algebra Realcional-Projeção

Fucapi

Page 31: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Suponha agora que precisamos obter o nome completo, a data de admissão e o salário de cada funcionário cadastrado. Para essa consulta temos um fato novo, que é a referência a colunas de mais de uma tabela, uma vez que o nome e a data de admissão fazem parte da relação funcionário, enquanto que o salário existe apenas em cargos. Isso é problemático, pois as duas operações que conhecemos até o momento são unárias, e temos necessidade de combinar os dados de mais de uma relação. Para situações como essa existe uma operação chamada Produto Cartesiano.

Algebra Realcional- Produto cartesiano

Fucapi

Page 32: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

A notação geralmente adotada (na forma ‘conjunto1 x conjunto2’) para representar essaoperação binária indica bem a sua natureza: o resultado do produto cartesiano de duastabelas é uma terceira tabela contendo todas as combinações possíveis entre os elementos das tabelas originais. Essa tabela resultante possuirá um número de colunas que é igual à soma das quantidades de colunas das duas tabelas iniciais, e um número de linhas igual ao produto do número de suas linhas. Portanto, se fizermos o produto cartesiano de uma tabela A que possua 4 colunas e 10 linhas com uma tabela B onde existem 3 colunas e 7 linhas, a tabela resultante terá 4+3= 7 colunas e 10*7= 70 linhas. Assim, cada linha dessa tabela corresponderá à concatenação de uma linha da primeira tabela com uma linha da segunda.O produto cartesiano não é muito usado como um fim em si mesmo, ou seja, dificilmente estaremos interessados em saber quais são todas as combinações possíveis entre as linhas de duas tabelas, pois a utilidade prática desse tipo de conhecimento é muito discutível.Entretanto, é a única forma primitiva de que dispomos para fundir informações de duastabelas heterogêneas para posterior processamento. Nesse caso, tipicamente será necessário executar uma Seleção sobre o resultado do Produto Cartesiano, de maneira a descartar as combinações inválidas entre as linhas das tabelas originais.

Algebra Realcional- Produto cartesiano

Fucapi

Page 33: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

observe que primeiro é produzido o produto cartesiano correspondente a todas ascombinações possíveis entre funcionários e cargos. Essa relação vai conter linhas onde um funcionário estará associado a cargos que não são o seu, e devemos então aplicar um filtro (uma seleção) para gerar um subconjunto apenas com as combinações logicamente válidas (aquelas em que a chave estrangeira CdCargo de funcionário tem valor igual á chave primária CdCargo de cargo). Como temos nesse subconjunto duas colunas com o mesmo nome (CdCargo que veio de funcionário e CdCargo proveniente de cargo), sempre que precisarmos mencionar uma delas será necessário especificar exatamente a qual das duas colunas estamos nos referindo, senão teremos uma situação ambígua, formalmente inaceitável. Dizemos, nesse caso, que é necessário qualificar a coluna, e isso é feito escrevendo o nome da relação original antes do nome da coluna, separando-os por um ponto, ou seja, <nome-da-relação>.<nome-da-coluna>. É por esse motivo que escrevemos o predicado da seleção como sendo funcionário.CdCargo = cargo.CdCargo. Finalmente, a projeção é realizada a partir desse subconjunto, fornecendo os dados inicialmente desejados.

Algebra Realcional- Produto cartesiano

Fucapi

Page 34: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional- Produto cartesiano

Fucapi

Page 35: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional- Produto cartesiano

Fucapi

Page 36: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional- Produto cartesiano

Fucapi

Page 37: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional- Produto cartesiano

Fucapi

Page 38: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional- Produto cartesiano

Fucapi

Caso desejemos obter uma variação ligeiramente diferente dessa consulta, acrescentando a restrição de que precisamos dos dados apenas dos funcionários do sexo masculino, teríamos a seguinte expressão algébrica:

onde o símbolo Ù presente no predicado representa o conectivo lógico “E”. Portanto, com apenas 3 operações relacionais básicas foi possível extrair do banco de dados de exemplo várias informações importantes, representativas de uma grande parcela das consultas que um sistema gerenciador de bancos de dados deve processar.

Page 39: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Algebra Realcional- Produto cartesiano

Fucapi

As consultas realizadas foram:

1. obter o nome completo de todos os funcionários;2. identificar todos os funcionários do sexo masculino;3. obter o nome completo e a data de admissão de todos os funcionários do sexo feminino;4. obter o nome completo, a data de admissão e o salário de todos os funcionários;5. descobrir o nome completo, a data de admissão e o salário de todos os funcionários do sexo masculino.

Page 40: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Modelo Entidade Relacionamento - MER

Proporciona uma visão lógica de alto nível dos dados

É uma descrição abstrata de uma porção do mundo real

Todos os dados são visualizados como fatos específicos sobre entidades, relacionamentos e atributos

Através do MER, podemos ter uma fotografia do sistema

As entidades, relacionamentos e atributos descrevem as regras de negócio da empresa

Fucapi

Page 41: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Modelo Entidade Relacionamento - MER

Modelo Entidade-Relacionamento (MER) Original:

– Fases do Projeto de Bases de Dados – Definição e Objetivo do Modelo ER – Entidades e Conjuntos-Entidade – Atributos e Domínio de um Atributo – Relacionamentos e Conjuntos-

Relacionamento – Projeto de Chaves – Grau de um Relacionamento – Restrições de Cardinalidade e

Integridade ReferencialFucapi

Page 42: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Modelo Entidade Relacionamento - MER

Extensões e Variações do MER : – Agregação – Generalização/Especialização – Notação, Variações e Exemplos – Dicas para Elaboração de Modelos

E-R

Fucapi

Page 43: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Modelo Entidade Relacionamento - MER

Definição: modelo baseado na percepção do mundo real que consiste em um conjunto de objetos básicos, chamados entidades, e nos relacionamentos entre esses objetos.

Objetivo: facilitar o projeto de banco de dados, possibilitando especificar a estrutura lógica geral.

Fucapi

Page 44: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Modelo Entidade Relacionamento - MER

FUNCIONÁRIO

DEPENDENTE

PROJETO

DEPARTAMENTOendereço

nome

número

salário

supervisor

1 N

possuir

trabalhar

gerenciar

N

1

horas

DataIni

nomenúmero

1

participar

N1

DataNivernome

N

parentesco

controlar

nomenúmero

1

N

1

N

localização

Fucapi

Relacionamento

Entidade

Atributo

Page 45: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Modelo Entidade Relacionamento - Convenções

Fucapi

Entidade Fraca

Entidade

Relacionamento

Atributo

Atributo Identificador

Atributo Multivalorado

Relacionamento Identificador

z

Page 46: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Modelo Entidade Relacionamento - Convenções

Fucapi

Atributo Composto...

Atributo Derivado

Participação total de E2 em REx: Agência e Conta Corrente

E1 R E2

Cardinalidade 1:N para E1:E2 em RE1 R E21 N

Constraint (min,max) de E em RR E2(min,max)E1

Page 47: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

FUNCIONARIO

STATUS CLIENTE

CLIENTE

ATOR

GENERO

FILME

FITA

endereçonomecódigo

salário

supervisor

4,N

1,1

possui

aluguelpossui

classifica

possui1,1

código descrição

0,N

nome endereço

1,N

1,N

dt alugueldt prev ret

dt retornovalor

previsto

1,N

multavalor pago

*

2,N 1,N

1,1

1,N

0,N

1,1

código nomeprincipal

código descrição

nome

qtde fitas

preço

condição

código

código

código

Fucapi

Page 48: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

COMPONENTES DO MER

ENTIDADE Qualquer coisa para a qual desejamos guardar informação Conjunto de objetos individuais chamados instâncias Uma instância deve ter uma identidade distinta de todas as

outras

Fucapi

Page 49: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

TIPOS DE ENTIDADES INDEPENDENTES (FORTES)

▪ entidade que existe por si só▪ NOTAÇÃO : retângulo

RESTRIÇÕES Não pode existir duas entidades com mesmo nome no modelo

DICA:

Geralmente tem mais de um atributo O nome = substantivo

Substantivo é tudo o que nomeia as "coisas" em geral. Substantivo é tudo o que pode ser visto, pego ou sentido. Substantivo é tudo o que pode ser precedido de artigo.

Fucapi

Page 50: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

TIPOS DE ENTIDADES

DEPENDENTES(FRACAS)▪ Entidades que dependem de outras para sua existência

(dependência por existência)▪ Entidades que dependem de outras para sua identificação

(dependência por identificação)▪ NOTAÇÃO: Retângulo duplo

RESTRIÇÕES Só existe enquanto a entidade forte existir

Fucapi

Page 51: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Entidades Fortes e Fracas

FuncionárioDependente

Departamento

EndereçoNomeIdFunc

Salário

Tem

Trabalho1

Nome

NomeIdDeptoP-20

1 N

Fucapi

Entidade Independente

Entidade Dependente

Page 52: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MER - Atributos

Atributo- serve para qualificar a entidade

Simples Multivalorado Determinante ou Identificador Composto Derivado ou Calculado

Fucapi

Page 53: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MER - Atributos

Simples só pode assumir um único valor elementar Exemplo: Nome, Idade, Data de Nascimento

Notação

Fucapi

IdadeNumRua

CEP

Endereço

Fone

Nome

PESSOAS

Page 54: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MER - Atributos REGRAS

Começar o nome do atributo com uma inicial maiúscula e estar no singular

Distinção entre conjunto de entidades e atributo. ▪ Exemplo: AUTOR para livro de uma biblioteca▪ AUTOR para uma editora

Se um conjunto de entidades tem um único atributo, provavelmente aquele conjunto é atributo de um outro conjunto de entidades.

Cada atributo deve ocorrer uma única vez em apenas um conjunto de entidades.

Desconfiar da modelagem de um conjunto de entidades que tem um só atributo. Provavelmente, ele é um atributo de outro conjunto.

Fucapi

Page 55: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MER - Atributos

Multivalorado pode assumir mais de uma valor Exemplo: Fones

Notação

Fucapi

IdadeNumRua

CEP

Endereço

Nome

Fones

PESSOAS

Page 56: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MER - Atributos

Determinante Identifica unicamente uma entidade da outra Lembra o conceito de Chave

Notação

Fucapi

IdadeNumRua

CEP

Endereço

NomeFones

PESSOASCódigo

Page 57: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MER - Atributos

Determinante Identifica unicamente uma entidade da outra Lembra o conceito de Chave

Notação

Fucapi

FonesIdade NumRua

CEP

Endereço

Nome

PESSOASCPF

IdPessoa

Page 58: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MER - Atributos

Composto Pode ser dividido em sub atributos Exemplo: Endereço

Notação

Fucapi

Idade NumRua

CEP

Endereço

NomeFones

PESSOASCódigo

Page 59: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

MER - Atributos

Derivado ou Calculado Seu valor é gerado a partir do valor de outro

atributo Exemplo: Data de Nascimento e Idade

Notação

Fucapi

PACIENTES

IdadeDataNasc Nome

Sexo

*

Page 60: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

COMPONENTES DO MER RELACIONAMENTO

É uma ligação entre duas ou mais entidades É representado por um losango

RESTRIÇÕES▪ Não se pode repetir nomes de relacionamentos▪ O relacionamento deve ligar, no mínimo, duas

entidades

xx

Fucapi a7

Page 61: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

TIPOS DE RELACIONAMENTOS

DEPENDENTES (FORTES) o conceito de entidade dependente e independente é

reforçado pelo tipo de relacionamento quando se quer que uma entidade se torne dependente,

cria-se um relacionamento identificador

INDEPENDENTES (FRACOS)▪ Conecta entidades fortes e fracas

Fucapi

Page 62: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Relacionamento Fraco e Forte

FuncionárioDependente

Departamento

EndereçoNomeCódigo

Salário

Supervisor

1

N

Tem

Trabalho 1

Nome

NomeCódigo

Código

N

1 NÉ de

É Composto de

Trabalha no

possui

Fucapi

Entidade Independente

Identificador

Entidade Dependente

Não IdentificadorPapel do

Relacionamento

Page 63: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

• É a propriedade do relacionamento que define exatamente com quantas instâncias uma entidade de um conjunto pode se relacionar com outras entidades de outro conjunto;

• PODE SER:• um para um• um para muitos; e• muitos para muitos

CARDINALIDADE DO RELACIONAMENTO

Fucapi

Page 64: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

CARDINALIDADE 1:1

E1

E2

E3

.

.

.En

M1

M2

M3

.

.

.Mn

1 : 1Médicos Especialidades

MÉDICOS ESPECIALIDADESpossuem1 1

Fucapi

Page 65: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

CARDINALIDADE 1:N

E1

E2

E3

E4

.

.

.En

M1

M2

M3

.

.

.Mn

1 : NMédicos Especialidades

MÉDICOS ESPECIALIDADESpossuemN 1

Fucapi

Page 66: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

CARDINALIDADE 1:N

P1

P2

P3

P4

.

.

.Pn

M1

M2

M3

M4

.

.

.Mn

N : N

Médicos Pacientes

MÉDICOS PACIENTESconsultasN N

MÉDICOS ESPECIALIDADESpossuem(0,1) (1,N)

Fucapi

Page 67: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

• É a propriedade do relacionamento que define a obrigatoriedade ou não de uma entidade participar (se relacionar) de um relacionamento.

• Pode ser: • total (obrigatória) ou • parcial (opcional)

PARTICIPAÇÃO DO RELACIONAMENTO

Fucapi

Page 68: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

PARTICIPAÇÃO DO RELACIONAMENTO: TOTAL e PARCIAL

MÉDICOS PACIENTESconsultasN N

Fucapi

Page 69: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

AUTO RELACIONAMENTO Situação em que uma entidade se relaciona com outra do mesmo conjunto

Funcionário

EndereçoNomeCódigo

Salário

Supervisão

1 N

Supervisionado Supervisor

Fucapi

Page 70: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Grau do Relacionamento

Fucapi

VENDEDORES vendas PRODUTOSN N

CLIENTES

N

É dado pelo total de entidades envolvidas no relacionamento• Binário, ternário, etc.

MÉDICOS PACIENTESconsultasN N

Page 71: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

RELACIONAMENTO n-ÁRIOS

Fucapi

VENDEDORES vendas PRODUTOSN N

CLIENTES

N

• É definido pela regra de negócio

VENDEDORES PRODUTOSvendasN N

CLIENTESvendem compram

N

N N

N

Page 72: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

AGREGAÇÃO

• Supondo que um médico faz consultas a pacientes.

MÉDICOS PACIENTESconsultasN N

Fucapi

Page 73: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

AGREGAÇÃO

• Supondo também que nessas consultas o médico pode fazer solicitações de exames.

• Vários binários = inconsistência

MÉDICOS PACIENTESconsultasN N

EXAMESsolicita faz

N

N N

N

Fucapi

Page 74: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

AGREGAÇÃO

• O ternário obriga que em toda consulta o médico solicite um exame.

MÉDICOS PACIENTESconsultasN N

EXAMES

N

Fucapi

Page 75: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

AGREGAÇÃO

• O MER não permite relacionamento entre relacionamento

MÉDICOS PACIENTESconsultasN N

EXAMES

N

solicita

N

Fucapi

Page 76: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

• O melhor modo para representar a situação anterior é usando a agregação.

• Na agregação não existe obrigatoriedade na entrevista para encaminhar um candidato a um cargo

AGREGAÇÃO

Fucapi

Page 77: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

AGREGAÇÃO

• A agregação é a abstração que transforma um relacionamento em uma entidade;

• Evita inconsistências• Só pode ser em relacionamentos de cardinalidade N:N• Não possui atributos

Fucapi

Page 78: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

AGREGAÇÃO

MÉDICOS PACIENTESconsultasN N

EXAMES

solicitações

N

N

MÉDICOS PACIENTESconsultasN N

EXAMES

solicitações

N

N

Fucapi

Page 79: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Fucapi

A Clínica Salva Vidas, atua na área de saúde disponibilizando à sua clientela serviços médicos de consultas e realização de exames.

Para melhor atender seus clientes, a clínica deseja informatizar seus serviços de forma a gerar controle sobre os agendamentos e realização de consultas, solicitação e realização de exames. Para isso, é necessário cadastrar os dados sobre os pacientes, exames, médicos, especialidades dos médicos e funcionários, entre outros.

Sobre os médicos é necessário que o sistema armazene o CRM, nome, endereço, fones (residencial e celular) e as especialidades em que atua (oftalmologista, ortopedista, etc). Cada especialidade também pode ter mais de um médico atuando.

Sobre os pacientes deve-se armazenar o nome, endereço, fones (residencial, celular e contato). Para se consultar o paciente pode agendar a data e hora da consulta e o nome do médico. Durante uma consulta o médico captura e repassa ao sistema os sintomas do paciente e o diagnóstico e ao final desta, ele pode fazer a solicitação de um exame, para que o paciente faça. É necessário que o sistema mantenha o controle sobre qual médico solicitou e qual realizou o exame (já que o médico que realiza não é o mesmo que solicita). Além disso, o paciente pode fazer o exame em outras clínicas. Nesses casos, para a clínica não interessa em qual clínica foi feito o exame, bastando apenas a informação se foi feito ou não na mesma. Sobre a realização do exame deve-se guardar a data da realização e o resultado. Um outro ponto importante, é que o paciente pode ter uma consulta de retorno e tal fato também deve ser controlado pelo sistema.

Com base nas informações descritas faça a modelagem de dados para o sistema. Se necessário complemente ou incremente a descrição.

Page 80: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

• É a forma de agrupar um conjunto de entidades que compartilham características comuns.

HERANÇA: GENERALIZAÇÃO E ESPECIALIZAÇÃO

ESPECIALISTA MESTRE

IdTitulação Descrição

TITULAÇÕES

PESSOAS FÍSICAS

PESSOAS JURÍDICAS

IdPessoa Endereço

PESSOAS

Nome

CPF CGC

DtaNasc NomeFantasia

Fucapi

Page 81: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

• É a forma de agrupar um conjunto de entidades que compartilham características comuns.

HERANÇA: GENERALIZAÇÃO E ESPECIALIZAÇÃO

PESSOAS FÍSICAS

PESSOAS JURÍDICAS

IdPessoa Diagnóstico

PESSOAS

Nome

CPF CGC

DtaNasc NomeFantasia

ESPECIALISTA MESTRE

IdTitulação Descrição

TITULAÇÕES

Fucapi

Page 82: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

• É a forma de agrupar um conjunto de entidades que compartilham características comuns. Restrições:

d: mutuamente exclusivo - quando uma instância da entidade generalização só pode estar em uma entidade de especialização o: sobrepostos - quando uma instância da entidade generalização pode estar em duas ou mais entidade de especialização total: cada entidade da generalização deve pertencer a pelo menos uma entidade de especialização parcial: cada entidade da generalização pode ou não pertencer a uma entidade de especialização

HERANÇA: GENERALIZAÇÃO E ESPECIALIZAÇÃO

Fucapi

Page 83: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

HERANÇA: GENERALIZAÇÃO E ESPECIALIZAÇÃO

Funcionário

EndereçoNomeCódigo

SexoTipo

Consultor

Horas Tx hora

Terceiro

Salário

d

Especialização

Generalização

Total

Fucapi

Page 84: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

HERANÇA: GENERALIZAÇÃO E ESPECIALIZAÇÃO

Funcionário

EndereçoNomeCódigo

SexoTipo

Consultor

Horas Tx hora

Terceiro

Salário

0

Especialização

Generalização

Parcial

Fucapi

Page 85: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

HERANÇA: GENERALIZAÇÃO E ESPECIALIZAÇÃO

FUNCIONARIO

nomecódigo endereço

sexo

CONSULTOR

horas tx hora

tipo

especialização

generalização

mostra a direção do relacionamento

superclasse/subclasse

Fucapi

Page 86: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

METODOLOGIA PARA PROJETO DE BANCO DE DADOS

• Requerimentos e análise• Projeto conceitual do banco de dados• Escolha de um SGBD• Mapeamento do modelo de dados• Projeto físico do banco de dados• Implementação e configuração do banco de dados

Fucapi

Page 87: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Fucapi

Exercício 1

Uma empresa de TV à cabo necessita informatizar alguns dos seus serviços de forma a atender as seguintes necessidades: O sistema deverá controlar o cadastro dos clientes, pacotes (família, adulto, infantil, cinema, etc), da programação (filmes, horários, etc) e do pagamento de mensalidades.Cada pacote possui um preço e o cliente pode escolher uma combinação dos mesmos, podendo mais tarde adicionar mais pacotes se assim o desejar. O valor de sua mensalidade corresponde ao valor total dos pacotes e seu vencimento será todos os meses no dia em que comprou o primeiro pacote. O cliente poderá também escolher a quantidade de tv's para instalação do cabo, e a cada 2 tv's ele paga um adicional em sua mensalidade.Cada pacote possui um conjunto de canais exclusivos. Um canal é identificado por um número e seu nome (33- HBO2, por exemplo). A programação é composta de todos os filmes que serão exibidos, além de seus horários e datas de exibição. Vale ressaltar que, um filme pode ser exibido em mais de um horário e em várias datas diferentes.

Page 88: Introdução a banco  de dados à Modelagem e Projeto de Banco de Dados

Fucapi

Exercício 2Uma loja de CDs deseja informatizar suas transações de venda e de aluguel de títulos, mantendo cadastros atualizados de clientes, balconistas, títulos, dos distribuidores que os fornecem e dos gêneros musicais em que estes se classificam. Entre o cliente e o balconista, as vendas e locações de títulos de CD devem ser armazenadas na base de dados juntamente com a data em que houve a transação (data de venda e data de locação, respectivamente). Somente para a locação, o sistema deverá também armazenar a data prevista para a devolução do titulo alugado (data de devolução). É de interesse da loja, saber, através das informações armazenadas na base de dados, que balconista vendeu ou alugou determinado titulo para qual cliente.Eventualmente, um cliente também pode solicitar a encomenda de um CD que não esteja disponível na loja. As encomendas feitas desta forma são pedidas diretamente para o balconista, mas para a loja somente é interessante saber qual cliente encomendou determinado titulo e em que data (data da encomenda). Note que um cliente pode encomendar vários títulos e um título pode ser encomendado por vários clientes. Normalmente, o processo de encomenda é seguido por uma transação de venda (mas nunca de locação), caso o(s) pedido(s) do cliente seja(m) atendido(s).Cada título de CD é classificado somente num gênero musical (pelo menos, aquele gênero que predomina) dentre os vários que a base de dados mantêm como disponíveis na loja. Além disso, cada título de CD é fornecido por apenas uma dentre as várias distribuidoras com a qual a loja obedece a contratos de revenda. Para cada distribuidora é imprescindível, além de outras informações, o nome do vendedor intermediário e dos telefones para contato.Um título pode estar disponível somente para venda ou somente para locação. E não se esqueça que, somente quando da disponibilidade de um CD ser para venda, o seu preço unitário, a quantidade de unidades vendidas no ato da transação e a sua quantidade, remanescente no estoque, são informações importantíssimas, além do que, no caso de um título disponível exclusivamente para locação, a sua venda não é permitida e vice-versa.