Modelos de Dados Álvaro Vinícius de Souza Coêlho [email protected] Modelos de Dados • Um BD provê abstração de dados (o seu esquema). • O modelo de dados é a principal ferramenta de abstração. • É um conjunto de conceitos que são usados para descrever a estrutura de um BD (Tipos de Dados, Relacionamentos, Restrições Semântica, etc.). Modelos de Dados • De modo geral há três níveis de classificação do modelo de dados: Objetos, Registros e Físico. • O modelo baseado em objetos é o mais abstrato. – Não confundir com Orientação a Objetos. – Voltado para a compreensão e o significado dos dados. Modelos de Dados • O modelo baseado em objetos é o mais abstrato. – Expressam relacionamentos complexos entre os dados. – Mostram o mundo real em toda a sua complexidade (de dados). – Ignoram aspectos relacionados à implementação. Modelos de Dados • O modelo baseado em objetos é o mais abstrato. – Modelo de Entidades e Relacionamentos – uma coleção de entidades (objeto distinguível de outro pelos seus atributos) e relacionamentos (associação entre várias entidades). • Definido na Engenharia de Informação e muito empregado na modelagem Estruturada (e mesmo na modelagem Orientada a Objetos). Modelos de Dados • O modelo baseado em objetos é o mais abstrato. – Modelo Conceitual – Coleção de classes de objetos, com atributos e métodos, e associações entre elas. As associações podem ser por mensagens (um objeto solicita algo a outro) ou por ocorrência (um objeto tem a ocorrência de – se relaciona a – outro). • Definido nas modelagens orientadas a objetos e empregado em UML. Modelos de Dados • O modelo baseado em objetos é o mais abstrato. – Existem outros modelos, tanto estruturados quanto orientados a objeto. Mas expressam as mesmas características. Modelos de Dados • Modelo baseado em registros – Construído a partir do modelo de objetos. – Voltados para o entendimento dos registros dos dados. – Expressam relacionamentos simples entre os dados. – Não representam fatos complexos. Modelos de Dados • Modelo baseado em registros – Dependentes da arquitetura do BD: Voltados para a implementação. – Diagrama Relacional, para o modelo relacional, representando dados e relacionamentos por um conjunto de tabelas com colunas únicas (chave). Modelos de Dados • Modelo baseado em registros – Diagrama Relacional C# Cliente C# C# Conta C CT# Modelos de Dados • Modelo baseado em registros – Diagrama de estrutura de dados, para o modelo em redes, tem os dados representados por coleções de registros e os relacionamentos são representados por ligações (ponteiros). O BD é organizado como uma coleção de grafos. Modelos de Dados • Modelo baseado em registros – Diagrama de estrutura de dados Nome Rua Cliente Cidade Número Saldo Conta Modelos de Dados • Modelo baseado em registros – Diagrama de estrutura, para o modelo hierárquico, com representação similar ao modelo de redes, porém o BD é organizado como coleções de árvores. Modelos de Dados • Modelo baseado em registros – Diagrama de estrutura Nome Rua Número Cidade Saldo Cliente Conta Modelos de Dados • Modelo Físico, que é a visão propriamente dos dados (exemplos, evidentemente). • Os modelos em registros físicos são parte integrante de um estado específico do projeto do BD. Modelos de Dados • Aqui, ater-nos-emos ao modelo de objetos. • Existem regras precisas que permitem que, a partir do modelo de objetos, sejam gerados o modelo de registros e o modelo físico do BD. Mas tal transformação é de pouco interesse. Modelos de Dados • Vai-se tomar por guia o MER (Modelo de entidades e relacionamentos). • Não há nenhum motivo em especial, – O interesse é estudar a modelagem de dados – O Modelo Conceitual da UML (bem como todos os modelos de classes em Orientação a Objeto) é mais amplo – Engloba os métodos e as conexões de mensagens que não são escopo de uma modelagem de dados. Modelos de Dados • Assim, entre estudar um modelo conceitual incompleto, por abstração dos métodos, e um MER integral, optou-se pela segunda alternativa. • Vale a crítica: Modernamente há uma preferência pelo modelo conceitual de classes, mas em muitos tipos de sistemas (principalmente quando o BD é relacional) o MER é ainda muito empregado. Modelos de Dados • No decorrer desta será mostrado, sempre que surgirem, as semelhanças e equivalências do MER com o modelo conceitual. • O principal: Os conceitos de organização dos dados e as estratégias para o estabelecimento de relações (ou associações) entre eles permanece. Modelos de Dados • O que é um MER. – Um diagrama composto por entidades e relacionamentos Modelos de Dados • O que é um MER. – Um MER possui quatro aspectos principais a serem estudados • Tipos de objetos (ou classes, segundo a UML). • Relacionamentos (ou associações, segundo a UML). • Indicadores associativos de tipos de objetos (ou classe associativa, segundo a UML). • Indicadores de supertipos/subtipos (superclasse/ subclasse, segundo a UML). Modelos de Dados • Os tipos de objetos, num MER, são representados por retângulos. – Cada tipo de objeto exerce um papel, isto é, são relevantes para o funcionamento do próprio sistema. – São descritos por um ou mais elementos de dados, chamados atributos (como no Modelo Conceitual). Modelos de Dados • Os tipos de objetos, num MER, são representados por retângulos. – Por exemplo, um objeto cliente pode ter os atributos Nome, Endereço, Limite de Crédito e Telefone. – Os atributos são os descritores de cada instância do tipo de objeto (ou o objeto propriamente dito, segundo a UML). Modelos de Dados • Os tipos de objetos, num MER, são representados por retângulos. Cliente Conta Modelos de Dados • Os tipos de objetos, num MER, são representados por retângulos. – A colocação ou não dos atributos é opcional • Diferentes autores preconizam diferentes procedimentos (mesmo em UML, de acordo com o nível de abstração necessário pode-se suprimir alguns ou todos os atributos). • Aqui, por uma questão de simplicidade, serão omitidos do modelo. Modelos de Dados • Os tipos de objetos, num MER, são representados por retângulos. – Mas o levantamento cuidadoso dos atributos é imperativo à modelagem de dados – “Que informações desta entidade (ou desta classe) o sistema deverá, ainda que numa eventualidade, se recordar?”. Modelos de Dados • Os tipos de objetos, num MER, são representados por retângulos. – Isso leva a um conjunto bastante razoável de atributos. – O próprio decorrer do processo de modelagem vai desvendar novos atributos, inicialmente esquecidos. – Não obstante, o seguinte questionamento também deve ser feito para cada atributo “descoberto”: “Essa informação precisa estar registrada ou pode ser derivada de alguma outra?”. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Um relacionamento expressa um conjunto de conexões entre objetos. – Pode representar uma relação entre zero ou mais ocorrências de um objeto, e zero ou mais ocorrências de outro objeto. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – O nome do relacionamento é uma palavra que indique a relação que de fato existe entre os objetos relacionados. – Deve ser colocado no interior do losango. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. Cliente Possui Conta Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Pode haver mais de um relacionamento entre objetos: Possui Conta Cliente Movimenta Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Pode, também, haver relacionamentos entre mais de um objeto. Cliente Conta Possui Agência Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Cardinalidade e opcionalidade. – Um relacionamento deve mostrar: • As quantidades que podem estar envolvidas • A opcionalidade ou não de haver objetos relacionados nas extremidades do relacionamento. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – De modo geral, encontra-se 3 tipos de cardinalidade • 1 para 1. – Cada instância de tipo de objeto se relaciona com apenas uma instância do outro e vice-versa. – Representa-se escrevendo o número 1 ao lado de ambos os objetos relacionados. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. Cliente 1 1 Possui Conta Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Essa relação é lida: “Um cliente possui apenas uma conta e uma conta pertence a (é possuída por) apenas um cliente”. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – 1 para Muitos – Uma instância de um objeto se relaciona com várias ocorrências do outro, mas a recíproca não é verdadeira. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. Cliente 1 N Possui Conta Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Representa-se escrevendo o número 1 do lado do objeto cuja instância ocorre uma vez (chamado dominante) e N do outro lado – Esta relação é lida: “Um cliente pode possuir muitas contas, mas uma conta pertence a apenas um cliente”. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Muitos para Muitos – Cada ocorrência de um objeto se relaciona com várias ocorrências do outro e vice-versa. – Representa-se escrevendo N ao lado dos dois. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. Cliente N N Possui Conta Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Esta relação é lida como: “Um cliente pode possuir muitas contas e uma conta pode pertencer a muitos clientes”. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – A opcionalidade (ou obrigatoriedade, a depender do autor) • Eventualmente, um objeto só pode existir se o seu par-relacionado também existir. • Isso pode ser verdade para ambos os lados de um relacionamento, ou só para um deles, ou para nenhum dos dois. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – No exemplo de clientes e contas, • pode-se estabelecer que um cliente só possa estar cadastrado no BD se ele possuir ao menos uma conta. • Isso, porém, pode não ser boa idéia. • Por outro lado, não é admissível o registro de uma conta sem que se saiba o seu titular. • Aqui parece mais razoável impor uma obrigatoriedade. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – O relacionamento pode ser lido da seguinte forma: “Um cliente pode possuir zero ou mais contas, mas uma conta deve pertencer a um ou mais clientes” Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – A opcionalidade é representada por um círculo colocado ao lado do objeto relacionado, se ele não for obrigatório. Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. Cliente N N Possui Conta Modelos de Dados • Os relacionamentos, no MER, são representados por losangos. – Existem, de acordo com diferentes autores, muitas formas diferentes de representar a cardinalidade e a opcionalidade. – Esta é apenas uma delas, escolhida por apresentar maior semelhança com a linguagem natural e requerer menos recursos gráficos. Modelos de Dados • Os indicadores de tipos de objeto associativos aparecem quando surgem objetos que funcionam como relacionamento – São relacionamentos sobre os quais é desejável guardar alguma informação – Na notação que apresenta os atributos, é suficiente coloca-los no relacionamento. – Aqui, entretanto, será utilizado outro mecanismo. Modelos de Dados • Os indicadores de tipos de objeto associativos – Imagine-se um relacionamento muitos para muitos entre clientes e itens, chamado Compra. – Agora, percebe-se que há alguns atributos específicos deste relacionamento (Data, Tipo de pagamento...) que precisam ser guardados pelo sistema. Modelos de Dados • Os indicadores de tipos de objeto associativos – O Tipo de Dados Compra, associado ao relacionamento Compra é então criado da seguinte forma Cliente N N Compra Item Modelos de Dados • Os indicadores de tipos de objeto associativos – Esta notação é dotada de uma semântica muito particular, pois mostra que o relacionamento também é um tipo de objeto – O relacionamento ficou “sem nome”, indicando que toda a informação que ele contém está inclusa no tipo de objeto Compra Modelos de Dados • Os indicadores de tipos de objeto associativos – Quando se implementa relações muitos para muitos em bancos de dados relacionais, usa-se uma tabela (também conhecida como tabela de-para) fazendo às vezes da relação. – Esta tabela traz as chaves primárias das duas tabelas que representam as entidades para formar a relação da maneira apropriada. Modelos de Dados • Os indicadores de tipos de objeto associativos – É importante ressaltar que tal artifício é feito em nível de projeto, no modelo de registros, e não deve ser expresso aqui. – Chaves primárias e estrangeiras, por não serem considerados atributos (são apenas mecanismos de construção de relacionamentos) devem ser desconsideradas. Não se tratará, portanto, de um tipo de objeto associativo. Modelos de Dados • Os indicadores de supertipos/subtipos são objetos que se agrupam em uma ou mais subcategorias. – No MER são interligados por um relacionamento – No modelo conceitual, são ligados por generalização Modelos de Dados • Os indicadores de supertipos/subtipos – O modelo conceitual estabelece explicitamente que subclasses tem uma relação de herança com as classes-mãe. – O MER também incorpora o conceito de herança, embora não preveja a herança de métodos, como o modelo conceitual. Modelos de Dados • Os indicadores de supertipos/subtipos – Recomenda-se que na nomenclatura do subtipo também se faça uma alusão ao fato de se tratar de uma especialização de um tipo adicional. – Por exemplo, havendo um tipo para automóveis, e subtipos para os automóveis de passeio e utilitário, podem-se nomear esses tipos, respectivamente: “Automóvel”, “Automóvel Passeio” e “Automóvel Utilitário”. Modelos de Dados • Os indicadores de supertipos/subtipos – Os supertipos se relacionam com os subtipos, e a identificação do tipo-pai é feita com um traço cortando a linha de relação que parte do supertipo Modelos de Dados • Os indicadores de supertipos/subtipos Empregado Empregado Horista Empregado Assalariado Modelos de Dados • Os indicadores de supertipos/subtipos – Subtipos e supertipos são identificados são identificados pelos seus atributos – No exemplo, Nome, Endereço, Telefone e Data de Nascimento são atributos de todos os objetos do tipo Empregado Modelos de Dados • Os indicadores de supertipos/subtipos – Mas Horas_Trabalhadas e Salário_Hora são atributos que dizem respeito apenas a objetos do tipo Empregado Horista – Salário_Mês é atributo que só faz sentido ao empregado assalariado Modelos de Dados • Os indicadores de supertipos/subtipos – No processo de modelagem, se for percebida uma intersecção entre os conjuntos de atributos de dois (ou mais) tipos de objetos distintos, eles são então candidatos a compor um conjunto subtipo/supertipo. Modelos de Dados • Os indicadores de supertipos/subtipos – Os objetos em estudo vão se alinhar como subtipos – Devem ser suprimidos os atributos em comum, restando apenas os atributos disjuntos Modelos de Dados • Os indicadores de supertipos/subtipos – O supertipo deverá ser criado, contendo estes atributos comuns – Estes atributos, portanto, ficam disponíveis para todos os subtipos, por herança Modelos de Dados • Os indicadores de supertipos/subtipos – Aqui fica a mais importante diferença entre o MER e o Modelo Conceitual – No MC a relação de classes/subclasses pode ser estabelecida pelo compartilhamento de atributos ou métodos – No caso dos atributos de maneira bem semelhante ao MER. Modelos de Dados • Os indicadores de supertipos/subtipos – A diferença é que nos métodos pode-se implementar conceitos de polimorfismo – São escopo de um estudo sobre orientação a objetos já que os métodos são processos, extrapolando, portanto a modelagem de dados Modelos de Dados • Erros comuns – A modelagem de dados é uma tarefa feita em várias etapas, todas aperfeiçoando a anterior. – É comum, e até natural, descobrir-se imperfeições e erros no modelo, e partir-se para as correções apropriadas. Modelos de Dados • Erros comuns – Não há um modelo correto para um sistema. Há modelos adequados ou inadequados – Os erros mais comuns são basicamente de duas categorias: Faltou objeto ou Sobrou objeto Modelos de Dados • Erros comuns – Faltou objeto • A identificação de supertipos a partir de subtipos com atributos em comuns pode ter sido falha. • É muito comum, em entrevistas com usuário ou em documentações utilizadas como insumo de análise, encontrar objetos aparentemente distintos que são na verdade especialização de um supertipo. Modelos de Dados • Erros comuns – Faltou objeto • A identificação de “casos especiais” de tipos, que tenham atributos, quebrando em subtipos • É comum, também, não se perceber a princípio que um determinado tipo de objeto possui uma especialização relevante para o sistema, o que forçaria este objeto a ser dividido em subtipos Modelos de Dados • Erros comuns – Faltou objeto – Ex: – Um analista percebe a existência do tipo de objeto Cliente, e não observa que existem atributos específicos do cliente que compra com cartão de crédito e que compra com dinheiro – Outro pode perceber dois objetos distintos, um cliente que faz compras com cartão e outro (um “comprador”) que faz compras a dinheiro. – Ambos cometeram uma falha. Modelos de Dados • Erros comuns Cliente Cliente Cartão Comprador Dinheiro Cliente Cliente Cartão Cliente Dinheiro Modelos de Dados • Erros comuns – Faltou objeto – Percepção de atributos inerentes a um relacionamento, que não “chamaram a atenção” numa vista preliminar. Modelos de Dados. FIM! Di Cavalcanti “A ciência não tem Pátria” Louis Pasteur “Mas as patentes, sim” Anômimo