Visitantes

Powered By Blogger

Pesquisar neste Blog

domingo, 22 de dezembro de 2019

SQL - Structured Query Language


SQL - Structured Query Language


Introdução 

Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. 

SQL - Linguagem Estruturada de Consulta, foi desenvolvida nos laboratórios do departamento de pesquisas da IBM, que desenvolveu a SQL como forma de interface para o sistema de banco de dados relacional denominado SYSTEM R, no início da década de 70, e  atualmente é o padrão adotado em banco de dados mundialmente. 

Em 1986 o American National Standard Institute (ANSI), publicou um padrão SQL.  O SQL estabeleceu-se como linguagem padrão de Banco de Dados Relacional. 

O SQL se diferencia das outras linguagens utilizadas para bancos de dados por especificar a forma do resultado e não o “caminho” para se chegar a ele é uma linguagem declarativa em oposição a outras linguagens procedurais. 


Os recursos disponibilizados pelo SQL são agrupados em cinco funcionalidades: 

DDL (Data Definition Language) = Linguagem de Definição de Dados, por meio dela podemos definir estruturas do banco tais como: tabelas, visões, sequenciais e outras estruturas. 

Comandos da DDL: CREATE (criação de estrutura), ALTER (alterar estrutura) e DROP (permite remover ou excluir uma estrutura). 

DDL (Data Definition Language) do SQL apresenta uma série de comandos que permitem a definição dos dados, composta pelos comandos. Como exemplo de comandos da classe DDL temos os comandos Create, Alter e Drop. 

O Comando Create, é destinado a criação do Banco de Dados, a criação das Tabelas que o compõe, além da criação das relações existentes entre as tabelas.


DML (Data Manipulation Language) = Linguagem de Manipulação de Dados, permite inserir, alterar e excluir informações nos objetos construídos pela DDL. 

A DML possui três comandos: INSERT (inserir dados), UPDATE (alterar informações) e DELETE (excluir dados). 

Os comandos da série DML (Data Manipulation Language), são destinados a consultas, inserções, exclusões e alterações em um ou mais registros de uma ou mais tabelas de maneira simultânea. 
Como exemplo de comandos da classe DML temos os comandos Select, Insert, Update e Delete. 





DQL (Data Query Language) = Linguagem de Consulta de Dados, complementa e permite recuperar e ler dados na estrutura do banco de dados, comando utilizado: SELECT possibilita a ordenação e agrupamento dos dados, cálculos (funções aritméticas) e filtros de seleção. 


DCL (Data Control Language) = Linguagem de Controle de Dados, gerencia as permissões de quem pode acessar o banco de dados, o que cada usuário tem acesso, quem pode ou não alterar e remover dados, dentre outras operações, dispõe de comandos de controle como Grant e Revoke.

Comandos da DCL: GRANT (habilita acesso a dados e operações) e REVOKE (revoga o acesso a dados e operações). 


DTL (Data Transaction Language) = Linguagem de Transação de Dados, permite operações conjuntas sendo estas iniciadas pela START TRANSATION, seguidas pela COMMIT (concretiza a transação) que informa ao servidor que a transação foi concluída com sucesso ou ROLLBACK que anula a transação. 

START TRANSACTION* COMMIT ROLLBACK * 

No SQL Server o comando START deve ser substituído por BEGIN 

Outra característica muito importante disponível em SQL é sua capacidade de construção de visões, que são formas de visualizarmos os dados na forma de listagens independente das tabelas e organização lógica dos dados. 

Outra característica interessante na linguagem SQL é a capacidade que dispomos de cancelar uma série de atualizações ou de as gravarmos, depois de iniciarmos uma seqüência de atualizações. 

Os comandos Commit e Rollback são responsáveis por estas facilidades. Devemos notar que a linguagem SQL consegue implementar estas soluções, somente pelo fato de estar baseada em Banco de Dados, que garantem por si mesmo a integridade das relações existentes entre as tabelas e seus índices. 

O Ambiente SQL Dispomos na Ibero de dois softwares destinados a linguagem SQL o ISQL e o WinSQL. 

O ISQL faz parte do pacote Ideo e permite construirmos Banco de Dados e tabelas diretamente pelo interpretador SQL, bem como acessarmos as Bases de Dados construídas no Ideo. 

