Apostila de Banco de Dados e SQL

Apostila de Banco de Dados e SQL

(Parte 2 de 8)

Estrutura

Podemos dizer que o Banco de Dados tem um Nível Interno, onde é descrita a estrutura de armazenamento físico dos dados, um Nível Intermediário, onde temos a descrição lógica dos dados e um Nível Externo onde são descritas as visões para grupos de usuários.

Não podemos deixar de lembrar ainda que o Banco de Dados garante a Independência Lógica e Física dos Dados, portanto podemos alterar o esquema conceitual dos dados, sem alterar as visões dos usuários ou mesmo alterar o esquema interno, sem contudo alterar seu esquema conceitual.

Modelos de Dados

O Modelo de Dados é basicamente um conjunto de conceitos utilizados para descrever um Banco de Dados. Não existe uma única forma de representação deste modelo, porém qualquer forma que permita a correta compreensão das estruturas de dados compreendidas no Banco de Dados, pode ser considerada adequada. Vamos descrever sucintamente este modelo, pois estes serão objetos de outras disciplinas:

Modelo Orientado ao Registro: São modelos que representam esquematicamente as estruturas das tabelas de forma bastante próxima a existente fisicamente. Basicamente são apresentados os registros de cada tabela (inclusive seus campos) e seus relacionamentos elementares. O Modelo Relacional, o Modelo de Rede e o Hierárquico são exemplos deste tipo de representação.

Modelo Semântico: São modelos onde existe uma representação explícita das entidades e relacionamentos. O Modelo

Entidade-Relacionamento e o Funcional, são exemplos deste tipo de abordagem.

Modelo Orientado ao Objeto: São modelos que procuram representar as informações através dos concietos típicos da

Programação Orientada ao Objeto, utilizando o conceito de Classes que irão conter os objetos. Citamos os Modelos O2 e o de Representação de Objetos como exemplos típicos desta abordagem.

O conceito de instância, sempre muito presente, poderia ser definido como sendo o conjunto de dados que definem claramente um Banco de Dados em deteminado instante. Devemos entender então o Banco de Dados como sendo não apenas um conjunto de dados digitados, mas também todo o esquema e regras armazenada e controladas pelo SGBD.

Em outras palavras, podemos dizer que os SGBD, vieram para eliminar todo o trabalho que anteriormente um programador de aplicação realizava controlando o acesso, integridade e redundância dos dados.

Componentes de um Banco de Dados

Um Banco de Dados é composto pelas seguintes partes:

Gerenciador de Acesso ao Disco: O SGBD utiliza o Sistema Operacional para acessar os dados armazenados em disco, controlando o acesso concorrente às tabelas do Banco de Dados. O Gerenciador controla todas as pesquisas queries) solicitadas pelos usuários no modo interativo, os acessos do compilador DML, os acessos feitos pelo Processador do Banco de Dados ao Dicionário de Dados e também aos próprios dados.

Compilador DDL (Data Definition Language) processa as definições do esquema do Banco de Dados, acessando quando necessário o Dicionário de Dados do Banco de Dados.

Dicionário de Dados contém o esquema do Banco de Dados, suas tabelas, índices, forma de acesso e relacionamentos existentes.

Processador do Banco de Dados manipula requisições à própria Base de Dados em tempo de execução. É o responsável pelas atualizações e integridade da Base de Dados.

Processador de Pesquisas (queries) dos usuários, analisa as solicitações, e se estas forem consistentes, aciona o

Processador do Banco de Dados para acesso efetivo aos dados.

As aplicações fazem seus acessos ao pré-compilador DML da linguagem hospedeira, que os envia ao Compilador DML

(Data Manipulation Language) onde são gerados os códigos de acesso ao Banco de Dados.

Tipos de SGBD

Introdução

Podemos citar como tipos principais os Bancos de Dados Relacionais, os Hierárquicos, os de Rede, os Semânticos, os Orientados a Objetos e os Universais.

Os Bancos de Dados alvo de nosso estudo serão os Relacionais, sendo que os demais tipos serão apenas citados superficialmente, por não serem parte integrante de nosso curso.

Esquema de Organização dos Dados

