I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados Sumário • I.1 Um Hiato entre Especificação e Implementação • I.2 Especificação: Evolução dos Modelos Conceituais • I.3 Implementação: Evolução dos Modelos Lógicos • I.4 Projeto de Aplicações de Banco de Dados I.1 Um Hiato entre Especificação e Implementação Especificação Implementação Nível de Abstração Especificação (Modelagem Conceitual) Modelo de Objeto Modelo de Entidade e Relacionamento Implementação (Modelagem Lógica) BD II Modelo ObjetoRelacional BD I Modelo Relacional I.2 Especificação: Evolução dos Modelos Conceituais Modelo de Entidade e Relacionamento • Idéia Básica: Entidade – Atributos atômicos – Relacionamento entre entidades • Instâncias de Entidade • Associações entre instâncias de entidade • Modelo Estático – Omisso quanto às operações com (instâncias) de entidades • Pontos Negativos – Atributos atômicos – Modelo estático Elementos de um Modelo de Objeto • Idéia Básica: Objeto – Atributos complexos ou estruturados – Atributos coleção • Conjunto, Bag, Lista, Array – Atributo Identidade (OID) • Uma instância identifica um objeto • Transparente e independente de aplicação – Associações entre objetos • Se um objeto A está associado a um objeto B, então A deve fazer referência ou apontar para B, ou A contém o OID de B, e/ou vice-versa – Operações (Métodos) • Classe de objeto – Atributos e associações comuns a um conjunto de objetos – Atributo(s) chave – Relacionamentos entre classes de objeto • Exprimem as associações entre objetos – Classe persistente • Repositório de objetos da classe • Exemplo de classe de objeto – Classe Estudante • Atributos – Matrícula << chave>> – Nome – Endereço O atributo » Rua OID é » Número transparente » Bairro » Cep Prefixo Sufixo – Data_nasc – Historico_escolar » Conjunto Disciplinas_feitas Referência_disciplina, período, media_final, status • Métodos – – – – Não há necessidade de definir métodos observer e mutator CRE Sufixo do CEP Emissão do Histórico Escolar ... • Relacionamentos com outras classes – Matriculado em Disciplina – … • Repositório: Estudantes • Multiplicidades de Relacionamento – 1:1 – 1:N – M:N • Hierarquia de Classe – É possível declarar uma classe S como uma subclasse de outra classe C. Neste caso, S herda todas as propriedades da classe C, isto é, os atributos, os métodos, e os relacionamentos de C – S pode ter seus próprios atributos, suas próprios operações, seus próprios relacionamentos e seu próprio repositório (S é uma extensão de C) – Exemplo: a classe Estudante é uma subclasse de Pessoa – Relacionamento Subclasse é_um(a) (Sub)Classe – Multiplicidade 1:1 • Métodos – Métodos de Instância • Aplicáveis a um único objeto • Exemplo: est.disciplinas_em_curso(), aplicável a um objeto da classe Estudante (est é um objeto da classe Estudante) • Parâmetro de entrada implícito: objeto self ou this – Métodos de Classe • Não podem fazer referência a objeto self ou this • Exemplo: Estudante.número_estudantes() • Assinatura (Interface) – Uma assinatura de um método (ou interface) compreende: • • • • O nome Os parâmetros O tipo do valor de retorno (opcional) Comentários sobre a lógica do método • Corpo (Código) – Sobrecarga (“Overloading”) • Métodos de uma classe com o mesmo nome, porém com pelo menos um argumento diferente – imprime_histórico_escolar ( ) – imprime_histórico_escolar (formato: string) • Vantagem: Coesão – Polimorfismo • Dois métodos, de classes diferentes, são polimorfos se têm a mesma assinatura • O conceito de polimorfismo é extremamente útil em hierarquias de classes, mas não é restrito a elas – Aluno_especial é_um Aluno » Aluno_especial.histórico_escolar() » Aluno.histórico_escolar() • Agregação/Composição de Classes • Relacionamentos especiais É_PARTE_DE • Agregação • Compartilhamento • Exemplo: um objeto da classe Brinquedo é parte de vários objetos da classe Catálogo • Composição • Não compartilhamento • Exemplo: um objeto da classe Departamento é parte de um único objeto da classe Centro • Dependência existencial • Agregação/Composição de Classes – Brinquedo é-parte-de Catálogo – UML Catálogo * * Brinquedo • Agregação/Composição de Classes – Departamento é-parte-estrita-de Centro – UML Centro * Depto • Uma linguagem de consulta a objetos – Estilo SQL! • Exercite-se (mire-se no exemplo de motivação) – Qual o histórico escolar do estudante com matrícula 1234? – Qual o CRE do estudante 1234? – Quais as disciplinas em que o estudante 1234 está matriculado? BD OO e UML • Pergunta: o que falta à linguagem UML para ela se tornar um completo padrão de BDOO? – Linguagem de consulta a objetos – Descrição textual completa de classes Banco de Dados Orientado a Objeto (BD OO) • Esquema Orientado a Objeto (Esquema OO) – Um conjunto de classes persistentes e transitórias, segundo um modelo de esquema OO • Classes persistentes (concretas) – Com repositório – Sem repositório • Classes transitórias (abstratas) • BD OO – Um conjunto de repositórios • Pelo menos um não é vazio • Consultas sobre os repositórios – Linguagem declarativa de consulta a objetos • Apropriada ao modelo de esquema BD OO: Exemplo de Esquema • Classes – Estudante, Disciplina, Curso, … • Repositórios – Estudantes: João, Maria, José, … – Disciplinas: BD I, BD II, … – Cursos: Bacharelado em CC, … I.3 Implementação: Evolução dos Modelos Lógicos Modelo Relacional • Tipos nativos – – – – INTEGER REAL DATE STRING • Esquema de Banco de Dados Relacional (BDR) – Conjunto de tabelas – Regras de integridade (consistência do conteúdo das tabelas) • BDR – Linhas de tabela • Pelo menos uma linha não vazia • Linguagem de consulta – Operações sobre tabelas • Padrão SQL: esquema e consulta • Regras de transformação de esquemas de BDOO em esquemas de BDR – SGBDR: implementa BDRs • Pontos negativos – Pobreza de tipos – Não oferece encapsulação (operações) Modelo Objeto-Relacional (OR) • Tipos nativos – – – – – INTEGER REAL DATE STRING COLEÇÃO • ARRAY (padrão SQL99) • Oracle 10g – VARRAY – NESTED TABLE – APONTADOR (REFERENCE) • Tipos Definidos pelo Usuário (Extensibilidade) – Tipos de Objeto • Atributos stricto sensu • Atributos apontadores, ou referências • Métodos – Funções – Procedures – Hierarquias de tipos de objeto – Repositórios de tipos de objeto – • Typed Table (SQL99, IBM) • Object Table (Oracle) Linguagem de consulta SQLOR • Extensão-objeto da linguagem SQL Banco de Dados ObjetoRelacional (BD OR) • Esquema de BDOR – Conjunto de tipos persistentes de objeto • Instanciáveis e/ou não-instanciáveis • BDOR – Conjunto de Object(Typed) Tables e/ou conjunto de tabelas puramente relacionais • Um BDOR estende stricto sensu um BDR • Linguagem SQLOR – Operações sobre objetos de object(typed) table e/ou sobre linhas de tabela relacional • Regras de transformação de esquemas de BDOO em esquemas de BDOR • SGBDOR: implementa BDORs I.4 Projeto de Banco de Dados Requisitos UML / ODL + OQL (Padrão ODMG p/ BD OO) Esq. Conceitual OO Esq. Lógico R, OR Esq. Físico Oracle 10g; SQL Server; ...