O ISQL pode gerar Banco de Dados em seu ambiente proprietário (Watcom, hoje pertencente a Symantech) ou ainda nos consagrados Banco de Dados Oracle, SyBase, Ingres (Computer Associates), DB/2 (IBM) e Informix. 

Devido as origens do Ideo, o Banco de Dados SQL Server da Microsoft não é suportado, pois este Banco de Dados originou-se na microinformática e somente recentemente a Sapiens migrou seu software dos Ambientes Mainframe e Unix.

Já o WinSQL é um ambiente inteiramente gráfico (ao contrário do ISQL que guarda fortes características do ambiente em Mainframe onde se originou), destinado ao aprendizado, portanto somente pode criar Banco de Dados em seu formato proprietário. 

Os comandos do WinSQL por serem visuais, não necessitam de maior esclarecimento além daqueles já contidos no Help. 

Já o ISQL apesar de possuir um Help bastante completo necessita, em nosso entender, de alguns esclarecimentos iniciais. Uma série de comandos do interpretador, que funciona de forma análoga àquela existente no dBase modo interativo, podem ser utilizados pelo usuário. 

Não obstante alguns comandos tenham nome idêntico a alguns comandos do DOS, devemos notar que muitas vezes sua sintaxe é bastante diversa daquele sistema operacional. 

Vamos destacar os seguintes comandos: 

\EDIT 
- Carrega o editor de bloco de notas do windows, o qual serve para a criação de arquivos para serem executados no Ideo. 
Exemplo: \edit teste.sql 

