Banco de dados e SQL - Introdução e História

Photo by Russ Ward on Unsplash

Banco de dados e SQL - Introdução e História

Depois de algum tempo trabalhando na web, é comum você se deparar com bibliotecas que faz um intermédio da sua aplicação com o banco, de uma forma mais orientado a objetos, o conhecido ORM (Object Relational Mapping). Ele nos oferece muitas coisas boas como:

  • Melhor produtividade
  • Coerência no código, sem usar e abusar de queries SQL, usando o paradigma de programação da aplicação.
  • Facilita na mudança de banco de dados (às vezes, não vem ao caso)

Mesmo com seus prós e contras ele ajuda muito, só tem um problema.

Com toda essa dependência, você fica “mais ignorante” com o SQL.

Claro que alguns podem discordar, e fiquem a vontade para falarmos nos comentários, mas conversando com alguns colegas, creio que o sentimento é parecido: você perde a “memória muscular” do SQL ou peculiaridades do banco e suas boas práticas. Por isso, achei legal dar uma revisada sobre banco de dados e principalmente sobre essa linguagem de consulta, para justamente não confiar cegamente nessas bibliotecas, porque elas não são perfeitas, e um dia vai ser necessário customizar o comportamento delas para se tornar mais performática.

Irei criar posts voltado a esses estudos, e hoje vamos falar um pouco da história do banco de dados e como surgiu o SQL como conhecemos hoje.

Começando do início

Antes de mais nada, o que é um banco de dados? Basicamente é um conjunto de informações relacionadas. Na wikipédia diz:

Bancos de dados ou bases de dados são um conjunto de arquivos relacionados entre si com registros sobre pessoas, lugares ou coisas. São coleções organizadas de dados que se relacionam de forma a criar algum sentido (Informação) e dar mais eficiência durante uma pesquisa ou estudo.

O caso de uma lista telefônica pode ser considerado um banco de dados. Quando tinhamos um caderninho com os nomes das pessoas e seus telefones eles eram organizados de forma estruturada e os dados eram relacionados e que tinham a informação para entrarmos em contato, quando necessário. Em banco de dados físico, tinham suas desvantagens:

  • Pesquisar os dados necessários poderia levar a algum tempo, em caso de muitos registros
  • A mudança de dados, de forma frequente, tornava mais desgastante e custava mais, quando era impresso.

Depois veio os bancos de dados que eram armazenados em fitas magnéticas, e veio tornar mais fácil, mas claro ainda estava aquém do ideal, como limitações de hardware na época.

Ao longo dos anos, surgiram outras soluções de banco de dados, algumas com modelos de dados específicos.

image.png

Tipos de Modelo de dados

Em Sistemas de Banco de Dados, temos uma variedade de tipos de base de dados, ou seja, em como esses dados estão organizados:

Hierárquico

Trabalha com conceito de árvore, usando ligações entre os registros. image.png

Redes

Possuem registros e ligações que definem os relacionamentos entre os registros. image.png

Relacional

Representação dos dados em conjunto de tabelas. Esse modelo foi idealizado por Edgar Frank Codd em 1970, sendo descrito no artigo “Relational Model of Data for Large Shared Data Banks”. Esse tipo que usamos até hoje e iremos focar. image.png

SQL e sua história

Além do modelo relacional, o Codd propôs uma linguagem para manipular os dados em tabelas, e que foi chamado de DSL/Alpha. Com a publicação de um artigo com essa proposta, a IBM auxiliou para que fosse possível criar o protótipo, e assim foi criado uma versão inicial, chamado de SQUARE. Após o seu lançamento, ele sofreu melhorias e que levou a mudança do nome para SEQUEL que foi finalmente renomeada para SQL. Um dos principais desenvolvedores foram Donald D. Chamberlin e Raymond F. Boyce.

No SQL temos partes distintas na linguagem:

  • Instruções de esquema SQL: Usados para definir os objetos do banco de dados em que os dados serão armazenados (tabela, chave primária, etc);
  • Instruções de dados SQL: Usados para manipular as estrutura de dados definidas previamente;
  • Instruções de transação SQL: Usado para iniciar, encerrar e desfazer transações

Alguns exemplos:

CREATE TABLE contatos(  
id SMALLINT,  
nome VARCHAR(50) NOT NULL,  
telefone VARCHAR(30) NOT NULL,  
CONSTRAINT pk_contatos PRIMARY KEY (id)  
);

Foi usado acima a instrução de esquema para criar a tabela contatos no banco de dados. No caso de inserir e consultar um novo registro, respectivamente, usamos a instrução de dados:

INSERT INTO contatos (id, nome, telefone) VALUES (1, 'Carlos Silva', '(61) 99999-1111');SELECT * FROM contatos;

Essa linguagem é intrinsecamente ligado a modelo relacional porque o resultado de uma consulta gera uma tabela, ou o conhecido result set. Com isso podemos usar tanto as tabelas permanentes, criados via instrução de esquema, como as tabelas do tipo result set, como entradas para futuras consultas.

Conclusão

Dessa forma, espero que tenha sido interessante essa breve introdução e história do banco de dados e como surgiu o SQL.

Até mais.