Em Linguagem C os estudantes tomaram (ou irão tomar contato) com os ponteiros de registro, que aqui representaremos como sendo números de acesso ao registro. Visando diferenciar o número do registro físico do número do registro apontado pelo ponteiro, usaremos o símbolo (#) para indicar o número do registro físico, enquanto o símbolo (*) será utilizado pelo para indicar o endereço indicado pelo ponteiro, a semelhança da representação usual dos programadores da Linguagem C.

#1-Amarelo*2
#2-Azul*3
#3-Branco*4
#4-Preto*5
#5-Verde*6
#6-Vermelho--

Vamos supor o arquivo abaixo ordenado alfabeticamente (físico):

Supondo desejarmos incluir a cor Laranja, seríamos obrigado a re-escrever todo o arquivo de modo a Laranja ocupar o registro 4. Vamos antes de fazer uma nova ordenação, analisar a solução abaixo:

#1-Amarelo*2
#2-Azul*3
#3-Branco*7
#4-Preto*5
#5-Verde*6
#6-Vermelho--
#7-Laranja*4

Observe que o registro #3 (Branco) passou a apontar para o registro *7, que contém o novo dados (Laranja). O novo dado passa a apontar para o registro previamente apontado pelo registro que agora o aponta. Parece, e é confuso, mas se você analisar o esquema abaixo perceberá que apesar do palavreado confuso, facilmente qualquer um de nós percebe a maneira adequada de inserir novos registros.

#1Algo--> *2

Algo --> Apontado Algo --> Novo --> Apontado #2 Apontado não aponta (é o último física e logicamentex)

#1Algo--> *3

#2 Apontado não aponta (é o último logicamente)

#3Novo--> *2 (éoúltimofisicamente)

A chamada perda de ponteiros, fenômeno dos mais temidos pelos profissionais de sistema, nada mais é que a perda de referência lógica entre registros de uma tabela.

Existem diversas técnicas de acesso como as chamadas Btree+ (Arvore Binária Balanceada), Hashing, Sequencial Ordenado, Hashing Dinâmico, Hashing Extensível e Hashing Linear, próprios para um curso específico de Banco de Dados, que não chegaremos a analisar em nosso curso.

Sabemos que em linguagem C foi (ou será) apresentada a técnica de balanceamento de estruturas, que mostrou (ou mostrará) como um Banco de Dados é arranjado internamente.

Exercício: Represente esquematicamente o arranjo alfabético dos seguintes times de futebol: Fluminense, Flamengo,

Vasco, Botafogo, Madureira, América e Olária. Suponha ainda que o Bangu queira participara do campeonato, como ficaria a nova ordem da tabela?

Banco de Dados Hierárquicos

Seguem o estilo de um organograma empresarial (Diretoria-Divisão-Seção-Setor) ou de biblioteca (Exata-Matemática- Algebra Linear-Vetores). Este modelo é capaz de representar este tipo de organização de forma direta, mas apresenta inconvenientes quando esta situação não aparece claramente com relações de hierarquia.

FábricaFinanceiro Comercial
InjeçãoExtrusão Pagar Receber Contábil Vendas Marketing
PauloVinícius Vilma Sílvia Dagoberto Juracy Richard
PedroCarlos Ernesto Sandra Paula Pedrinho

O Exemplo a seguir (Folha de Pagamento) deve servir para esclarecer melhor o estilo deste modelo João

Sabemos que Paulo é "filho" da Injeção que por sua vez é "filha" da Fábrica.

Banco de Dados em Redes

Neste modelos os dados são dispostos em registros, previamente classificados em classes que descrevem a estrutura de determinado tipo de registro. Os registros são descritos em relações de conjuntos onde são estabelecidas as ligações lógicas entre eles.

O esquema abaixo representa este tipo de Ligação

#1 Nome LocalApontada Aponta_Início Aponta_Final
#7 NomeMáquina...Apontada(*1) Aponta_I(*15) Aponta_F(*18)
#15Paulo28(Idade)(*7) (*17)
#18João 25(*17) (*7)

Fábrica Injeção

Um confusão habitualmente verificada, diz respeito a confusão que existe entre o conceito do Modelo de Redes e o existente na matemática. No modelo de Redes temos sempre um elemento distitivo, o registro base e a partir dele são dispostos os demais registros. Temos sempre tipos de conjunto, que dispõe de três elementos, a saber: nome, tipo de registro pai e tipo de registro filho. Supondo um Registro contido no Arquivo de Disciplinas ministradas na Íbero, este seria um registro pai, na medida em que conteria a referência aos seus registros filhos (os alunos cursando aquela disciplina).

As restrições impostas pelo Modelo de Redes podem ser descritas como de ordem de Entrada e de Existência. Em relação as restrições de entrada citamos a obrigatoriedade de cada novo registro estar conectado (ou apontado, como preferem os programadores C) ao conjunto indicado. Em relação a restrições de Existência podemos dizer que um componente de um tipo de registro pode existir de forma independente de outros desde que esteja conectado a algum outro registro fazendo parte de algum conjunto, ou sendo base de um novo conjunto. A identificação de um conjunto pode ser verificada através do esquema de ligação entre o registro pai e o registro filho, assim sendo, cada instância de conjunto apresenta um elemento de distinção, o tal registro pai, e os registros filhos devidamente ordenados, e portanto passíveis de serem acessados pelos seus elementos.

Exemplo: Disciplina Tópicos Avançados e seus Alunos

Registro de Disciplinas Informática

(Parte 2 de 8)

Comentários