\CD 
- Mostra o diretório onde serão gravados os arquivos *.sql, *.dic *.dat. Permite alterar para determinado diretório (\CD DADO, fará com que o diretório corrente passe a ser C:\DADO, caso o diretório corrente fosse a raiz. 
Permite retornar ao diretório de nível inferior (\CD ..). 

Atenção este comando não é análogo ao Change Dir do DOS, na medida em que não permite a mudança direta de um subnível do diretório X para um diretório Y por exemplo. 

\DEFAULT 
- permite alterarmos o drive corrente. 
Exemplo: \DEFAULT F: \INCLUDE 
- Executa arquivos *.sql. 

O arquivo .sql deverá conter uma série de instruções SQL. 
Exemplo: \include teste.sql @< file > ; 
- Também executa arquivos *.sql. 

Exemplo: @teste.sql; 

EXIT;  
- Finaliza a sessão do ISQL. ou ( \QUIT ) 

COMMIT;  
- Confirma a transação. 

ROLLBACK; 
- Desfaz a transação. 

SHOW ; - Mostra os nomes das tabelas existentes em determinado banco de dados.  Exemplo: SHOW tables; 

SHOW FIELDS FOR
- Mostra os campos de determinada tabela. 
Exemplo: SHOW FIELDS FOR ATOR; 

SHOW INDEXES FOR
- Lista de indices da tabela. 

SHOW RELATIONSHIPS FOR
- Lista de relacionamentos da tabela. 

LIST
- Lista conteúdo da tabela.


Tabelas - Forma Normal


Tabelas - Forma Normal 

A disciplina Análise de Sistemas abordará detalhadamente esta importante metodologia para definição das tabelas que irão compor a base de dados, que aqui apenas citaremos. 

Primeira Forma Normal: 

Uma relação se encontra na primeira forma normal se todos os domínios de atributos possuem apenas valores atômicos (simples e indivisíveis), e que os valores de cada atributo na tupla seja um valor simples. Assim sendo todos os atributos compostos devem ser divididos em atributos atômicos. 

Segunda Forma Normal: 

Uma relação se encontra na segunda forma normal quando estiver na primeira forma normal e todos os atributos que não participam da chave primária são dependentes desta. 

Assim devemos verificar se todos os atributos são dependentes da chave primária e retirar-se da relação todos os atributos de um grupo não dependente que dará origem a uma nova relação, que conterá esse atributo como não chave. 

Desta maneira, na segunda forma normal evita inconsistências devido a duplicidades. 

Terceira Forma Normal: 

Uma relação estará na terceira forma normal, quando estiver na primeira forma norma e todos os atributos que não participam da chave primária são dependentes desta porém não transitivos. 

Assim devemos verificar se existe um atributo que não depende diretamente da chave, retirá-lo criando uma nova relação que conterá esse grupo de atributos, e defina com a chave, os atributos dos quais esse grupo depende diretamente. 

O processo de normalização deve ser aplicado em uma relação por vez, pois durante o processo de normalização vamos obtendo quebras, e por conseguinte, novas relações. 

No momento em que o sistema estiver satisfatório, do ponto de vista do analista, este processo iterativo é interrompido. 

De fato existem literaturas indicando quarta, quinta formas normais, que não nos parece tão importante, nem mesmo academicamente. 

A normalização para formas apoiadas em dependências funcionais evita inconsistências, usando para isso a própria construção da Base. 

Se a mesma consistência for passível de ser garantida pelo aplicativo, a normalização pode ser evitada com ganhos reais no desempenho das pesquisas. No caso da consistência não ser importante, também podemos não normalizar totalmente uma Base de Dados. 

Exemplo: Normalizar os seguintes atributos: 

Nº do Pedido, Nome do Cliente, Nome dos Produtos, Quantidades Nº do Pedido, Código do Cliente, Nome dos Produtos, Quantidades Código do Cliente, Nome do Cliente Nº do Pedido, Código do Cliente, Código dos Produtos, Quantidades Código do Cliente, Nome do Cliente Código do Produto, Nome do Produto Nº do Pedido, Código do Cliente Código do Cliente, Nome do Cliente Código do Produto, Nome do Produto Nº do Pedido, Código do Produto, Quantidade Cliente Pedido Item Produto CliCodi PedNume PedNume ProCodi CliNome CliCodi ProCodi ProNome IteQtde 

O esquema apresentado anteriormente poderia ser inferido diretamente, usando metodologia tipicamente apresentada em Organização e Método. 

Se soubermos, por hipótese, que um profissional habilitado desenhou o pedido da empresa, e que esta o está utilizando com sucesso, poderíamos basear nosso modelo de dados neste formulário. 

Devemos notar que muitos Analistas de Sistemas não adotam estes procedimentos, por preferirem os métodos convencionais para elaboração do Modelo de Dados. 

Considerando qualquer formulário de pedidos podemos notar que o Número do Pedido geralmente tem destaque e sempre é único, ou seja encontramos nossa chave primária da Tabela de Pedidos, como sabemos que um cliente pode fazer mais de uma compra, achamos nossa Tabela de Clientes, que pode ter um Código, portanto achamos sua chave primária, que por conseguinte será a chave estrangeira da Tabela de Pedidos. 

Um ponto delicado, diz respeito aos itens do pedido, que formam geralmente um espaço destacado dentro do formulário de pedidos. Geralmente, e este é um dos casos, estas áreas em separado dos formulários darão origem a tabelas filhas, como é o caso típico das duplicatas em notas fiscais, ou dos dependentes na ficha de funcionários. 

Portanto achamos nossa Tabela de Itens que será ligada à Tabela de Pedidos através do Número do Pedido, que é ao mesmo tempo chave primária e chave estrangeira para a Tabela de Itens. 

Finalmente podemos perceber, que da mesma forma como os clientes se repetem em relação a Tabela de Pedidos, os produtos podem se repetir na tabela de itens (observe que não obstante não termos nenhum pedido com o mesmo item grafado duas vezes, este item pode ser adquirido em outro pedido). 

Assim descobrimos nossa quarta tabela, a Tabela de Produtos e a chave primária Código do Produto.

SGDB - Tipos de Banco de Dados

SGBD  - Tipos de Banco de Dados

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.

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.

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. 

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 distinto, 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 escola, 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) 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.

Banco de Dados Orientados ao Objeto 

Representam os dados como coleções que obedecem propriedades. São modelos geralmente conceituais dispondo de pouquíssimas aplicações reais. 

Neste Modelo não seria interessante a existência de uma tabela de funcionários e dentro dela alguma referência para cada registro, de forma a podermos saber onde (em que departamento) o funcionário está alocado. 

Um conjunto de regras disponibilizaria em separado os funcionários da fábrica, que no entanto estariam agrupados aos demais, para o sistema de folha de pagamento. Banco de Dados Universal Usa fortemente o conceito dos bancos de dados relacionais (ainda a serem vistos), no que concerne ao tratamento da informação dita caracter e muito do Modelo Orientado ao Objeto, no tocante ao tratamento de Imagens e Sons. 

Banco de Dados Relacional 

O Modelo de Dados relacional representa os dados contidos em um Banco de Dados através de relações. Estas relações contém informações sobre as entidades representadas e seus relacionamentos. 

