Modelo entidade-associação Sumário • entidades e atributos • associações • exemplo • comunicação com os gestores • modelos típicos Modelo entidade-associação 1 Modelação Modelo - é uma abstracção de alguma coisa com o objectivo de a compreender antes de a construir Exemplos: arquitectura, aviação, engenharia hidráulica, esboços de pintura, planos de livros Utilidade • testar um artefacto antes de o construir, para detectar falhas de forma barata - modelos físicos (reproduzir à escala os fenómenos essenciais do artefacto) - simulação computacional (cada vez mais barata do que modelos físicos, mas exige uma descrição das leis que governam o artefacto) • comunicação com os clientes, para validar a especificação • visualização, para assentar as ideias gerais e começar a pormenorizar cada parte • redução da complexidade - abstracção dos aspectos irrelevantes (torna a realidade manuseável) - relativamente a um objectivo pretendido (determina a adequação; não há modelos "correctos" em absoluto) Modelo entidade-associação 2 Ciclo de vida abstracto ESTRATÉGIA entidade-associação detalhado ANÁLISE Abstracção - capacidade humana fundamental que nos habilita a lidar com a complexidade • desenvolvimento de software parte de uma situação do mundo real esquema da BD PROJECTO • modelo inicial (estratégia e análise) só conceitos do domínio da aplicação DOCUMENTAÇÃO • projecto adicionar objectos computacionais relacionados com a solução escolhida TRANSIÇÃO • fases finais CONSTRUÇÃO reverse engineering conversão de dados análise de impacto manutenção PRODUÇÃO detalhes da implementação na linguagem escolhida Modelo entidade-associação 3 Desenvolvimento de software estratégia: descrição do problema análise: compreender e modelizar a aplicação e o domínio em que opera • independente da implementação projecto: definição da arquitectura do sistema e definição de subsistemas e de objectos codificação: passagem mais ou menos automática para uma linguagem concreta • ferramentas de desenvolvimento de aplicações (CASE)(com gerador de código) documentação • manual de desenvolvimento; manual de instalação; manual de utilização • parcialmente automatizavel, a partir da especificação transição: reverse engineering; conversão de dados produção: uso e manutenção (recomeço) Modelo entidade-associação 4 Modelos de dados notação para descrever os dados + conjunto de operações para os manipular exemplos: • hierárquico IMS • reticulado Adabas • relacional Oracle, DB2, Ingres, Access, Paradox • objecto Object Store, Objectivity, O2, Gemstone modelo entidade-associação • só para descrever os dados • semanticamente mais rico • simples mas preciso • linguagem comum aos técnicos e gestores • nível conceptual • tradução automática Modelo entidade-associação 5 Modelo entidade-associação Entidade • existe e é distinguível objecto • entidades similares agrupam-se em conjuntos de entidades instância com um nome esquema • exemplos: pessoa, funcionário, conta bancária, livro, formiga (?) Atributo • caracteriza os conjuntos de entidades • associa a cada entidade um só valor do respectivo domínio • exemplos: nome, data de nascimento, bi do conjunto de pessoa • chave - atributo(s) que identifica univocamente uma entidade num conjunto - existe sempre uma chave para cada conjunto de entidades - os atributos da chave podem não pertencer todos aos atributos que caracterizam esse conjunto de entidades Modelo entidade-associação 6 Exemplo do banco Pessoa Conta Agência 1111 1327 João 23 000 53-03-24 2222 78 000 9135 54-09-11 127 000 3333 5623 Miguel 41 000 4444 Pedro 457638 6498 Maria 80-03-01 Braga Porto 855986 Entidades Atributos Pessoa bi 8998 nome 5 000 data_nascimento Conta número saldo 83-05-29 Agência designação telefone Modelo entidade-associação 7 Hierarquia isa • Algumas pessoas têm empréstimo; nesses casos é necessário saber também o rendimento declarado no IRS e a entidade patronal • BeneficiárioCrédito isa Pessoa (A isa B) – cada entidade A também é uma entidade B, um caso especial – BeneficiárioCrédito é uma especialização de Pessoa – Pessoa é uma generalização de BeneficiárioCrédito – BeneficiárioCrédito herda os atributos de Pessoa; pode ter mais atributos – chave de BeneficiárioCrédito é a chave de B Entidades Atributos Pessoa bi isa nome data_nascimento BeneficiárioCrédito rendimento Pessoa( bi, nome, data_nascimento ) BeneficiárioCrédito( bi, nome, data_nascimento, rendimento, entidadePatronal ) entidadePatronal Modelo entidade-associação 8 Associações Associação entre entidades associa objectos • tuplo de entidades • (João, 1327) significa que o João é titular da conta 1327 Conjunto de associações do mesmo tipo instância • conjunto de tuplos (e1, ... ek) em que a entidade ei pertence ao conjunto de entidades Ei Associação entre conjuntos de entidades esquema • lista ordenada de conjuntos de entidades (E1, ..., Ek) • associação Titular: (Pessoa, Conta) • caso mais vulgar: associações binárias (k=2) Modelo entidade-associação 9 Exemplo do Banco (cont.) Pessoa Agência Conta 1111 1327 Braga João 23 000 457638 53-03-24 6498 2222 Maria 54-09-11 78 000 Porto 9135 855986 127 000 3333 5623 Miguel 41 000 80-03-01 8998 4444 5 000 Associações Pedro Titular (Pessoa, Conta) 83-05-29 Aberta (Conta, Agência) Modelo entidade-associação 10 Diagramas conjuntos de entidades atributos - chave sublinhada - arestas associações - ligam apenas a entidades - arestas ou arcos bi nome Pessoa data_nascimento Titular número Conta saldo designação Aberta telefone Agência Modelo entidade-associação 11 Funcionalidade das associações R: (E1, E2) um um (biunívoca) • cada entidade em E1 está, no máximo, associada a uma entidade em E2 e vice-versa • Titular seria um para um se cada pessoa só pudesse ter uma conta e cada conta só pudesse ter um titular (pode haver pessoas sem contas) muitos um (funcional) de E1 para E2 • cada entidade em E1 está no máximo associada a uma entidade em E2 • mas uma entidade em E2 pode estar associada a várias em E1 • arco no lado E2 • Aberta: cada conta aberta numa só agência, mas uma agência pode ter várias contas muitos muitos • associação sem restrições nos tuplos admissíveis • Titular: cada pessoa pode ter várias contas, cada conta pode ter vários titulares • forma de implementar varia muito de modelo para modelo - reticulado: obriga a partir em várias muitos para um - relacional: esconde o problema (de eficiência) na camada interna Modelo entidade-associação 12 Comentários classificar as associações segundo a respectiva funcionalidade • impõe restrições às instâncias legais • dá maior semântica ao modelo de dados decisão cuidadosa do projectista chave emprestada • associação R muitos um de E1 E2 • E2 pode emprestar a chave a E1, através de R, uma vez que a cada entidade de E1 corresponde uma e uma só de E2 (traço no diagrama junto a E1) • chave de Conta poderia incluir o atributo designação emprestado de Agência • generaliza isa associação muitos um (cardinalidade superior a binária) • generaliza para arestas em E1, ..., Ek-1 e arco em Ek, se cada tuplo (e1, ..., ek-1) estiver associado, no máximo, a uma entidade ek • situações mais complicadas não se representam no diagrama Modelo entidade-associação 13 Mais comentários o mesmo conjunto de entidades pode aparecer mais que uma vez na mesma associação • Gerada (Pessoa, Pessoa) bi • etiquetar as arestas para distinguir os respectivos papéis • outra hipótese nome 1 Pessoa Gerada - isa caso especial de um um, só um arco bi nome 2 data_nascimento data_nascimento • nem todas as entidades de um conjunto têm que estar nos tuplos de uma associação que o envolva • optativa (o) versus obrigatória (m) Pessoa o Gerada isa m nr_filhos 1 2 Mãe Modelo entidade-associação 14 Obrigatório ou optativo Atributo • obrigatório valor especificado em todas as entidades • optativo valor pode não existir • atributos da chave obrigatórios [se bi puder ser desconhecido, criar atributo substituto (surrogate) para ser chave] Associação • ramo obrigatório ligado à entidade E todas as entidades em E estão nos tuplos da associação [qualquer Mãe tem que ter pelo menos um filho registado] • ramo optativo algumas entidades em E podem não estar na associação [algumas Pessoas podem não ter Mãe registada (caso da Eva)] Modelo entidade-associação 15 Associações válidas n1 { { 11 nm recursivas { A A A A A A A A A m o o o m m m m o o m m o o m o B • situação mais vulgar B • A e B podem existir sem estarem na associação B • A e B criados em simultâneo B • rara - normalmente são sinónimos B • comum - associação colectiva; posterior resolução B • impossível - nenhum A pode existir sem um B e vice-versa • impossível - ciclo infinito (ramo obrigatório!) • muito comum para hierarquias • rara - alternativa o o Modelo entidade-associação 16 Simplificação quando uma entidade tem um só atributo pode-se colapsar o conjunto só no atributo • aparência de a associação ter o atributo • associação Fornece (Fornecedor, Item, Preço) formalmente ternária, muitos um • tuplo (f, i, p) significa que o fornecedor f vende o item i pelo preço p f_nome inome Fornecedor Fornece Item item# morada Preço preço f_nome preço inome Fornecedor Fornece Item item# morada Modelo entidade-associação 17 BD Biblioteca Obter o modelo entidade-associação de uma BD que registe as datas das requisições numa biblioteca. Os leitores têm um código, um nome e uma morada. As requisições referem-se a livros ou a revistas. Todas as publicações são registadas com um número de entrada. Dos livros, além do título e dos autores, interessa saber o editor e o ano de publicação. As revistas têm também título e ano de publicação e, além disso, volume e número. 1ª tentativa ano editor nr nome Leitor requisitante de requisitado por morada Livro título autor3 cod autor2 data autor1 ano detentor de pedida por nr Revista título data volume número Modelo entidade-associação 18 Refinamentos sucessivos Observação 1: evitar usar atributos repetidos falta uma entidade ano editor nome escrito por autor de Livro Escritor nr título país a associação escrito por/autor de é muitos para muitos • um Livro pode ser escrito por vários Escritores • um Escritor pode ser autor de vários Livros Modelo entidade-associação 19 Associações mutuamente exclusivas Observação 2: se se encararem as requisições como entidades (têm um número próprio...) resolve-se a associação muitos para muitos criando uma entidade de intersecção e duas associações muitos para um do objecto de Leitor emissor de feita por Livro Requisição nreq data da objecto de Revista • uma requisição ou é de um livro ou de uma revista as associações do e da são exclusivas • mais expressividade (representa-se com uma linha a unir as arestas exclusivas) Modelo entidade-associação 20 Hierarquia exclusiva • forma alternativa de representaçao com isa - especializações mutuamente exclusivas (Livro e Revista são disjuntos) - Publicação é uma generalização quer de Livro quer de Revista - outra hipótese: especializar Requisição em Requisição_de_livro e Requisição_de_revista título nr cod o Leitor nome morada emissor de feita por m m Requisição da objecto de ano o Publicação data nreq isa Escritor nome o país escrito por autor de o isa Livro editor Revista volume número Modelo entidade-associação 21 Convenções de escrita Objectivo: Rigor + Comunicabilidade Entidades • maiúsculas • singulares • substantivos comuns • sem abreviatura Atributos • minúsculas • nomes com significado no contexto da entidade e compreensíveis pelo gestor Associações (binárias) • nome duplo dependendo do sentido de leitura • regra do verbo ser Modelo entidade-associação 22 Leitura em linguagem natural m A assoc1 assoc2 o obrigatória tem que ser optativa pode ser B muitos um ou mais um um e um só A tem que ser assoc1 um e um só B. B pode ser assoc2 um ou mais A(s). Requisição tem que ser feita por um e um só Leitor. Leitor pode ser emissor de um ou mais Requisição(s). Todo e qualquer Leitor pode ser sempre emissor de um ou mais Requisição(s), não é? associações exclusivas ou ... ou Cada Requisição tem que ser sempre ou de um e um só Livro ou de um e um só Revista. • associações correspondem muitas vezes a regras da organização • linguagem natural facilita comunicação com gestores validação do modelo nos estágios iniciais Modelo entidade-associação 23 Sintaxe invertida Requisição tem que ser feita por um e um só Leitor. é equivalente a Isso significa que nunca pode ter uma Requisição que não seja feita por um Leitor univocamente identificável, não é? detectar - excepções - dependências temporais - casos especiais Modelo entidade-associação 24 Observações associação: sempre entre entidades; não relaciona directamente outras associações • expressividade diminuída combinação de chaves das entidades ligadas por uma associação corresponde a um só tuplo • espécie de chave da associação casos particulares de associações: subtipo (isa); característica (chave emprestada) • tratamento especial um mesmo objecto/facto do universo pode, num modelo, ser representado por uma entidade e, noutro modelo, por uma associação (caso da Requisição) • questões de ontologia decididas, em última análise, pelo modelizador • idem para a declaração de chaves definição mínima: cada facto deve ser registado uma só vez • baixar a redundância e consequente oportunidade para inconsistência regra de Pareto (modificada): interessa compreender 100% do sistema para implementar os 80% que valem a pena Modelo entidade-associação 25 Atributos derivados Atributo - detalhe que sirva para qualificar, identificar, classificar, quantificar ou exprimir o estado de uma entidade Atributo derivado - aquele que pode ser calculado a partir de um conjunto bem definido de outros atributos presentes na BD - cálculo do valor pode envolver só valores de uma entidade [idade a partir da data_nascimento] - ou agregar várias entidades [nr_filhos no exemplo das Mães das Pessoas, se representar o nº de filhos registados na BD] • problema: consistência • em princípio, não se incluem no modelo EA atributos derivados • excepções: - atributo referido frequentemente e de cálculo custoso recalcular quando? - manter informação agregada depois de se apagar a primária Modelo entidade-associação 26 Representação tabular bi nome data_nascimento Pessoa Titular Pessoa Titular bi bi nome data_n. número saldo Conta designação Aberta Agência Agência Conta número telefone número saldo agência designação telefone 1111João 53-03-24 11111327 1327 23 000 Braga Braga 457638 2222 Maria 54-09-11 11116498 6498 78 000 Porto Porto 855986 3333 Miguel 80-03-01 11119185 9135 127 000 Porto 4444 Pedro 83-05-29 2222 9185 5623 41 000 Porto 2222 5628 8998 5 000 3333 8998 entidade associação n m entidade entidade Porto associação n 1 Modelo entidade-associação 27 Cartões de crédito • • • • Pretende-se modelar o sistema de emissão de cartões de crédito num banco. O banco cria contas quer para particulares quer para empresas, as quais podem, por sua vez, entregar cartões aos seus empregados. O banco emite três tipos de cartão, com limites de crédito e condições de pagamento diferentes. Em certos casos podem ser negociados limites especiais. Podem ser autorizados vários cartões sobre a mesma conta, tanto de particulares como de empresa. É contudo importante saber quem detém efectivamente cada cartão. Fisicamente, imprime-se no cartão o nome do detentor, o número da conta e a data de expiração. Regista-se ainda, no sistema, a data de emissão e a assinatura digitalizada. Uma pessoa pode ter uma conta com um cartão para si próprio e outro para o cônjuge. A empresa onde trabalha também pode ter uma conta com um cartão que lhe atribua. O cônjuge pode ainda ser titular de uma terceira conta com cartões para ambos e para os filhos, estes com limites reduzidos. O banco precisa de saber quem são os titulares das contas e respectivas moradas, telefones e números fiscais, quem tem cartões e quantos cartões de cada tipo estão associados a contas de particulares ou de empresas. Obtenha um modelo de dados, usando o formalismo entidade-associação, que capture a realidade descrita. Para além do diagrama desse modelo, incluindo chaves das entidades e funcionalidade e obrigatoriedade das associações, indique eventuais restrições de integridade que entender verificarem-se. Modelo entidade-associação 28 Hipótese de solução data_exp assinatura limite esp tipo# do categoria m limite o data_emis Tipo Cartão ncar prazo m m detido por detentor de ncs nome o o parente de Pessoa ligado a debitada por o nr balcão Conta o m m morada o telefone grau o aberta por titular de ncc aberta por titular_emp de o trabalhador na empregador de design o Empresa morada telefone Modelo entidade-associação 29 Vista organizacional Vista organizacional de uma entidade E é uma tabela contendo os atributos - de E - os atributos de cada entidade univocamente associada com E (recursivamente) - se uma das entidades for uma especialização, para além das associações próprias, considerar também as das suas generalizações - em associações recursivas, pôr reticências depois da segunda cópia - arcos exclusivos originam alternativas C isa B o o • D isa A m m o o ou F E vista de A A a1, a2, a3 C c1, c2, c3 D d1, d2, d3 F f1, f2, f3 o R o A a1, a2, a3 C c1, c2, c3 D d1, d2, d3 E e1, e2, e3 E(R) e1, e2, e3, ... Modelo entidade-associação 30 Exemplos • vista organizacional de Requisição no esquema da biblioteca REQUISIÇÃO nreq data cod nome morada nr título ano • facilitar a verificação da completude do esquema, por comparação com os formulários em uso na organização e com os sistemas pre-existentes • vista de Cartão no esquema de cartões de crédito CARTÃO tipo detentor ncar data_emis data_exp assinatura limite_esp tipo# limite prazo ncsd nomed moradad telefoned nr balcão ncst nomet moradat telefonet conta titular Modelo entidade-associação 31 Estruturas típicas Empresa Magol Divisão Marketing Departamento Equipa Produção Manutenção Equipa A Operação com de Vendas Armazém Equipa B Divisão Modelo 1 (simples) com de Departamento • cada nível pode ter os seus atributos próprios • mas, se se criasse o nível Grupo de Empresas? Ou secção? com de Equipa Modelo entidade-associação 32 Hierarquias Modelo 2 (genérico) Unidade com de • não distingue o topo da hierarquia dos outros níveis (mesmos atributos) • suporta qualquer número de níveis Modelo 3 (com topo) • suporta tratamento diferenciado para o topo da hierarquia • atributos comuns em Unidade • é independente dos nomes usados para classificar cada nível Unidade isa Organização isa de clas Tipo de unidade com de Subdivisão Modelo entidade-associação 33 Hierarquias elaboradas de clas Unidade Modelo 4 (com regras) isa Organização isa com de Unidade Organização Magol suporta organizações constituídas por organizações • mantém regras sobre a própria hierarquia (validação) sobre sub Subdivisão agregado parte • Tipo de unidade com de isa Subdivisão Marketing Produção Vendas Manutenção Equipa A Equipa B Operação Armazém de clas Tipo de unidade Empresa sobre sub Divisão Departamento Equipa Modelo entidade-associação 34 História de atributo valor bi de até apelido Apelido Pessoa de designada • atributo passa a entidade com um valor válido num certo período • os períodos podem ser sobrepostos • não podem existir dois períodos diferentes para o mesmo valor • chave de Apelido é (bi, valor) , parcialmente herdada da entidade Pessoa, através da associação designada Pessoa bi Modelo entidade-associação 35 História de associação Residência Residência de proprietário sujeito para data Contrato terminus Pessoa com parte Pessoa • associação passa a entidade + 2 associações Modelo entidade-associação 36 Componentes código descrição para saber a quantidade de componentes do mesmo tipo e as instruções de montagem Componente/Produto código constituído por parte de uma relação de componentes permite saber • em que produtos é usado um componente • que componentes constituem um produto descrição Componente/Produto usado como para uso em constituído por na lista para Constituinte (tipos; não objectos) •chave de Constituinte (codigo_prod, codigo_comp) quantidade entidade intersecção instruções Modelo entidade-associação 37 Metamodelo em restrição Atributo Domínio m em restrição de descrita Associação m ligação referida Entidade subtipo supertipo • metamodelo = descrição do modelo usando elementos do próprio modelo Modelo entidade-associação 38 Exercício O objectivo é construir um modelo EA para um sistema que reúna a informação sobre as publicações científicas dos professores da Faculdade. Este modelo servirá de base à construção da aplicação respectiva por parte do serviço de informática. • considerar as várias situações mais comuns: - artigos em revistas - artigos em actas de conferência - editor de colectânea ou de acta - livro - tese - relatório técnico, etc. • não esquecer a importância de manter a ordem dos autores • um dos produtos derivados deste sistema é o fornecimento de bibliografias organizadas por professor, por departamento ou por assunto Modelo entidade-associação 39 Refinamentos ao modelo dos cursos • Salientar os aspectos comuns entre professores e alunos • suportar a informação relativa a vários anos • pormenorizar o registo académico com as classificações nos períodos e as faltas Modelo entidade-associação 40 Exemplo dos Cursos letra codcurso designacur ano Curso Turma segue previstas plano ano_lectivo dadas atribuído coddis sigla Disciplina lecciona designadis 2º período resultado assistidas Pessoa morada ano_lectivo 1º período BI nome inclui ano_lectivo telefone Inscrição inscrito isa habilitação grupo Professor isa Aluno data_nasc Modelo entidade-associação 41