Objetivo da aula
- Classificar os BDs quanto ao modelo, número de usuários e localização
- Apresentar modelos hierárquico, relacional, OO e Rede
- Conhecer as vantagens na utilização do BD
Classificação de Bancos de Dados
Quanto ao Modelos de dados
Hierárquico
- Primeiro modelo de banco de dados e tem como conceito fundamental o registro e o relacionamento pai-filho. Este modelo utiliza apontadores entre os diferentes registos.
- Nesse modelo de dados, os dados são estruturados em hierarquias. Os registros possuem sub-registros e assim sucessivamente, formando uma ramificação semelhante a uma árvore. Dois registros são unidos por um elo, um é ascendente e outro é descendente. Um ascendente pode ter vários descendentes mas cada descendente tem apenas um ascendente direto. As raízes são os únicos registros que não possuem “PAI” e nenhum nível de ascendente pode faltar
- Registro:
- Coleção de valores que representam informações sobre uma dada entidade de um relacionamento
- Relacionamento Pai-Filho:
- Um tipo de registro do lado Pai pode se corresponder com vários (ou nenhum) tipos de registros do lado Filho
- A arquitetura hierárquica destina-se a captura e controle de estruturas de dados com as seguintes características:
- Existe uma ordem de precedência entre os dados
- Todos os dados estão em relações 1:n
- Todas as relações são unidirecionais
- As estruturas de dados formam estruturas semelhantes a árvores
- Nos ambientes de “main frames” esta arquitetura ainda é a dominante com os produtos IMS e DMS II. Para os computadores pessoais os produtos correspondentes são Formbase e Data Perfect. Estes BD exigem dos usuários a codificação da chamada ao BD e a passagem dessa codificação a partir de uma área de controle.
- Tomando por base o produto IMS da IBM, o BD tem como componentes:
- Área de armazenamento de dados
- Definição do BD
- Coleção de blocos de controle de programas
- O descritor de bancos de dados, ou DBD, identifica:
- Nome do BD
- Nome de cada segmento
- Chaves de identificação de cada segmento
- Relacionamentos de cada segmento com os demais
- Nome, tamanho e estrutura dos arquivos físicos que armazenam o BD
- O relacionamento entre um registro-pai e vários registros-filhos possui cardinalidade 1:N
- Os dados organizados segundo este modelo podem ser acessados segundo uma sequencia hierárquica com uma navegação do topo para as folhas e da esquerda para direita
- Um registro pode estar associado a vários registros diferentes, desde que seja replicado
- A replicação possui duas grandes desvantagens:
- pode causar inconsistência de dados quando houver atualização
- o desperdício de espaço é inevitável.
- Exemplos: Um banco de Dados hierárquico representando cliente ...
- Nome, Rua e Cidade
- Número da Conta e Saldo
- onde cada cliente tem uma ou mais contas.

- Propriedades:
- Um tipo de registro que não possui um tipo de registro pai é denominado raiz
- Com exceção do tipo de registro raiz, todos os demais correspondem a tipos de registros filho dentro de um único tipo de relacionamento
- Um tipo de registro pai pode aparecer em qualquer número de relacionamentos
- Um tipo de registro filho que não possui descendentes é denominado folha
- IMS - Information Management System: 1o. banco de dados hierárquico conhecido. Desenvolvido pela IBM e Rockwell International.
- Considerações sobre BD hierárquico:
- Pode ser mapeado à partir de um diagrama Entidade Relacionamento
- Possui consultas complexas
- O modelo impõe restrições à descrição do mundo real atual
- Requer boas noções para a estruturação dos dados
- Tem a vantagem que os dados podem ser acessados e atualizados rapidamente porque a estrutura do tipo árvore e as relações entre os registos são previamente definidas
- Problemas:
- Complexidade dos diagramas de estrutura de árvore
- Não pode haver ciclos no gráfico básico de um diagrama de estrutura de árvore
- Restrições à cardinalidade dos links (de muitos para muitos (N:M) e de muitos para um (N:1))
- Ausência de facilidades de consultas declarativas
- Necessidade de navegação por ponteiros para acesso à informações
- Pode gerar dados incoerentes e ainda redundância
- Tem a desvantagem de que cada filho na árvore pode ter apenas um pai, e os relacionamentos ou ligações entre os filhos não são permitidos, mesmo que façam sentido
- Exigem muita rigidez no projeto visto que a adição de um novo campo ou registro requer que o banco de dados inteiro seja redefinido.
- Exemplo:
Relacional
- Organiza os dados em tabelas formadas por linhas e colunas
- Como na Matemática, podemos efetuar operações entre dois ou mais conjuntos, ou entre duas ou mais tabelas
- Permitem criar ligações entre duas ou mais tabelas usando campos comuns
- Uma operação de consulta gera uma tabela virtual

