Prof. M.Sc. Ronaldo C. de Oliveira ronaldooliveira@facom.ufu.br FACOM - 2011
Modelagem de Dados Modelo de Entidade- Relacionamento
Conceitos Principais Entidade: Uma entidade é algo do mundo real que possui uma existência independente. Uma entidade pode ser um objeto com uma existência física - uma pessoa, carro ou empregado - ou pode ser um objeto com existência conceitual - uma companhia, um trabalho ou um curso universitário. Atributos: Características peculiares das entidades ou dos relacionamentos. Ronaldo C. Oliveira 3
Relacionamentos: representa a Interdependência entre as entidades definidas em um modelo. Um tipo de relacionamento R entre n tipos de entidades E1, E2,..., En é um conjunto de associações entre entidades desses tipos. Diz-se que cada entidade E1, E2,..., En participa no tipo de relacionamento R e que as entidades individuais e1, e2,..., en participam na instância do relacionamento ri=(e1, e2,..., en). Ronaldo C. Oliveira 4
Exemplo Relacionamento Binário Ronaldo C. Oliveira 5
Exemplo Relacionamento Ternário Ronaldo C. Oliveira 6
Exemplo Auto-Relacionamento Ronaldo C. Oliveira 7
Exemplo Relacionamento Binário 1:1 Ronaldo C. Oliveira 8
Exemplo Relacionamento Binário M:N Ronaldo C. Oliveira 9
Notações: Chen IDEF1X IE Ronaldo C. Oliveira 10
Notação Chen cod-dept cod-emp DEPARTAMENTO 1 possui (0,N) EMPREGADO nome-dept nome-emp Ronaldo C. Oliveira 11
Notação Chen Componentes Ronaldo C. Oliveira 12
Notação EI DEPARTAMENTO possui EMPREGADO DEPARTAMENTO Cod-Dept (PK) Nome-Dept possui EMPREGADO Cod-Emp (PK) Nome-Emp Ronaldo C. Oliveira 13
Notação IDEF1X DEPARTAMENTO possui EMPREGADO DEPARTAMENTO Cod-Dept (PK) Nome-Dept possui EMPREGADO Cod-Emp (PK) Nome-Emp Ronaldo C. Oliveira 14
Baseado em Relações (tabelas), relacionamentos e chaves Relação (tabela): Conjunto de tuplas com as mesmas características Tupla: Linha ou registro de uma relação Atributo: Coluna de uma relação Domínio: Conjunto de valores que um atributo pode assumir Ronaldo C. Oliveira 15
Atributos B1 B2 B3 B4 1b zzz kkk 2a 2b zzz kkk 2a 3b zzz kkk 3a Tuplas 4b zzz kkk 4a 5b zzz kkk 4a 6b zzz kkk 2a 7b zzz kkk 1a 8b zzz kkk 10a Campo 9b zzz kkk 20a Ronaldo C. Oliveira 16
Chaves e Índices Chave Candidata Chave Primária Chave Artificial Chave Estrangeira Índice Alternativo s/ Repetição Índice Alternativo c/ Repetição Ronaldo C. Oliveira 17
Chave Candidata Conjunto de atributos capaz de identificar unicamente uma tupla (ou instância) da tabela Propriedades: Não Nulo Sem Repetição FORNECEDOR Fornecedor Nome Fantasia Fornecedor Razão Social Fornecedor CGC Fornecedor Endereço Fornecedor Telefone Fornecedor Fax Fornecedor e-mail Ronaldo C. Oliveira 18
Chave Primária É o campo ou atributo, chave candidata, escolhido que identifica unicamente cada instância da entidade. É este atributo que vai garantir que todas as instâncias da entidade são diferentes umas das outras. FORNECEDOR Fornecedor CGC Fornecedor Nome Fantasia Fornecedor Razão Social Fornecedor Endereço Fornecedor Telefone Fornecedor Fax Fornecedor e-mail Ronaldo C. Oliveira 19
Chave Artificial Atributo criado especialmente para ser PK: Não existem chaves candidatas entre os atributos da entidade Usado para agilizar a busca de informações no SGBD, por possuir uma menor quantidade de bytes. CLIENTE Cliente Código Cliente Nome (AK1) Cliente Endereço Cliente Filiação Cliente Data de Nascimento Ronaldo C. Oliveira 20
Chave Estrangeira FK Conjunto de atributos de uma tabela que referencia uma chave primária de outra tabela. Uma chave estrangeira é definida quando ocorre a migração da chave primária de uma outra entidade, indicando um relacionamento. Ronaldo C. Oliveira 21
Restrições de Chave: Integridade de Entidade: a chave primária não pode ser nula Integridade Referencial: o conteúdo da chave estrangeira, ou é nulo, ou deve referenciar um valor que existe na chave primária correspondente Ronaldo C. Oliveira 22
PK A1 A2 A3 1a xxx yyy 2a xxx yyy 3a xxx yyy 4a xxx yyy 5a xxx yyy 6a xxx yyy 7a xxx yyy 8a xxx yyy 9a xxx yyy 10a xxx yyy 11a xxx yyy 12a xxx yyy PK FK B1 B2 B3 A1 1b zzz kkk 2a 2b zzz kkk 2a 3b zzz kkk 3a 4b zzz kkk 4a 5b zzz kkk 4a 6b zzz kkk 2a 7b zzz kkk 1a 8b zzz kkk 10a 9b zzz kkk 20a Ronaldo C. Oliveira 23
Índices Alternativos Utilizados para otimização de consultas Todo índice é uma tabela contendo o conjunto de atributos indexado e um ponteiro para a linha correspondente da tabela Podem restringir a repetição de dados ou não Ronaldo C. Oliveira 24
Índice A3 P a a a b c c d d e g s t Tabela A1 A2 A3 A4 A5 A6 1 xxx b xxx xxx xxx 2 xxx c xxx xxx xxx 3 xxx d xxx xxx xxx 4 xxx d xxx xxx xxx 5 xxx a xxx xxx xxx 6 xxx a xxx xxx xxx 7 xxx g xxx xxx xxx 8 xxx t xxx xxx xxx 9 xxx s xxx xxx xxx 10 xxx e xxx xxx xxx 11 xxx a xxx xxx xxx 12 xxx c xxx xxx xxx Ronaldo C. Oliveira 25
Alternative Key (AK) - Índice Alternativo sem Repetição É um atributo chave candidato que não foi escolhido, por algum motivo, para ser chave primária de uma entidade, mas que foi escolhido como um meio de acesso alternativo para os registros. O índice do tipo alternate key (AK), assim como a chabe primária, não admite valores repetidos entre instâncias. Ronaldo C. Oliveira 26
Inverted Entity (IE) - Índice Alternativo com Repetição É um atributo que não possui características suficientes para ser uma chave primária, mas que é utilizado com freqüência no ambiente de negócios como meio de acesso rápido às informações de uma instância da entidade, mesmo que este atributo possua o mesmo valor para instâncias diferentes. Assim, o índice do tipo inversion entry (IE), ao contrário dos PK e AK, admite valores repetidos entre instâncias. Ronaldo C. Oliveira 27
Exemplo de uso de índices alternativos de busca: Índice Alternativo de Busca sem Repetição Índice Alternativo de Busca com Repetição Ronaldo C. Oliveira 28
Modelo Relacional Tipos de Relacionamentos Relacionamento Identificante: O relacionamento identificante entre duas entidades E1 e E2 (neste sentido) indica que uma instância da entidade E2 não pode ser completamente identificada sem que se conheça a instância da entidade E1 a que ela está associada. Ronaldo C. Oliveira 29
Modelo Relacional Tipos de Relacionamentos Relacionamento Identificante: Cliente Cliente Codigo Cliente Nome Cliente Endereço Cliente Cpf Cliente Telefone Dependente Dependente Codigo Cliente Codigo (FK) Dependente Nome Dependente Parentesco Ronaldo C. Oliveira 30
Modelo Relacional Tipos de Relacionamentos RELACIONAMENTO NÃO IDENTIFICANTE/OBRIGATÓRIO: O relacionamento entre duas entidades E1 e E2 (neste sentido) é dito não identificante/obrigatório quando uma instância da entidade E2 não precisa de uma instância na entidade E1 para ser identificado, porém o ambiente de negócios obriga que exista uma instância de E1 associada à instância de E2. Ronaldo C. Oliveira 31
Modelo Relacional Tipos de Relacionamentos RELACIONAMENTO NÃO IDENTIFICANTE/OBRIGATÓRIO: Ronaldo C. Oliveira 32
Modelo Relacional Tipos de Relacionamentos RELACIONAMENTO NÃO IDENTIFICANTE, NÃO OBRIGATÓRIO: O relacionamento entre duas entidades E1 e E2 (neste sentido) é dito não identificante/não obrigatório quando uma instância da entidade E2 não precisa de uma instância na entidade E1 para ser identificado e ainda o ambiente de negócios não impõe nenhuma obrigação que exista uma instância de E1 associada à instância de E2. Ronaldo C. Oliveira 33
Modelo Relacional Tipos de Relacionamentos RELACIONAMENTO NÃO IDENTIFICANTE, NÃO OBRIGATÓRIO: Pedido Pedido Codigo Pedido Data Pedido Valor Pedido Observacao Cliente Codigo (FK) Cliente Cliente Codigo Cliente Nome Cliente Endereço Cliente Cpf Cliente Telefone Ronaldo C. Oliveira 34
Modelo Relacional Tipos de Relacionamentos RELACIONAMENTO MUITOS PARA MUITOS (Many to Many): O relacionamento entre duas entidades E1 e E2 (neste sentido) é dito muitos-paramuitos quando uma instância da entidade E1 esta relacionada a muitas instâncias da entidade E2. Ronaldo C. Oliveira 35
Modelo Relacional Tipos de Relacionamentos RELACIONAMENTO MUITOS PARA MUITOS: MÉDICO CLÍNICA Médico CRM Médico Nom e M édico Telefone atende clinica possui m édico Clinica Código Cínica Nom e Clínica Telefone M ÉDICO POR CLÍNICA Médico CRM (FK) Clinica Código (FK) Horário de Atendim ento Ronaldo C. Oliveira 36
Modelagem Exemplo Sistema de Livraria
Cliente cod_cli nome_cli cpf_cle endereco_cli telefone_cli requisita Venda cod_vend valor_vend status_vend data_vend cod_cli (FK) possui Itemvenda cod_vend (FK) cod_liv (FK) qtd_venda contem Fatura cod_fat cod_vend (FK) valor_fat datavenc_fat data_fat Compra cod_comp valor_comp data_comp cod_forn (FK) possui contem / Itemcompra cod_liv (FK) cod_comp (FK) qtde_compra contem Livro cod_liv isbn_liv nome_liv qtde_liv autor_liv preco_liv possui FonrnecedorLivro cod_forn (FK) cod_liv (FK) fornece Fornecedor cod_forn participa nome_forn cnpj_forn telefone_forn Ronaldo C. Oliveira 38
Outro Exemplo Sistema Loja de Material de Construção
Sistema Loja de Material de Construção Construir um DER (notação Chen) de uma loja de materiais de construção, com as seguintes regras: Todo Cliente deve ser cadastrado no sistema; Um cliente pode requisitar várias vendas de material de construção, e uma venda esta relacionada a somente um cliente; É necessário definir qual vendedor realizou uma determinada venda; Uma venda pode conter vários produtos a serem vendidos, e um produto pode estar presente em várias vendas; Cada produto pode ser fornecido por vários fornecedores e um mesmo fornecedor pode fornecer vários produtos; Um cliente pode ter várias obras sendo construídas; Uma venda deverá ser entregue em somente uma obra do cliente. Ronaldo C. Oliveira 40
Ronaldo C. Oliveira 41
Cliente Cod_cli cpf_cli nome_cli Endereco_cli participa ClienteObra Cod_cli (FK) codigo_obra (FK) contem Obra codigo_obra nome_obra local_obra efetua efetua Venda codigo_venda codigo_obra (FK) codigo_vendedor (FK) data_venda Cod_cli (FK) Valor_venda participa Vendedor codigo_vendedor nome_vendedor cpf_vendedor VendaProduto codigo_venda (FK) codigo_prod (FK) qtde_venda valor_venda possui contem Produto codigo_prod nome_prod qtde_prod contem FornecedorProduto codigo_prod (FK) codigo_forn (FK) fornece Fornecedor codigo_forn cpf_forn nome_forn Ronaldo C. Oliveira 42