O Modelo Relacional, é claramente baseado no conceito de matrizes, onde as chamadas linhas (das matrizes) seriam os registros e as colunas (das matrizes) seriam os campos. 

Os nomes das tabelas e dos campos são de fundamental importância para nossa compreensão entre o que estamos armazenando, onde estamos armazenando e qual a relação existente entre os dados armazenados. 

Cada linha de nossa relação será chamada de TUPLA e cada coluna de nossa relação será chamada de ATRIBUTO. 

O conjunto de valores passíveis de serem assumidos por um atributo, será intitulado de DOMÍNIO. 

Estes tópicos serão estudados cuidadosamente na disciplina Análise de Sistemas, que se incumbirá de apresentar cuidadosamente regras e normas para elaboração destes modelos. 

O domínio consiste de um grupo de valores atômicos a partir dos quais um ou mais atributos retiram seus valores reais. 

Assim sendo Rio de Janeiro, Paraná e Pará são estados válidos para o Brasil, enquanto que Coreientes não é um estado válido (pertence a Argentina e não ao Brasil). 

O esquema de uma relação, nada mais são que os campos (colunas) existentes em uma tabela. Já a instância da relação consiste no conjunto de valores que cada atributo assume em um determinado instante. 

Portanto, os dados armazenados no Banco de Dados, são formados pelas instâncias das relações. As relações não podem ser duplicadas (não podem existir dois estados do Pará, no conjunto de estados brasileiros, por exemplo), a ordem de entrada de dados no Banco de Dados não deverá ter qualquer importância para as relações, no que concerne ao seu tratamento.  Os atributos deverão ser atômicos, isto é, não são níveis de novas divisões. 

Chamaremos de Chave Primária ao Atributo que definir um resgistro, dentre uma coleção de registros. 

Chave Secundária (Terceária, etc), serão chaves que possibilitarão pesquisas ou ordenações alternativas, ou seja, diferentes da ordem criada a partir da chave primária ou da ordenação natural (física) da tabela. 

Chamaremos de Chave Composta, aquela chave que contém mais de um atributo (Por exemplo um cadastro ordenado alfabeticamente por Estado, Cidade e Nome do Cliente, necessitaria de uma chave composta que contivesse estes três atributos). 

Chamaremos de Chave Estrangeira, aquela chave que permitir a ligação lógica entre uma tabela (onde ela se encontra) com outra na qual ele é chave primária.


Banco de Dados - Componentes


Componentes de um Banco de Dados 

Um Banco de Dados é composto pelas seguintes partes: 

1) 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. 


2) O 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. 


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


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

5) O 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.


SGDB - Arquitetura


Arquitetura de um SGBD 

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. 

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 determinado 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.

SGDB - Características Gerais


Características Gerais de um SGBD 

Os SGBD tem sete características operacionais elementares sempre observadas, que passaremos a listar: 

Característica 1: Controle de Redundâncias

- A redundância consiste no armazenamento de uma mesma informação em locais diferentes, provocando inconsistências. Em um Banco de Dados as informações só se encontram armazenadas em um único local, não existindo duplicação descontrolada dos dados. Quando existem replicações dos dados, estas são decorrentes do processo de armazenagem típica do ambiente Cliente-Servidor, totalmente sob controle do Banco de Dados. 

Característica 2: Compartilhamento dos Dados

- O SGBD deve incluir software de controle de concorrência ao acesso dos dados, garantindo em qualquer tipo de situação a escrita/leitura de dados sem erros. 

Característica 3: Controle de Acesso

- O SGDB deve dispor de recursos que possibilitem selecionar a autoridade de cada usuário. Assim um usuário poderá realizar qualquer tipo de acesso, outros poderão ler alguns dados e atualizar outros e outros ainda poderão somente acessar um conjunto restrito de dados para escrita e leitura. 

Característica 4: Interfaceamento

- Um Banco de Dados deverá disponibilizar formas de acesso gráfico, em linguagem natural, em SQL ou ainda via menus de acesso, não sendo uma "caixa-preta" somente sendo passível de ser acessada por aplicações. 

Característica 5: Esquematização

- Um Banco de Dados deverá fornecer mecanismos que possibilitem a compreensão do relacionamento existentes entre as tabelas e de sua eventual manutenção. 