As 12 regras de Codd:
- Sandra Albuquerque Siebra
- UFRPE
- 01. Regra de informações: base em tabelas e campos em comum
- As informações a serem armazenadas no Banco de Dados devem ser apresentadas como relações (tabelas formadas por linhas e colunas) e o vínculo dos dados entre as tabelas deve ser estabelecido por meio de valores de campos comuns (chaves estrangeiras)
- O sistema precisa ser qualificado como relacional, como um banco de dados, e como um sistema de gerenciamento
- 02. Regra de acesso garantido: referência a parâmetros específicos
- Todo e qualquer valor atômico possui a garantia de ser logicamente acessado pela combinação do nome da tabela, do valor da chave primária e o nome do campo/coluna que se deseja acessar.
- Proposta de endereçamento baseado em campos com nomes e tipos bem definidos e um ou alguns obrigatoriamente compondo a chave primária
- 03. Tratamento de valores nulos: valores nulos devem ter tratamento diferente de valores em branco
- Valores nulos devem ser suportados de maneira sistemática e independente do tipo de dados para representar informações inexistentes ou inaplicáveis, lembrando que valor nulo é diferente de valor em branco.
- 04. Catálogo on-line baseado no modelo relacional
- Os metadados devem ser armazenados e gerenciados como dados comuns, ou seja, em tabelas no interior do BD. Esses dados devem estar disponíveis aos usuários autorizados, utilizando a linguagem relacional padrão do BD
- Todo o armazenamento e tratamento de qualquer informação de controle ou configuração deve ser feita em padrões similares à manipulação dos dados comuns
- 05. Sublinguagem Ampla de Dados: Inserção, exclusão e alteração em bloco
- O BD deve dar suporte à configuração do nível de inserções, atualizações e exclusões. Ou seja, a capacidade de manipular um conjunto de dados através de um comando, deve-se estender às operações de Linguagem de Manipulação de Dados (DML) como insert, update e delete.
- Deve propiciar uma linguagem que atenda relações entre tabelas que aceite definição e manipulação de dados
- 06. Linguagem de manipulação de dados abrangentes: permite manipulação de dados por meio de aplicativos
- O BDR pode suportar várias linguagens. No entanto deve suportar uma linguagem declarativa bem definida com suporte para definição de dados, definição de visualização, manipulação de dados (interativa ou por programa), restrições de integridade, autorização e gerenciamento de transações (iniciar, comprometer e desfazer).
- 07. Independência física dos dados: Transparência - Separa as aplicações de usuários da base de dados física
- Aplicativos e recursos ad hoc não são afetados logicamente quando os métodos de acesso ou as estruturas de armazenamento físico são alterados.
- Se houver qualquer modificação quanto ao local de armazenamento físico dos dados ou, ainda, uma mudança qualquer de índices de acesso, o programa de aplicação, logicamente estável, não sofrerá nenhuma paralisação nem precisará de alterações
- 08. Independência lógica dos dados: Transparência do esquema lógico do banco de dados, exemplo, visões
- Aplicativos e recursos ad hoc não são afetados logicamente quando de alterações de estruturas de tabela que preservem os valores originais da tabela (alteração da ordem ou inserção de colunas). Alterações nas relações e nas views causam pouco ou nenhum impacto nas aplicações.
- Os programas de aplicação também permanecem inalterados quando são feitos nas tabelas, mudanças de qualquer tipo para preservar a informação, ou seja, a junção de duas tabelas não afeta os programas, assim como a criação de novos campos e as operações de seleção que dividem uma tabela por linhas ou colunas, desde que se preservem as chaves primárias
- 09. Regra de atualização de visões: aplicativos devem ser capazes de alterar visões
- Qualquer visualização que teoricamente possa ser atualizada deve ser por meio do sistema.
- Pode-se criar visões em cima dos dados que tem as mesmas características de uma tabela comum
- 10. Independência de integridade: devem estar desvinculadas dos aplicativos
- Deve ser possível que todas as restrições de integridade relacional sejam definidas na linguagem relacional e armazenadas no catálogo de sistema, não no nível da aplicação. As aplicações não devem ser afetadas quando ocorrer mudanças nas restrições de integridade.
- Restrições de domínio e regras para validação de alguns ou todos os atributos devem ser armazenáveis no dicionário de dados. Definições, por exemplo, do tipo de caractere de um campo – se numérico, se inteiro ou de tamanho variável – devem estar especificadas nele
- 11. Independência de distribuição: a diversificação dos sistemas não pode afetar a funcionalidade dos aplicativos
- Os usuários finais e aplicativos não conhecem nem são afetados pela localização dos dados (BD Distribuídos VS. BD Locais).
- A sublinguagem deve permitir que os programas de aplicação permaneçam inalterados enquanto os dados são distribuídos, tanto na inicialização de um sistema quanto na ocorrência de uma redistribuição. Se um sistema, por sua implementação, tiver arquivos redistribuídos em meios ou máquinas diferentes, a sublinguagem do SGBD fará o controle e a ligação com os programas de aplicação, sem que seja necessário realizar nenhuma modificação neles
- 12. Regra não subversiva: sistema deve ser capaz de impedir transgressões nos mecanismos de segurança
- Se o sistema dá suporte a acesso de baixo nível aos dados, não deve haver um modo de negligenciar as regras de integridade do BD.
- Se processarmos registro a registro, isso não poderá implicar a burla de restrições específicas dos objetos do banco de dados. Por exemplo, a utilização de uma linguagem de baixo nível não poderá adicionar um registro sem os atributos definidos, no dicionário, como obrigatórios para uma determinada tabela.
Case: Sistema de Produção
- Em bancos de dados relacionais pode ser necessário um campo comum em diversas tabelas para que seja possível definir relacionamentos entre elas.
Orientado a objetos
- Utilizam conceitos tais como Entidades, Atributos e Relacionamentos. Uma entidade é um objeto que é representado na base de dados. Um atributo é uma propriedade que descreve algum aspecto de um objeto
- Relacionamentos entre objetos são facilmente representados em modelos de dados de alto-nível
- Representação de baixo nível:
- Descrevem como os dados são armazenados no computador, representando informações em formato de registros, ordem dos registros e caminho de acesso
- Um caminho de acesso é uma estrutura que facilita a busca de um registro particular na base de dados
- Descrevem como os dados são armazenados no computador, representando informações em formato de registros, ordem dos registros e caminho de acesso
- Esquema:
- Descrição das estruturas e das operações de um banco de dados específico, utilizando um modelo de dados
- Especificado durante o projeto da base de dados, sendo que a expectativa de mudanças normalmente não é grande
- A forma de visualização de um esquema é chamada diagrama do esquema
- Muitos modelos de dados têm convenções para criar diagramas (mostrar o modelo através de um desenho)
- Instância: São os dados da base de dados num momento específico. Pois os dados existentes podem ser modificados
- A necessidade de armazenar dados mais complexos levou à criação dessa modalidade de Banco de Dados
Exemplos
- SIG

