Nuno Melo e Castro !" # Modelos de dados 1ª geração Modelo Hierárquico Modelo Rede 2ª geração Modelo Relacional 3ª geração Extensões ao modelo relacional Modelo lógico-dedutivo Modelo orientado a objectos $ %& Primeiro modelo de bases de dados Dados estruturados em hierarquias ou árvores, de tal forma que cada registo tem apenas um possuidor Cada registo é o equivalente a uma entidade do modelo entidade-relacionamento Na estrutura da árvore, os registos estão ligados entre si através de ligações que podem ser vistas como formas restritas de relacionamentos do modelo entidade-relacionamento Cada registo é uma colecção de campos (atributos) cada um dos quais contendo apenas um valor O acesso aos dados faz-se percorrendo as hierarquias, desde a raiz da árvore até encontrar o registo (nó) pretendido, numa sequência “cima-baixo-esquerda-direita” As BD hierárquicas têm bom desempenho no acesso sequencial, mas fraco desempenho no acesso aleatório $ %& Base de dados hierárquica Hierarquia (Árvore) Segmentos (Nós) Cada árvore tem uma raiz, que é um pseudo-nó A raiz tem apenas a função de ser uma origem comum, não contém informação Cada nó é um registo, e não podem existir ciclos entre os nós As ligações formadas na árvore devem ser tais que somente retratem relações 1:1 ou 1:M entre um nós pai e filhos Como consequência, o conteúdo de um registo pode ter de ser replicado em vários locais diferentes, o que significa redundância e possível inconsistência ' $ %& Regras de Integridade Um registo filho tem de ter um registo pai Um registo filho pode ser removido independentemente do seu registo pai A remoção de um registo implica a remoção de todos registos descendentes Não pode haver mais do que um registo pai para um registo filho (se houver implica a duplicação do registo filho) Um registo pai pode ter filhos de tipos diferentes A hierarquia pode estender-se por diversos níveis ( $ %& Esquema hierárquico Uma instância… &' ( " #$% ! )# ! ! $ %& Problemas Redundância Possibilidade de inconsistência Fácil obter informação sobre os clientes, mas, se quiser saber o preço a que foi facturado um determinado produto numa determinada factura de um determinado cliente… É necessário obter o nó raiz da árvore… Percorrer sequencialmente o segmento dos clientes até encontrar o cliente pretendido… Para esse cliente, procurar o segmento das facturas até encontrar a factura pretendida… Para essa factura, procurar o segmento dos produtos até encontrar o produto pretendido Não é possível criar produtos sem criar facturas A alteração do nome do produto tem de ser feita em todos os nós da árvore … É uma extensão ao modelo hierárquico Os registos estão organizados em grafos Desaparece o conceito de hierarquia, o mesmo registo pode ter diversas associações Só existe um tipo de associação (Set) que define um relacionamento entre dois tipos de registo Set Registo pai Registo filho = Owner = Member Uma BD em rede é um grafo nós arcos = registos = ligações entre registos ) Regras de Integridade Um Set tem de conter um Owner e zero ou mais Member No mesmo tipo de Set, um registo não pode aparecer mais de uma vez como Owner ou como Member Um registo pode ser Owner ou Member de um ou mais Sets, desde que estes sejam de tipos diferentes Nenhum registo pode ser simultaneamente Owner e Member do mesmo tipo de Set * Esquema em rede Uma instância… Características Surgiu em 1970, por E. F. Codd, tendo por base a teoria dos conjuntos Contribuiu decisivamente para a massificação da utilização da tecnologia de bases de dados A estrutura fundamental é a Relação / Tabela O esquema conceptual é constituído basicamente por um conjunto de relações ou tabelas Os relacionamentos entre tabelas definem-se através de atributos comuns (designadas por chaves) Manipulação dos dados do tipo set-oriented É mais fácil de controlar É mais flexível É mais intuitivo em função da organização dos dados em tabelas que são muito utilizadas A capacidade de ligar tabelas permite o relacionamento dos dados de novas formas, sem se ter que redefinir relações complexas Em virtude das suas vantagens, as organizações utilizam-no para as suas grandes bases de dados (marketing, contabilidade, ...) Número_Aluno Nome_Aluno Morada Curso 20060001 António Silva Maia Engª Informática 20060002 Júlio Pinto Matosinhos Engª Química 20060003 Vanda Coelho Porto Engª Mecânica 20060004 Zacarias Trindade Vila do Conde Engª Informática 20060005 Eva Stuart Porto Engª Civil + 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Numa base de dados relacional, todos os dados, incluindo o próprio dicionário de dados, são representados de uma só forma, em tabelas bidimensionais. Cada elemento de dados fica bem determinado pela combinação do nome da tabela onde está armazenado, do valor da chave primária e respectiva coluna (atributo). Valores nulos (nulls) são suportados para representar informação não disponível ou não aplicável, independentemente do domínio dos respectivos atributos. Os metadados são representados e acedidos da mesma forma que os próprios dados. Apesar de um sistema relacional poder suportar várias linguagens, deverá existir pelo menos uma linguagem com as seguintes características: – Manipulação de dados, interactiva ou em programas; – Definição de dados; – Definição de views; – Definição de restrições de integridade; – Definição de acessos (autorizações); – Manipulação de transacções (commit, rollback, …) Numa view, todos os dados actualizáveis que forem modificados, devem ver essas modificações traduzidas nas tabelas da base. Capacidade de tratar uma tabela (base ou virtual) como se fosse um simples operando (ou seja, utilização de uma linguagem set-oriented ), tanto em operações de consulta como de actualização. Alterações na organização física dos ficheiros da base de dados ou nos métodos de acesso a esses ficheiros (nível interno) não devem afectar o nível conceptual - independência física. Alterações no esquema da base de dados (nível conceptual), que não envolvam remoção de elementos, não devem afectar o nível externo – independência lógica. As restrições de integridade devem poder ser especificadas numa linguagem relacional, independentemente dos programas de aplicação, e armazenadas no dicionário de dados. O facto de uma base de dados estar centralizada numa máquina, ou distribuída por várias máquinas, não deve repercutir-se ao nível da manipulação dos dados. Se existir no sistema uma linguagem de mais baixo nível (tipo record-oriented ), ela não deverá permitir ultrapassar as restrições de integridade e segurança. % Linguagens de manipulação de dados (DML) Comandos para consulta de informação Comandos para manipulação de informação São “set-oriented”, ou seja actuam sobre conjuntos e devolvem como resultado conjuntos Álgebra relacional Linguagem procedimental Tem o mesmo poder de expressão que o Cálculo relacional Variantes da Álgebra relacional são usadas internamente pelos SGBDs relacionais durante a optimização de consultas SQL Originária do cálculo relacional Interface padrão dos SGBDs relacionais ' Álgebra relacional Operações mapeiam uma ou mais relações em uma nova relação Algumas operações impõem restrições nas relações de entrada Operações Básicas Teoria dos conjuntos: Produto cartesiano, União e Diferença Específicas relações: Selecção, Projecção e Renomeação Adicionais Teoria dos conjuntos: Intersecção Específicas relações: Divisão e Junção ( +% Cálculo Relacional Cálculo relacional de tuplos Cálculo relacional de domínios Linguagem declarativa, com que se define o que se pretende obter e não como se pode obter, set-oriented Além dos operadores lógicos e dos operadores condicionais, tem os operadores: Quantificador existencial Quantificador universal % A Álgebra relacional e o Cálculo relacional não se utilizam na manipulação efectiva dos dados em sistemas relacionais; O seu interesse advém do facto de terem servido como base para o desenvolvimento das diferentes linguagens hoje utilizadas na manipulação dos dados em sistemas relacionais; São abstracções de interfaces ideais próximas das especificações do modelo relacional teórico.