Característica 6: Controle de Integridade

-Um Banco de Dados deverá impedir que aplicações ou acessos pelas interfaces possam comprometer a integridade dos dados. 

Característica 7: Backups

- O SGBD deverá apresentar facilidade para recuperar falhas de hardware e software, através da existência de arquivos de "pré-imagem" ou de outros recursos automáticos, exigindo minimamente a intervenção de pessoal técnico. 

Existe a possibilidade de encontramos Bancos de Dados que não satisfaçam completamente todas as características acima, o que não o inválida como Banco de Dados. 

Na prática podemos encontrar situações onde a primeira característica não seja importante, pois podemos ter o Banco de Dados baseado totalmente em um único servidor, e as redundâncias podem ser aceitas em algumas situações sob controle da aplicação (algo não muito recomendado, mas passível de aceitação, em situações onde a existência do nome do cliente em um arquivo contendo duplicatas emitidas, possibilita o acesso a apenas uma tabela sem relacionamentos, e sabe-se de antemão que uma duplicata depois de emitida, não pode ter seu cliente alterado). 

A segunda característica (Compartilhamento dos Dados) pode ser desconsiderada principalmente em ambiente de desenvolvimento, ou ainda em aplicações remotas. 

O Controle de Acesso pode ser descartado em pequenas empresas, sendo que o aplicativo em questão, mais o software de rede, podem facilmente se incumbir desta característica, no caso de pequenas empresas, com reduzido número de pessoas na área operacional. 

O Interfaceamento e a Esquematização, são características sempre disponíveis, o que varia neste caso é qualidade destes componentes, que vai desde o sofrível até o estado da arte. 

É muito conveniente que esta característica seja muito boa em um Banco de Dados, onde estiverem em atuação mais de um Administrador de Banco de Dados e tivermos um número relativamente alto de sistemas desenvolvidos ou em desenvolvimento neste ambiente. 

De fato, quanto maior o número de pessoas envolvidas no desenvolvimento de aplicações e gerenciamento do Banco de Dados, mais importante tornam-se estas duas características, pois cada novo sistema desenvolvido precisará sempre estar adequado ao Banco de Dados da Empresa e aderente aos padrões de acesso utilizados nos sistemas concorrentes. 

O Controle de Integridade, é outra característica sempre presente nos Bancos de Dados, mas existem diferenças quando da implementação desta característica. 

Assim, é comum encontrarmos Bancos de Dados que suportam determinado acesso, enquanto outros não dispõe de recurso equivalente. 

O Backup em tempo de execução, é outra característica sempre disponível, porém temos aplicações que invariavelmente são comprometidas por falhas de hardware, e outras, que o mesmo tipo de falha não causa perda alguma de dados ou de integridade.

Novamente, cada Banco de Dados tem esta característica melhor ou pior implementada, cabendo ao Administrador de Banco de Dados escolher aquele que lhe oferecer mais segurança. 

Devemos ressaltar ainda, que podemos ter um Banco de Dados Modelo A, que respeite integralmente as regras básicas e disponha de todas as características apresentadas, enquanto um Modelo B que apesar de respeitar as regras básicas, não suporte uma ou outra característica desejável, mas tenha um desempenho excelente, enquanto o Modelo A seja apenas razoável no quesito desempenho, nos levará seguramente a escolher o Modelo B como sendo o ganhador para nossa instalação! 

Isto ocorre pois, na prática, todo usuário deseja um tempo de resposta muito pequeno. 

O chamado “prazo de entrega” muito comum em Bancos de Dados operando nos limites de sua capacidade, ou nos casos onde o hardware está muito desatualizado, é fonte de inúmeros problemas para o pessoal de informática. 

Neste caso é melhor abrirmos mão de uma Interface Amigável, de um Gerenciamento Automático de Backups ou ainda de outras características que não julgarmos fundamentais, para nos livrarmos do problema típico de ambiente extremamente comprometido, por má performance do Banco de Dados. 

A escolha do Banco de Dados da empresa, portanto é uma decisão muito delicada, na medida em que está irá acarretar troca de aplicativos e troca de hardware. 

Os investimentos diretamente aplicados no Banco de Dados, costumam ser infinitamente menores do que aqueles a serem aplicados na empresa, visando sua perfeita adequação ao novo SGBD. 

