# Sistema de gerenciamento de banco de dados

Um Sistema de Gerenciamento de Banco de Dados ou Sistema de Gestão de Bases de Dados(SGBD) — do inglês Data Base Management System (DBMS) — é o sistema de software responsável pelo gerenciamento de um ou mais bancos de dados. Seu principal objetivo é retirar da aplicação cliente a responsabilidade de gerenciar o acesso, a persistência, a manipulação e a organização dos dados. O SGBD que manipula banco de dados relacionais, ou SQL, exige esquemas predefinidos, não permitindo a inserção de dados sem definir os tipos de dados e relacionamentos. Em suma, o SGBD relacional disponibiliza uma interface para que seus clientes possam incluir, alterar ou consultar dados previamente armazenados. Em bancos de dados relacionais a interface é constituída pelas API (Application Programming Interface) ou drivers do SGBD que executam comandos na linguagem SQL, onde os dados são ordenados em tabelas (relações) com colunas (atributos) e linhas (registros). O SGBD executa comandos em linguagem de programação a depender do tipo de banco de dados a ser manipulado, a exemplo do SGBD MongoDB, que tem como cliente banco de dados não relacionais, no qual utiliza a linguagem de consulta BSON, ou o SGBD Apache Cassandra, que organiza os dados através da linguagem de programação CQL (Cassandra Query Language).

## Sistema de Gerenciamento de Banco de Dados

Todas as organizações, por menores que sejam, possuem quantidades cada vez maiores de dados e informações a armazenar. Todavia, a manipulação dessas informações tornou-se impossível de ser realizada manualmente (via papéis, principalmente), pois sua utilização, além de demorada (devido a catalogação dos dados), é passível de erros, principalmente ocasionados pelo desgaste do operador em conseguir resgatar informações requisitadas. Nesse sentido, torna-se mais fácil encontrar a informação numa base de dados que recorre a uma das tecnologias de informação de maior sucesso e confiança. Ou seja, as bases de dados estendem a função do papel ao guardar a informação em computadores. Qualquer empresa que pretenda garantir um controle efetivo sobre todo o seu negócio, tem obrigatoriamente de recorrer a sistemas de gestão de bases de dados. Existem muitos tipos de ferramentas, completas e com funcionalidades acrescidas, que elevam outros níveis, a capacidade operacional de gerar informação de valor para a organização. Um sistema de gerenciamento de banco de dados não é nada mais do que um conjunto de programas que permite armazenar, modificar e extrair informações de um banco de dados. Há muitos tipos diferentes de SGBD. Desde pequenos sistemas que funcionam em computadores pessoais a sistemas enormes que estão associados a mainframes. Um SGDB implica a criação e manutenção das bases de dados, elimina a necessidade de especificação de definição de dados, age como interface entre os programas de aplicação e os ficheiros de dados físicos, e separa as visões lógica e de concepção dos dados. Assim sendo, são basicamente três os componentes de um SGBD:
* Linguagem de definição de dados (especifica conteúdos, estrutura a base de dados e define os elementos de dados);
* Linguagem de manipulação de dados (para poder alterar os dados na base);
* Dicionário de dados (guarda definições de elementos de dados e respetivas caraterísticas — descreve os dados, quem os acede, etc.) (Gouveia; 2009).

## Qualidade de Dados

Um banco de dados é meio caminho andado para que a empresa tenha a informação que precisa. Para isso, outras medidas devem ser tomadas para ter certeza de que os dados sejam confiáveis. Alguns dos erros são causados por dados incoerentes produzidos por múltiplos sistemas. Se o banco de dados for projetado adequadamente, a ocorrência de dados incoerentes será pequena. Porém a maioria dos problemas de qualidade com nomes digitados incorretamente, números trocados ou códigos faltantes, ocorre durante a entrada de dados, esses erros ficam mais comuns quando as empresas transferem parte dos seus dados para a Internet, e permite que clientes e fornecedores insiram seus dados no site e isso efetue alterações no sistema interno. Os problemas com qualidade de dados não são só empresariais, eles também representam sérios problemas às pessoas, afetando sua condição financeira e até mesmo seu emprego.

## Descrição

Um modelo de SGBD define como os dados serão armazenados no banco de dados. Destacamos a seguir cinco delas:
* Hierárquico: formato mais antigo, no qual os dados se organizam em uma disposição piramidal, onde dados “filhos” são ligados a dados “pai”
* De rede: nele, cada “filho” pode ter mais de um “pai” e a estrutura dos dados se assemelha mais a uma teia de aranha do que a uma pirâmide
* Orientado a objetos: modelo mais avançado em que diferentes formatos de dados se mesclam, sendo, por isso, mais caro de se implementar.
* Relacionais (SQL): cuja função é conectar dados de origens diferentes
* Não relacionais (NoSQL): a diferença em relação aos bancos relacionais é que, aqui, a estrutura de dados não tem que ser previamente definida
* o modelo de dados objeto-relacional é praticamente uma mistura do modelo relacional com o orientado a objetos;
* o modelo relacional estendido, é uma adição de caraterísticas do modelo orientado a objetos ao relacional;
* o semiestruturado é dedicado a documentos em formatos semiestruturados, normalmente em XML. Também são conhecidos como Banco De dados NoSQL;
* estruturas de dados otimizadas, que possam manipular uma grande quantidade de informação;
* uma linguagem que possibilite a criação, atualização e consulta dos dados armazenados. Normalmente esta linguagem é dividida em partes:
** Linguagem de definição de dados ou LDD (ou DDL, do inglês), com comandos como CREATE, DROP e ALTER TABLE;
** Linguagem de manipulação de dados, ou LMD (ou DML, do inglês), com comandos como UPDATE, SELECT, INSERT e DELETE;
** Linguagem de controle de dados, ou LCD, com comandos para controle de acesso dos usuários do sistema, como GRANT e REVOKE, em SQL.
* um mecanismo transacional que garanta a consistência, entre as operações, dos dados armazenados. Também é possível definir uma linguagem adicional para restrições, como a OCL. As principais linguagens de programação para manipular bancos de dados são: SQL, em seus vários padrões, como SQL2 e SQL3; e OQL.

## Exemplos de SGBD e onde podem ser aplicadas

* MongoDB
* Neo4j
* Apache Cassandra
* Redis
* PostgreSQL
* CouchDB
* Firebird
* HSQLDB
* IBM DB2
* IBM Informix
* mSQL
* MySQL
* MariaDB
* Oracle
* SQL-Server
* TinySQL
* ZODB
* JADE
* Sybase
* Microsoft Access (Alguns o consideram SGBD mas é um SGBDR)
* Microsoft Visual Foxpro