Sistemas de Informação MODELO CONCEPTUAL DE DADOS Escola Superior de Tecnologia e Gestão de Felgueiras Engenharia Informática 3º ano - 2003/2004 Ana Maria Madureira Sistemas de Informação 1. MODELO CONCEPTUAL DE DADOS Descreve o S.I. da Organização identificando: • ENTIDADES Objectos do mundo real e com existência independente sobre os quais se pretende guardar informação. Ex. Aluno, Disciplina, Cliente, Factura • RELAÇÕES Associações entre entidades estabelecidas de acordo com as necessidades de gestão. Ex: Frequenta (Aluno, Disciplina) • ATRIBUTOS Dados elementares que caracterizam as entidades e as relações. Ex. ALUNO= #Aluno + Nome + Curso+ … Os MCD's devem ser desenvolvidos em paralelo c/ os DFD's na fase de Análise, tendo particular interesse para a definição dos ficheiros ou Base de Dados necessários para o Sistema de Informação. Modelo Conceptual de Dados 2 Sistemas de Informação 2. ENTIDADES 2.1. Entidade Tipo (ou simplesmente Entidade) Classe de indivíduos caracterizados pelos mesmos Atributos (ex. Aluno) 2.2. Ocorrência de uma Entidade Instanciação de uma Entidade_tipo (ex José, nº 980001) O número de ocorrências previsto para cada entidade é um objectivo importante da análise tendo em conta que vai determinar a capacidade dos dispositivos de armazenamento de informação. 2.3. Atributos de uma Entidade • Atributo Identificador Identifica sem ambiguidade cada ocorrência da entidade Ex. Código_aluno, num_factura O atributo identificador principal (chave) deve ter obrigatoriamente as seguintes características : - Ser ÚNICO – existe uma correspondência bionívoca (sem ambiguidade) entre o valor do atributo e a ocorrência da entidade a que se refere; - Ser ETERNO – As características e valores do atributo nunca devem ser alterados O atributo identificador principal deve ser definido especificamente para cada Sistema de Informação de modo a ser independente de alterações externas não controláveis. Isto é, de modo a garantir que seja Eterno. Compete ao Analista do Sistema a definição destes atributos. Um atributo identificador chave também deve ser o mais pequeno possível uma vez que vai servir de ligação (chave estrangeira) noutras entidade e relações. Mas nunca tão pequeno que possa ter que ser alterado (deixar de ser eterno) ! Modelo Conceptual de Dados 3 Sistemas de Informação • Atributos descritivos Atributos que caracterizam a entidade e cujos valores para, cada ocorrência da entidade, são (quase) imutáveis ao longo do seu ciclo de vida. Ex. Nome, data nascimento, sexo • Atributos de Estado Atributos cujos valores variam ao longo do ciclo de vida da entidade. Ex. Saldo_conta, existência_em stock, ano_aluno • Atributos calculados São atributos identificados como relevantes para caracterização de uma entidade mas que podem ser calculados a partir de outros Ex. Idade_aluno, média_curso • Atributos de Auditoria São atributos normalmente só considerados na fase de desenho e que se destinam a “auditar” as operações realizadas sobre cada ocrrência da entidade: Ex. Data_criação, data_ult_alteração, utilizador 2.4. Reconhecimento de Entidades A identificação das entidade relevantes para o Sistema de Informação a modelar constitui uma das tarefas mais importantes do Analista de Sistemas, não existindo nenhum processo “científico “ para o fazer. Sugestão metodológica baseada em “tipos de entidades”: 1. Identificar todas as entidades com existência física real no ambiente do sistema a modelar , com as quais este comunica e em relação às quais há necessidade de guardar informação sobre o seu ciclo de vida: Ex . Cliente, Fornecedor, Aluno, Professor Ministério_Educação não é, em geral, uma entidade relevante para o sistema de informação de uma escola , apesar de poder haver comunicação de informação, uma vez que não é relevante o seu ciclo de vida. Modelo Conceptual de Dados 4 Sistemas de Informação 2. Identificar todos os objectos do mundo real com existência física e que constituem os produtos da actividade/negócio da organização: Ex. Produto_acabado, Componente, Artigo, Projecto, Obra, Serviço 3. Identificar todos as “entidades informacionais” veiculadas por suportes físicos reais (papel, documentos electrónicos) cujo ciclo de vida é relevante para o sistema de informação e pode ser afectado por eventos do ambiente do sistema : Ex. Factura, Encomenda 4. Ao longo da fase de Análise novas entidade vão sendo reconhecidas por agregação e decomposição de entidades ou por relação entre entidades (nomeadamente no caso de relações do tipo m:n – entidades relação). Ex. Linha Factura Å Factura, Produto 5. Os factos que originam as transições de estado de uma entidade (i.e afectam o seu ciclo de vida) também são modelados como Entidades. Um dos atributos sempre requerido é a data do facto (movimento ou transacção). Ex. Movimentos_produto, Movimentos_contabilidade 3. RELAÇÂO Relação Tipo Refere uma associação entre dois (ou mais ) entidades tipo ALUNO CURRICULUM DISCIPLINA NOTA DATA Modelo Conceptual de Dados 5 Sistemas de Informação Ocorrência de uma relação Refere uma instanciação da relação caracterizada por uma e uma só ocorrência das entidades que participam na relação Atributo Identificador da relação Em geral é constituído pela concatenação dos atributos identificadores das entidades tipo que nela participam. #Curriculum = #Aluno + #Disciplina desde que seja único. Ex: PRODUTO FORNECIMENTO ENCOMENDA DATA QUANT Se o mesmo produto puder estar em mais do que uma linha (por exemplo no caso de várias datas de entrega) a concatenação das duas chaves (#Produto + #Encomenda) não é única. Neste caso é necessário criar um novo atributo identificador chave (#linha-enc). 3.1. Cardinalidade de uma entidade numa relação Número (mínimo e máximo) de vezes que cada ocorrência da entidade pode participar na relação. 0,1 – cada ocorrência da entidade participa, no máximo, uma vez na relação 1,1 – cada ocorrência da entidade participa uma e só uma vez na relação 0, n – cada ocorrência da entidade pode participar ou não na relação mais que uma vez 1,n – cada ocorrência da entidade participa pelo menos uma vez na relação Modelo Conceptual de Dados 6 Sistemas de Informação 3.2. Dependência Existencial A cardinalidade mínima = 0 significa que a entidade é independente existencialmente da relação. Isto é, cada ocorrência da entidade pode existir sem estar ligada a essa relação. Se a cardinalidade mínima é superior a zero sigifica que existe uma dependência existencial da entidade em relação à relação. Ex. CLIENTE (0,n) (1,1) FACTURA (1,n) (0,n) PRODUTO 3.3. Dimensão de uma Relação Número de entidades que participam na Relação PROFESSOR (0,n) (0,n) TURMA AULA SALA DISCIPLINA (0,n) (0,n) AULA é uma relação de dimensão 4. Modelo Conceptual de Dados 7 Sistemas de Informação Todas as relações podem ser transformadas em relações de dimensão 2 (relações binárias) , “promovendo” as relações a entidades . No exemplo: considerar AULA uma Entidade . PROFESSOR (0,n) (0,n) TURMA (1,1) (1,1) AULA (1,1) (1,1) SALA DISCIPLINA (0,n) (0,n) 4. SIMBOLOGIA E NOTAÇÃO DAS RELAÇÕES Tipo 1 • As relações podem ter dimensão superior a 2 • As cardinalidades minima e máxima de uma entidade numa relação são referenciadas junto à entidade (caracterizam a entidade) A Metodologia Merise adopta esta notação. Os exemplos anteriores utilizaram também estas notações CLIENTE Modelo Conceptual de Dados (0,n) (1,1) FACTURA 8 Sistemas de Informação Tipo 2 • As relações são sempre binárias (entre duas entidades) • A relação não é representada por qualquer símbolo • As cardinalidades são referenciadas junto da “entidade relacionada”, podendo existir várias notações CLIENTE 1,1 0,n FACTURA CLIENTE FACTURA CLIENTE FACTURA 5. TIPOS DE RELAÇÕES BINÁRIAS – MODELAÇÃO ER Esta modelação visa garantir a visão relacional dos dados • Relações do tipo 1:1 CAPITAL PAÍS #País #Cidade 0, 1 CIDADE 1,1 #Cidade #País - Um país tem uma e uma só cidade como capital - Uma cidade pode ser capital de um só país (ou de nenhum) Esta relação é modelada colocando o atributo identificador (chave) de uma entidade como atributo da outra entidade (chave estrangeira). Estes atributos podem ser colocados em ambas as entidades embora apenas seja necessário colocar numa delas para garantir a visão relacional. Modelo Conceptual de Dados 9 Sistemas de Informação • Relações do tipo 1 : n (um para vários) FACTURA CLIENTE 1,1 #Factura #Cliente 0,n Chave Estrangeira Neste caso FACTURA referencia CLIENTE e depende existencialmente da relação com ele. A relação é modelada colocando o atributo chave da entidade principal como atributo (chave estrangeira) da entidade que a referencia. • Relações do tipo m : n (muitos para muitos) ALUNO CURRICULUM DISCIPLINA #Disciplina #Aluno m,n m,n Neste caso torna-se necessário criar uma nova Entidade (Entidade-Relação) que se relaciona com as originais através de relações do tipo 1:n. ALUNO DISCIPLINA #Disciplina #Aluno 1,1 1,1 0,n Modelo Conceptual de Dados CURRICULUM #Aluno #Disciplina Data Nota 0,n 10 Sistemas de Informação • Relações Reflexivas São relações entre entidades do mesmo tipo Ex. Precedencias Disciplina #Disciplina #curso Ano Semestre Neste caso a solução é criar uma nova Entidade (relação) Disciplina #Disciplina #curso Ano Semestre Precedências 2,2 0,n #Disc1 #Disc2 De notar que a cardinalidade mínima e máxima igual a 2: para cada ocorrência da entidade Precedências correspondem duas e só duas ocorrências da entidade Disciplina. Este tipo de relação é típico das estruturas em árvore (ex. Composição de um produto) Modelo Conceptual de Dados 11 Sistemas de Informação 6. NORMALIZAÇÂO A normalização é uma técnica baseada num conjunto de conceitos e regras propostos por CODD destinados a obter conteúdos de ficheiros de registos (tabelas) adequados à implementação de bases de dados relacionais. Objectivos principais da normalização • Visão Relacional dos dados Qualquer relação entre entidades devem ser vista como um objecto informacional idêntico às entidades. Através de linguagens de interrogação relacionais (tipo SQL) estas relações são facilmente obtidas. • Não Redundância da Informação Cada dado deve ser armazenado uma única vez base de dados . Evita-se a inconsistência dos dados e reduzem-se os recursos para armazenamento da informação. O Modelo Conceptual de Dados a obter na fase de análise deve identificar todas as entidades e relações relevantes do sistema a modelar, caracterizadas em termos dos atributos e das cardinalidades respectivas. Independentemente da utilização de uma Base de dados relacional na fase de implementação, o MCD final deve estar normalizado. Modelo Conceptual de Dados 12 Sistemas de Informação Exemplo : Pretende-se desenvolver uma aplicação informática destinada à gestão da Facturação de uma empresa . Uma factura tem o seguinte formato/conteúdo: #Factura ________________ Data ________ #Cliente ________ Nome _____________________________ Morada___________________ CodPostal _____ Localidade ___________ #Vendedor _______ Nome-vend ___________________________________ #Prod _____ _____ _____ _____ _____ Des-Prod Quant ___________________ _______ ___________________ _______ ___________________ _______ ___________________ _______ ___________________ _______ Preço-Unit _________ _________ _________ _________ _________ Preço-total _________ _________ _________ _________ _________ Total-factura:…. _________ Existindo um número indefinido e variável de produtos por factura o ficheiro de Facturas teria o seguinte conteúdo. Facturas = {#Factura + Data + #Cliente + Nome + Morada + Codpostal + + Localidade + #vendedor + Nome-vend + #Prod1 + Des-Prod1 + Quant1 + Preço-unit1 + Preço + #Prod2 + Des-Prod2 + Quant2 + Preçounit2 + Preço-total2 + …. + #Prodn + Des-Prodn + Quantn + + Preço-unit2 + Preço-total2 + Total-factura } Problemas : - A partir deste conteúdo como obter a relação de todas as facturas onde um dado produto X foi vendido? (notar que em cada factura o mesmo produto X , caso exista, pode ter uma “posição diferente”). ÆNão existe uma visão relacional dos dados Modelo Conceptual de Dados 13 Sistemas de Informação - É necessário prever um número máximo de produtos por factura - O que fazer se ocorre uma factura com um número superior? - Quanto maior o número máximo previsto maior o “despedício (overhead) para facturas com poucos produtos. Origem dos problemas: Existem grupos repetidos (redundância). Um ficheiro não está normalizado se tiver grupos repetidos No exemplo o conteúdo do ficheiro podia ser especificado com as notações do dicionário de dados explicitando o grupo repetido entre chavetas. Facturas = {#Factura + Data + #Cliente + Nome + Morada + Codpostal + + Localidade + #vendedor + Nome-vend + { #Prod + Des-Prod + + Quant + Preço-unit + Preço-total } + Total-factura } 1ª Forma Normal Um ficheiro está na 1ª forma normal se não tiver grupos repetidos No caso do exemplo basta partir o ficheiro em dois : Facturas = {#Factura + Data + #Cliente + Nome + Morada + Codpostal + + Localidade + #vendedor + Nome-vend + Total-factura } Linhas_factura = { #Factura + #Prod + Des-Prod + Quant + Preço-unit + + Preço-total } Modelo Conceptual de Dados 14 Sistemas de Informação (Nota : A chave de Linhas_Factura é obtida pela concatenação da chave de Factura (#Factura) com #Produto) Os problemas existentes foram resolvidos: - A partir do ficheiro Linhas_factura é muito simples obter a ralação das facturas onde um dado produto foi vendido. Æ Existe uma visão relacional dos dados SQL SELECT * FROM Linhas_Factura WHERE #Produto = X - Para cada factura existem tantos registos (ocorrências ) de Linhas_facturas quantos os produtos que essa factura tem. Isto é, não há “overhead”. O grande objectivo da 1ª Forma normal é garantir a Visão Relacional dos Dados Problema ainda existente : REDUNDÂNCIA Ex: - Se um produto for facturado 1000 vezes é necessário guardar a designação do produto 1000 vezes. - nome de um Cliente (e de um Vendedor) é armazenado tantas vezes quantas as facturas onde participou. Solução : 2ª e 3ª Formas normais Garantir que todos os atributos dependam funcionalmente apenas do identificador principal (Chave) Modelo Conceptual de Dados 15 Sistemas de Informação Dependência funcional (entre atributos) Um atributo a depende funcionalmente do atributo b se para cada valor de b é possível saber , sem ambiguidade, qual o valor do atributo de a. O grande objectivo da 2ªe 3ª Formas normais é evitar a Redundância dos Dados 2ª Forma normal Um ficheiro está na 2ª forma normal se, para além de estar na 1ª forma normal, cada atributo não chave depende funcionalmente da totalidade da chave. A situação de um ficheiro não estar na 2ª forma normal verifica-se no caso do identificador chave ser composto ( normalmente resultante da aplicação da 1ª forma normal ao retirar os grupos repetidos). Ex. Linhas_factura ( Atributo Identif. = #Factura + #Produto) Linhas_factura = { #Factura + #Prod + Des-Prod + Quant + Preço-unit + + Preço-total } O atributo Des-Prod depende funcionalmente apenas de #Prod. Pressupondo que a designação do produto é fixa e a mesma em todas as facturas verifica-se REDUNDÂNCIA. Solução : Criar um novo ficheiro que relacione #Prod com Des-Prod. Produtos = { #Prod + Des- Prod } Os restantes atributos dependem funcionalmente da totalidade da chave. Modelo Conceptual de Dados 16 Sistemas de Informação Nota - O atributo Preço-unit representa o preço unitário do produto na data da factura. O ficheiro Produtos poderá ter também um atributo relativo ao Preço unitário, mas correspondente ao valor de base actual. O que acontece se ele for alterado ? É possível refazer integralmente a factura ? Importante: A possibilidade de reconstruir os dados/informação com efeitos retroactivos é um dos objectivos mais importantes ( e difíceis) de garantir na concepção de um sistema de Informação 3ª Forma normal Um ficheiro está na 3ª forma normal se, para além de estar na 2ª forma normal, os atributos não chave não dependem funcionalmente uns dos outros. No ficheiro Facturas existem dependências funcionais entre atributos não chave que implicam Redundância: Facturas = {#Factura + Data + #Cliente + Nome + Morada + Codpostal + + Localidade + #vendedor + Nome-vend + Total-factura } A solução é criar novos ficheiros (tabelas) : Clientes = { #Cliente + Nome + Morada + Codpostal + Localidade} Vendedor = { #Vendedor + Nome-vend} No caso do código postal determinar sem ambiguidade a localidade poderia também definir-se um novo ficheiro: Codigos_postais = { codpostal + localidade} Modelo Conceptual de Dados 17 Sistemas de Informação Em resumo, normalizando o conteúdo do ficheiro Facturas até à 3ª Forma Normal obtinham-se os seguintes ficheiros normalizados: Facturas = {#Factura + Data + #Cliente + #vendedor + Total-factura } Linhas_factura = { #Factura + #Prod + Quant + Preço-unit + Preço-total } Produtos = { #Prod + Des- Prod } Clientes = { #Cliente + Nome + Morada + Codpostal } Vendedor = { #Vendedor + Nome-vend} Codigos_postais = { Codpostal + Localidade} Nota Os atributos Preço-total, se for igual a Quant*Preço-unit, e Total-factura , se igual ao somatório de Preço-total, constituem também redundância ( atributos calculados). Os atributos calculados não são em geral armazenados . Aparecem apenas nos “outputs”, como é o caso do documento impresso Factura. Modelo Conceptual de Dados 18 Sistemas de Informação Importante: De notar que o exercício (sistemático) de normalização de um documento constituiu um auxiliar precioso de análise para identificação das principais Entidades e Relações da aplicação informática destinada à gestão da Facturação. O Modelo Conceptual de Dados é facilmente derivado: Cliente #Cliente Nome Morada Codpostal Codpostal #Codpostal Localidade Modelo Conceptual de Dados Factura Vendedor #Factura Data #Cliente #Vendedor #Vendedor Nome Linha-fact Produto #Factura #Produto Quant Preço-unit #Produto Des-prod 19