Esta decisão, sempre que possível, deve ser tomada por especialistas em Banco de Dados, com profundos conhecimentos de Análise de Sistemas, de Banco de Dados e de Software de Gerenciamento de Bases de Dados, de forma a evitar que a empresa escolha um Banco de Dados inadequado aos seus propósitos, e que pouco tempo depois, seja obrigada a perder todos investimento realizado em Software e Hardware.

SGDB - Sistema de Gerenciamento de Banco de Dados

Um SGBD - Sistema de Gerenciamento de Banco de Dados é uma coleção de programas que permitem ao usuário definir, construir e manipular Bases de Dados para as mais diversas finalidades.

 Um conceito que deverá ficar bastante claro inicialmente é o que envolve a separação clara entre os Gerenciadores de Base de Dados dos Gerenciadores de Arquivo. 

Sistemas baseados em "Banco de Dados" baseados em Btrieve e dBase (Fox e Clipper), podem no máximo simular as características típicas de um ambiente de Banco de Dados. 

A linguagens Delphi (utiliza opcionalmente o padrão dBase) e o Visual Basic (que utiliza o Access), recomendam a utilização de Banco de Dados reais, porém utilizam àqueles "Banco de Dados" que possuem algumas características de Bancos de Dados, mas possuem características típicas de Gerenciadores de Arquivo.

Vamos definir algumas regras básicas e claras para um sistema de manipulação de dados ser considerado um SGBD. 

Fica implícito que se ao menos uma das características abaixo não estiver presente no nosso "candidato" a SGBD, este poderá ser um Gerenciador de Arquivo de altíssima qualidade, "quase" um SGBD, mas não um SGBD. 

Regra 1: Auto-Contenção

- Um SGBD não contém apenas os dados em si, mas armazena completamente toda a descrição dos dados, seus relacionamentos e formas de acesso. Normalmente esta regra é chamada de Meta-Base de Dados. Em um GA, em algum momento ao menos, os programas aplicativos declaram estruturas (algo que ocorre tipicamente em C, COBOL e BASIC), ou geram os relacionamentos entre os arquivos (típicos do ambiente xBase). Por exemplo, quando você é obrigado a definir a forma do registro em seu programa, você não está lidando com um SGBD. 

Regra 2: Independência dos Dados

Quando as aplicações estiverem realmente imunes a mudanças na estrutura de armazenamento ou na estratégia de acesso aos dados, podemos dizer que esta regra foi atingida. Portanto, nenhuma definição dos dados deverá estar contida nos programas da aplicação. Quando você resolve criar uma nova forma de acesso, um novo índice, se precisar alterar o código de seu aplicativo, você não está lidando com um SGBD.

 Regra 3:  Abstração dos Dados

- Em um SGBD real é fornecida ao usuário somente uma representação conceitual dos dados, o que não inclui maiores detalhes sobre sua forma de armazenamento real. O chamado Modelo de Dados é um tipo de abstração utilizada para fornecer esta representação conceitual. Neste modelo, um esquema das tabelas, seus relacionamentos e suas chaves de acesso são exibidas ao usuário, porém nada é afirmado sobre a criação dos índices, ou como serão mantidos, ou qual a relação existente entre as tabelas que deverá ser mantida íntegra. Assim se você desejar inserir um pedido em um cliente inexistente e esta entrada não for automaticamente rejeitada, você não está lidando com um SGBD.

Regra 4: Visões

- Um SGBD deve permitir que cada usuário visualize os dados de forma diferente daquela existente previamente no Banco de Dados. Uma visão consiste de um subconjunto de dados do Banco de Dados, necessariamente derivados dos existentes no Banco de Dados, porém estes não deverão estar explicitamente armazenados. Portanto, toda vez que você é obrigado a replicar uma estrutura, para fins de acesso de forma diferenciada por outros aplicativos, você não está lidando com um SGBD. 

Regra 5: Transações

- Um SGBD deve gerenciar completamente a integridade referencial definida em seu esquema, sem precisar em tempo algum, do auxílio do programa aplicativo. Desta forma exige-se que o banco de dados tenha ao menos uma instrução que permita a gravação de uma série modificações simultâneas e uma instrução capaz de cancelar um série modificações. Por exemplo, imaginemos que estejamos cadastrando um pedido para um cliente, que este deseje reservar 5 itens de nosso estoque, que estão disponíveis e portanto são reservados, porém existe um bloqueio financeiro (duplicatas em atraso) que impede a venda. A transação deverá ser desfeita com apenas uma instrução ao Banco de Dados, sem qualquer modificações suplementares nos dados. Caso você se obrigue a corrigir as reservas, através de acessos complentares, você não está lidando com um SGBD. 

