Olá, caro(a) aluno(a)! Vamos continuar explorando os conceitos de construção e gerenciamento de banco de dados? Nesta lição, você conhecerá os tipos de dados com que podemos trabalhar em nossas bases de dados.
Devemos conhecer os tipos de dados, pois, ao criar qualquer tabela ou variável, além de especificar um nome, você também especifica o tipo de dados que aquele atributo recebe. Apesar de ser um conceito simples, deve ser muito bem analisado pelo arquiteto do banco de dados, pois a escolha dos tipos de dados poderá influenciar, diretamente, o desempenho do sistema.
Ao criar um banco de dados, você precisa definir os tipos de dados para cada campo. Por exemplo, em um banco de dados de filmes, você pode precisar de caracteres alfabéticos para 'Títulos', mas números para 'Duração'. Os campos, geralmente, são restritos a determinado tipo de dados.
A tipagem de dados é uma maneira de classificar valores de dados que possuem propriedades comuns. Diferentes tipos de valores de dados também precisam de diferentes quantidades de memória para armazená-los e têm diferentes operações que podem ser executadas sobre eles.
Vamos imaginar um exemplo prático do uso de tipos de dados. Em um site qualquer, temos três campos de entrada de dados para serem armazenados no banco de dados.
Nome
Sobrenome
Número de contato
Intuitivamente, sabemos que os campos nome e sobrenome devem receber uma sequência de caracteres alfanuméricos, e o campo contato deve receber apenas números. Devemos ter esse pensamento para todo tipo de dado que pretendemos armazenar em uma base de dados.
Agora, deixo um desafio para você: imagine qual tipo de dado deve ser atribuído para as seguintes entradas:
CPF
Endereço
Data de nascimento
Cadastro ativo
Existem diversos tipos de bancos de dados e SGBDS (Sistemas de Gerenciamento de Banco de Dados). Quando falamos de banco de dados relacionais, os principais são: Oracle, SQL Server, MySQL e PostgreSQL, porém, em todos eles, utilizamos uma linguagem padrão para realizar consultas que é o SQL.
O SQL, Linguagem de Consultas Estruturadas, em inglês Structured Query Language, é a linguagem que usamos para interagir com DBMSs de bancos de dados relacionais, em inglês Relational Database Management System ou RDBMS (CARDOSO; CARDOSO, 2012). Quando você estiver trabalhando com a criação de banco de dados relacionais, utilizará o SQL para realizar todo tipo de operação, como criar, deletar, alterar e consultar dados na base de dados. Veremos como realizar todas essas operações durante o nosso curso.
Nesta lição, focaremos em conhecer os tipos de dados que podemos armazenar no banco de dados e, consequentemente, os tipos de dados que definiremos com SQL quando estivermos criando os nossos bancos. De acordo com seus requisitos para o projeto ou banco de dados, você pode especificar um tipo de dados para uma coluna da tabela. Este é um passo obrigatório e essencial no projeto de mesa para não encontrar um problema no processo.
Na disciplina de Lógica, você aprendeu que as variáveis devem ter um tipo, por exemplo, se você quer armazenar um número, poderá criar uma variável do tipo inteiro ou real. O mesmo vale para o banco de dados quando estamos definindo os atributos que teremos em nossas tabelas. Se vamos criar um atributo no nosso banco de dados que armazenará a data de nascimento de uma pessoa, este atributo deve ser do tipo data, por outro lado, se vamos armazenar um nome, o atributo precisa ser do tipo texto.
Os tipos de dados tratam de que forma os valores são armazenados em uma coluna, assim como o comprimento atribuído para uma coluna e se os valores, como alfanumérico, numérico, booleanos e data e hora são permitidos. Basicamente, existem quatro categorias de tipos de dados, todas com seu próprio repertório de tipos de dados úteis (NAVATHE; ELMASRI, 2011).
As quatro categorias são:
Caractere
Numérico
Data e hora
Booleano
Figura 6 - Tipos de dados
Fonte: o autor.
#PraCegoVer: a imagem apresenta uma figura organizada na horizontal. No lado esquerdo da imagem, temos um retângulo rosa com as bordas arredondadas com o texto Tipo de Dados, uma seta liga o retângulo ao texto caractere ligado a outro retângulo na cor amarela com o texto: char, varchar, text, tinytext, mediumtext. Outra seta saindo do retângulo rosa liga o texto Numérico a um retângulo amarelo com o texto: int, smallint, bigint, float, decimal. Mais abaixo, outra seta liga o retângulo rosa ao texto Hora Data, ligado a um retângulo amarelo com o texto: date, time. Por fim, uma última seta liga a o texto Booleano ligado a um retângulo amarelo com o texto: bit.
Vamos analisar cada um destes tipos de dados?
Facilmente, o tipo de dados mais comum que está presente em todas as linguagens de programação. Você, provavelmente, utilizou esse tipo de dado quando escreveu o seu primeiro algoritmo lá na disciplina de lógica e, agora, utilizará aqui também para definir todos os atributos do tipo texto. Na categoria caractere, temos, basicamente, cinco tipos:
char (n) – este tipo pode armazenar valores de até 8.000 caracteres, sendo que, em “n”, é o número máximo de caracteres suportado pelo atributo.
varchar (n) – assim como o tipo char, podemos armazenar letras, números e caracteres especiais, porém, no varchar(), podemos especificar um atributo de valor variável.
TEXT (size) – armazena uma cadeia de caracteres com comprimento máximo de 65.535 bytes.
TINYTEXT – armazena uma cadeia de caracteres com máximo de 255 caracteres.
MEDIUMTEXT – armazena uma cadeia de caracteres com máximo de 16.777.215 caracteres.
Outro tipo muito utilizado são os dados numéricos, e podemos dividir esta categoria em cinco tipos:
INT – suporta números inteiros, isto é, números sem porção fracionária. Os valores aceitos aqui variam entre -2^31 a 2^31-1. Ocupa 4 bytes.
SMALLINT – semelhante ao int, porém suporta apenas 2 bytes, suportando valores entre -32768 até 32767.
Bigint – aceita valores entre -2^63 e 2^63-1, sendo que este datatype ocupa 8 bytes.
FLOAT – suporta valores de ponto flutuante, isto é, valores com porção fracionária. Podemos utilizar quando queremos ter precisão nos cálculos. Este tipo de dados aceita valores entre -1.79E + 308 e 1.79E + 308.
DECIMAL (a,b) – utilizado, normalmente, para definir cálculos de moedas, podemos definir o número de dígitos inteiros e decimais que desejamos armazenar, onde “a” é o número de dígitos inteiros e “b” o número de dígitos decimais. O número máximo para inteiros é 65 e 30 para os decimais.
Esta categoria suporta dados temporais, e utilizamos para, por exemplo, campos de data de nascimento ou horários.
DATE – suporta datas no formato AAAA-MM-DD (ano, mês, dia).
TIME – suporta horários no formato HH-MM-SS (hora, minuto, segundo).
Este tipo é responsável por armazenar valores booleanos, isto é, podem assumir os valores TRUE ou FALSE (Verdadeiro ou falso) ou 0 e 1.
BIT – pode apresentar 0, 1 ou NULL, como valor, sendo ocupado 1 byte. Também utilizado como um tipo de dado int.
Observe: nesta aula, listei apenas os tipos mais comuns presentes em todas as versões do SQL e também os tipos que você mais utilizará, porém existem diversos outros tipos que podem ser utilizados, sendo assim, recomendo que você faça uma pesquisa na internet sobre os tipos de dados de banco de dados para conhecer outros tipos.
Nesta lição, você aprendeu alguns tipos de dados com que podemos trabalhar nos bancos de dados. Os tipos de dados devem ser utilizados de forma a tornar o banco mais leve e otimizado de modo que isso ajuda na redução de custos decorrentes do armazenamento massivo de dados. Para colocar este conhecimento em prática, deixará para você um desafio. Escreva quais são os tipos de dados que devemos utilizar para uma tabela com os seguintes atributos:
id
nome
idade
data de nascimento
CARDOSO, V.; CARDOSO, G. Sistemas de Banco de Dados: uma abordagem introdutória e aplicada. 1. ed. São Paulo: Saraiva Uni, 2012.
ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 6. ed. São Paulo: Pearson Addison Wesley, 2011.