- CAD

- CAM

- Imagens

- Games

- Web Semäntica

- ...
- Os dados são armazenados sob a forma de objetos, estruturas chamadas classes que apresentam dados membros
- Os campos são instâncias destas classes
- Padrão de estrutura: ODMG - Object Data Manager Group

Rede
- Utilizado principalmente no final da década de 60 e durante a década de 70, o modelo em rede surgiu como uma extensão ao modelo hierárquico, eliminando o conceito de hierarquia e permitindo que um mesmo registro estivesse envolvido em várias associações
- Organiza os dados em uma estrutura formada por várias listas, que definia uma confusa rede de ligações, estrutura similar a um grafo direcionado
- Cada registro “filho” pode ser ligado a mais de um registro “pai”, possibilitando a formação de ligações mais complexas, porque não há a restrição a um só tipo de relacionamento que vigora.
- Conhecidos como DBTG (Data Base Task Group) ou CODASYL
- Largamente utilizados em computadores de grande porte
- Mesmo registro pode participar de vários relacionamentos
- Possibilidade de acesso direto a determinado registro/nó da rede
- Linguagens comuns: COBOL, PASCAL e FORTRAN
- Um BD em rede é organizado em “data items”, que são campos, “record type”, que são coleções de registros semelhantes e “sets”, ou relacionamentos lógicos. Esta arquitetura permite relações m:n e relações recursivas nas quais é a arquitetura mais eficiente.
- Um exemplo típico desta arquitetura é o IDMS, da Computer Associates.
- A navegação nos BD em rede é feita seguindo encadeamento de ponteiros. Os usuários devem descobrir a chave pré definida para um “record type”, preparar os parâmetros para uma chamada ao banco, e disparar o comando GET NEXT ou OBTAIN NEXT.
- Para relacionar dois “record types” o DBA deve criar um elo entre estas construções de dados. Este relacionamento encadeado é chamado de “set”. A navegação é feita acompanhando os “sets”.
- Um BD CA-IDMS é composto de páginas, que são conjuntos de registros, e de áreas, que são coleções de páginas. A definição global de dados é feita por um esquema. O esquema compõe-se de diversos sub esquemas, que definem as áreas, os “sets”, os registros, os itens de dados. Uma linguagem de controle de meios e dispositivos mapeia as áreas em arquivos físicos.
- Chama-se de “communication block” a uma área de trabalho utilizada para a comunicação entre os programas de aplicação e o BD. Por meio desta área são passados comandos ao BD e recebidas as informações de estado.
- As características dos Bancos de Dados em rede podem ser assim resumidas:
- Descrição de Dados: Esquemas, Tipos de Registros, Campos, Áreas, Bancos de Dados
- Organização de Dados: Coleção de tipos de registros relacionados uns aos outros por encadeamento (ponteiros físicos)
- Construção de Dados: IDMS-GEN
- Navegação:
- Busca: Buscas simples e ligeiramente complexas
- Referências cruzadas: Navegação na rede de ponteiros
- Mapeamento: Apenas estático, definido pelos caminhos da rede
- Processamento: Apenas um registro de cada vez
- Estruturas fundamentais: Registros (Records) e Conjuntos (Sets)
- Permite que várias tabelas sejam usadas simultaneamente através do uso de ponteiros
- Algumas colunas contêm ponteiros para outras tabelas ao invés de dados, assim, as tabelas são ligadas por referências
- O modelo de banco de dados em rede, amplia o modelo de registros permitindo a adição de múltiplos registros
- Uma coluna do registro pode ser definida como, uma referência a uma ou mais entradas de um registro diferente
- Assim os registros são relacionados, por meio de referências o que pode ser visualizado como uma estrutura em rede
- Também utilizam ponteiros para fazer referência aos registros propriamente ditos
- Os dados são representados por uma coleção de registros e os relacionamentos entre dados são representados por meio de links
- Um link é uma associação entre exatamente dois valores
- Acesso a qualquer nó da rede sem passar pelo nó raiz
- Exemplos: Adabas e IDMS
- Adabas: Considerado por alguns como um dos primeiros SGDBs produzidos comercialmente. Inicialmente foi lançado para mainframes da IBM, porém atualmente o Adabas é suportado em diversas plataformas, incluindo o OpenVMS, Unix, Linux e Windows. Adabas tem mantido a posição como um dos mais rápidos banco de dados OLTP oferecendo a funcionalidade 24x7
- Baseado em Listas Invertidas
- IDMS: Integrated Data Management System ou Sistema de Gerenciamento de Dados Integrado
- É um banco de dados em rede da Computer Associates e foi desenvolvido a 5 décadas
- São executados em minicomputadores até poderosos mainframes.
- Adabas: Considerado por alguns como um dos primeiros SGDBs produzidos comercialmente. Inicialmente foi lançado para mainframes da IBM, porém atualmente o Adabas é suportado em diversas plataformas, incluindo o OpenVMS, Unix, Linux e Windows. Adabas tem mantido a posição como um dos mais rápidos banco de dados OLTP oferecendo a funcionalidade 24x7
- Problemas:
- O modelo de rede é fortemente dependente da implementação
- Registros artificiais precisam ser criados para implementar relacionamentos muitos para muitos
- As consultas são complicadas: o programador é forçado a pensar em termos de links e, em como percorrê-los para obter as informações de que necessita
- Essa manipulação de dados é chamada navegacional
- Manteve-se, durante anos, à frente do modelo relacional porque, inicialmente, as implementações do modelo relacional eram ineficientes
- E hoje, por quê desenvolvedores escolhem Graph Database ao invés de um banco de dados tradicional?
- Jonathan Allen
- http://www.infoq.com/br/news/2010/09/Graph-Databases
- "Ao contrário dos bancos de dados que armazenam seus dados em linhas, colunas ou pares de chave-valor, um banco de dados de grafos armazena toda informação em uma rede de nós e arestas. As arestas representam o relacionamento entre os nós que representa os objetos. Devido aos nós e arestas serem representados como objetos (os quais os desenvolvedores estão acostumados) é possível definir atributos (também chamado de propriedades) a eles. Adicionando uma direção para uma aresta cria o conhecido grafo de propriedades que representa a explícita estrutura de dados dentro de um banco de dados de grafo.
- Portanto, diferente de outras abordagens de banco de dados onde apenas implicitamente é possível formar uma estrutura de grafos, um banco de dados de grafo explicitamente representa um grafo. Enquanto outros bancos de dados precisam usar índices e algumas estruturas auxiliares (como tabelas de relacionamento para fazer JOINs) um banco de dados de grafo pode percorrer de um objeto aos seus objetos relacionados, pois esses objetos são organizados para possuir adjacências sem índices
- Existem diversos casos de uso onde banco de dados de grafos é a opção mais natural. Por exemplo em redes sociais é mais fácil utilizar uma estrutura de grafos para representar relações entre amigos e percorrer e realizar pesquisas como "busque todos os amigos dos amigos de meus amigos". Além disso, algoritmos comuns baseados em grafos, como pesquisas através de um caminho, são fáceis de implementar percorrendo o grafo."

Quanto ao Número de Usuarios Suportados
- Monousuário: apenas um usuário por vez. Dbase III, Dbase IV, FoxBase, FoxPro.
- Multiusuário: Acesso de vários usuários ao mesmo tempo. Fator concorrência.

Quanto à Localização
- Centralizado: Sistema de gerenciamento e banco de dados estão localizados na mesma máquina, o servidor de banco de dados
- Distribuído: Sistema gerenciador e banco de dados armazenados em diferentes máquinas.

Vantagens no uso do SGBD
- Responsabilidade de manter a integridade dos dados do sistema
- Checagem fica a cargo do SGBD e não do programador (ex.: como acontecia com a linguagem Clipper)
- Facilita a manutenção no armazenamento dos dados, nos quais são modificados através de procedimentos do próprio sistema
- Balanceamento de carga
- Responsabilidades do SGBD (ficam com o SGBD) e responsabilidades da aplicação (ficam com a aplicação)
- Rotinas de backup
- Procedimentos de concorrência ao sistema
- Ambientes distintos entre Desenvolvimento (ou Testes), Homologação (ou Qualidade) e Produção
- Ambientes em servidores físicos diferentes