Regra 6: Acesso Automático

- Em um Gerenciador de Arquivo uma situação típica é o chamado Dead-Lock, o abraço mortal. Esta situação indesejável pode ocorrer toda vez que um usuário travou um registro em uma tabela e seu próximo passo será travar um registro em uma tabela relacionada à primeira, porém se este registro estiver previamente travado por outro usuário, o primeiro usuário ficará paralisado, pois, estará esperando o segundo usuário liberar o registro em uso, para que então possa travá-lo e prosseguir sua tarefa. Se por hipótese o segundo usuário necessitar travar o registro travado pelo primeiro usuário, afirmamos que ocorreu um abraço mortal, pois cada usuário travou um registro e precisa travar um outro, justamente o registro anteriormente travado pelo outro! Imaginemos um caso onde o responsável pelos pedidos acabou de travar o Registro Item de Pedido, e, necessita travar um registro no Cadastro de Produtos, para indicar uma nova reserva. Se concomitantemente estiver sendo realizada uma tarefa de atualização de pendências na Tabela de Itens, e para tanto, previamente este segundo usuário travou a Tabela de Produtos, temos a ocorrência do abraço mortal. Se a responsabilidade de evitar esta ocorrência for responsabilidade da aplicação, você não está lidando com um SGBD. 


Conclusão: 

Um SGBD deve obedecer INTEGRALMENTE as seis regras acima. Em caso contrário estaremos diante de um GA ou de um "quase" SGBD. 

Considerações Finais 

Atualmente, existe uma tendência de mercado em se dizer que qualquer problema será resolvido, caso a empresa adquira um Banco de Dados. 

Naturalmente, em um ambiente com acesso constante ao Banco de Dados (acesso concorrente, obviamente), onde a segurança seja de vital importância e que o desempenho da aplicação escrita estiver comprometendo a empresa, considerando-se logicamente uma aplicação bem escrita, sem dúvida a aquisição de um Banco de Dados poderá ser o primeiro passo na solução do problema. 

Analogamente ao que ocorreu com o aparecimento das primeiras linguagens de programação voltadas ao Windows, onde estas foram apresentadas como capazes de alavancar os negócios da empresa, e no geral causaram mais frustração do que solução, a aquisição do Banco de Dados, pode gerar o mesmo tipo de problema. É fundamental que a empresa candidata a utilizar um Banco de Dados, normatize-se totalmente, pois soluções “quebra- galho”, típicas do ambiente que dispõe de um Gerenciador de Arquivo, tendem a ser impossíveis em um ambiente estruturado sobre o Banco de Dados. 

Portanto, sob pena de se realizar um grande investimento, e não se colher fruto algum, é muito conveniente, que a empresa antes de adquirir um Banco de Dados, passe por um processo de adaptação, preferencialmente contando com pessoal especializado, geralmente consultores, que não tenham qualquer ligação com fabricantes de Bancos de Dados.

Banco de Dados - Conceito Básico


Todos nós sabemos que existem gigantescas bases de dados gerenciando nossas vidas. 

De fato sabemos que nossa conta bancária faz parte de uma coleção imensa de contas bancárias dentro do banco de dados do nosso banco. 

Nosso Título Eleitoral ou nosso Cadastro de Pessoa Física, estão armazenados dentro da base de dados gigantesca do Governo Federal. 

Sabemos também que quando sacamos dinheiro no caixa eletrônico de nosso banco, nosso saldo e as movimentações existentes em nossa conta bancária já estão à nossa disposição. 

Nestas situações sabemos que existe uma necessidade em se realizar o armazenamento de uma série de informações que não se encontram efetivamente isoladas umas das outras.

Existe uma ampla gama de dados que se referem a relacionamentos existentes entre as informações a serem manipuladas. 

Estes Bancos de Dados, além de manterem todo este volume de dados organizado, também devem permitir atualizações, inclusões e exclusões do volume de dados, sem nunca perder a consistência. 

Não podemos esquecer que na maioria das vezes estaremos lidando com acessos concorrentes a várias tabelas de nosso banco de dados, algumas vezes com mais de um acesso ao mesmo registro de uma mesma tabela.

Um Banco de Dados é antes de mais nada uma coleção logicamente coerente de dados com determinada significação,  em outras palavras um arquivo contendo uma série de dados de um cliente, um arquivo com dados aleatoriamente gerados, que tem uma relação definida entre ambos.

Um Banco de Dados contém os dados dispostos numa ordem pré-determinada em função de um projeto de sistema, sempre para um propósito muito bem definido. 

Um Banco de Dados representará sempre aspectos do Mundo Real.

Assim sendo um Banco de Dados, é uma fonte de onde poderemos extrair uma vasta gama de informações derivadas, que possui um nível de interação com eventos como o mundo real que o representa. 

A forma mais comum de interação do Usuário com o Banco de Dados, dá-se através de sistemas específicos que por sua vez acessam o volume de informações, geralmente através da linguagem SQL. 

Os Administradores de Banco de Dados (DBA) são os profissionais responsáveis pelo controle ao acesso aos dados e pela coordenação da utilização do Banco de Dados. 

Já os projetistas de Banco de Dados (DBP) são os analistas que identificam os dados a serem armazenados em um Banco de Dados e definem a forma como estes serão representados. 

Os Analistas e Programadores de Desenvolvimento, criam sistemas que acessam os dados da forma necessária ao Usuário Final, que é aquele que interage diretamente com o Banco de Dados. 


BANCOS DE DADOS - Introdução 

Bancos de dados são ferramentas que permitem o armazenamento e manipulação de dados em tabelas (conjuntos de informações com estrutura regular). 

Exemplos de bancos de dados: Sistemas de Processamento de arquivos (fichas impressas, documentos do Word), tabelas SQL armazenadas em um servidor. 

1. TIPOS DE BANCOS DE DADOS 

• Banco de Dados Não Relacionais 
– Modo regular, os arquivos são escritos de forma sequencial, o acesso geralmente é mais lento em comparação ao banco de dados Relacional. 

• Banco de Dados Relacional 
– Os dados são organizados em tabelas permitindo o relacionamento entre as mesmas. Uma relação trata-se de associação entre varias entidades. 

Exemplo: podemos cruzar os dados entre alunos por curso ou turma ao relacionarmos as Tabela Cursos e Tabela Alunos. 

Em comparação ao Modelo Não Relacional, podemos citar como principais vantagens: padrão adotado mundialmente, maior velocidade de acesso aos dados e menor espaço de armazenamento. 

MER (Modelo entidade/relacionamento) 
Tabelas Forma de organizar os dados em linhas e colunas. 

Colunas 
Campos que formam um registro 

O Conjunto formado pelo encontro de uma linha/coluna é denominado tupla. 


1.1 Estruturas existentes em bancos de dados 

• Visões => Consultas SQL previamente programadas disponíveis para rápido acesso, não sevem para armazenar dados, sua função é armazenar critérios de seleção de dados, permitem dados atualizados sempre que as tabelas em questão sofrem alteração. 

• Índices => Estruturas que gerenciam a ordenação de valores dos campos informados para melhorar a performance de processamento do banco de dados sobre estes campos e seus respectivos registros.

2. DATABASE MANAGEMENT SYSTEM (SISTEMA GERENCIADOR DE BANCO DE DADOS) 

O sistema de gerenciamento de banco de dados não deve ser confundido com o próprio banco de dados; a função de gravar uma informação, alterá-la ou até mesmo recuperá-la é do banco de dados, cabe ao sistema de gerenciamento permitir ou não o acesso ao banco de dados. 

O sistema de gerenciamento pode não trazer grandes benefícios a bancos de dados pequenos, simples e de pouco acesso, ele é vital para bancos de dados com grande volume de informações e com acessos simultâneos por vários usuários, o controlador de acesso gerencia todas estas operações, evitando assim, inconsistência nas informações. 

Como podemos perceber, o sistema de gerenciamento é um complemento ao banco de dados, interligando as requisições de conexão dos usuários com o banco de dados. 

As requisições podem ser enviadas por usuários específicos, ou através de sistemas online. 


SERVIDOR DE BANCOS DE DADOS 

Um servidor de Bancos de Dados pode armazenar e gerenciar um ou mais banco de dados, um banco de dados por sua vez, pode possuir uma ou mais tabelas.