Olá galera o/

Na postagem vamos falar o porque é tão importante escolher os tipos de dados corretos para nossas tabelas do banco de dados.

Os tipos de dados especificam o que podemos colocar nos nossos objetos do banco de dados, podendo ser tabelas, stored procedures, variáveis e etc. integridade do banco de dados depende decisivamente dos tipos de dados com escopo apropriado.

Muitos estudantes e profissionais de banco de dados (Relacional ou Data Warehouse) muitas vezes criam seus bancos de dados de qualquer jeito, sem se importar muito com quanto espaço este banco de dados vai consumir em disco ou como estará sua volumetria de dados no futuro.

Isso é uma má prática, quando você monta um banco de dados não é apenas uma modelagem conceitual e lógica, há todo um estudo de infraestrutura, qual o SGBD utilizar, quais tipos de dados adequados para cada objeto criado, qual o ERP ou Aplicação estará sendo executado no Front-End, números de transações que ocorreram pela ERP/Aplicação, entre outras coisas.

Mas porque é importante escolher os tipos de dados corretos na criação dos nossos banco de dados? Vamos listar os principais motivos:

  • Regras de negócio implementadas corretamente. Escolher o tipo correto, respeitando as regras do negócio do cliente.
    • Ex.: Para um campo CPF iremos salvar os salvar os pontos e traços ou somente os números. Com pontos e traço CHAR(14), somente números CHAR(11).
  • Economia de espaço em disco. A escolha de tipos de dados maiores do que o necessário pode causar desperdício de espaço e exigir mais páginas do que o necessário para leitura.
    • Ex.: Escolher um BIGINT ao invés de um tipo INT. Dependendo da aplicação deles no campo.
  • Melhora no desempenho das consultas executadas. Objetos com os tipos corretos de dados evitam o uso de conversões de tipos de dados, tanto Implícitas quanto Explicitas (utilizando o CAST e CONVERT). Conversões de tipo podem afetar negativamente os planos de consulta, assim, deixando o retorno da query mais lenta.

Percebam que não é apenas “Modelar o negócio e pronto: O banco de dados já esta construído já terminei meu trabalho!”, mas sim tipar seus objetos da maneira correta para obter o melhor aproveitamento do seu banco de dados em todos os sentidos, sendo em armazenamento, aplicação das regras de negócio e melhor performance nas consultas.

Agora que sabemos os motivos de tipar corretamente nossos dados, vamos aprender sobre os tipos de dados utilizados no SQL Server / SQL Azure Database / Azure Synapse Analytics.

Os tipos de dados em SQL Server são organizados nas seguintes categorias:

  • Numéricos
    • Numéricos exatos
    • Numéricos aproximados
  • String (Texto)
  • Data e hora
  • Outros tipos de dados

Tipos contidos em cada categoria:

  • Numéricos exatos
    • bigint
    • numeric
    • bit
    • smallint
    • decimal
    • smallmoney
    • int
    • tinyint
    • money
  • Numéricos aproximados
    • float
    • real

  • Cadeias de caracteres (ASCII)
    • Char
    • Varchar
    • Text (sendo substituído pelo varchar(max))
  • Cadeias de caracteres Unicode
    • Nchar
    • Nvarchar
    • Ntext (sendo substituído pelo nvarchar(max))
  • Cadeia de caracteres binária
    • binary
    • varbinary
    • image
  • Data e hora
    • date
    • datetimeoffset
    • datetime2
    • smalldatetime
    • datetime
    • time
  • Outros tipos de dados
    • cursor
    • rowversion
    • hierarchyid
    • uniqueidentifier
    • sql_variant
    • XML
    • Tipos de geometria espacial
    • Tipos de geografia espacial
    • Table

Mais detalhes sobre os tipos de dados do SQL Server através do link abaixo:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver15

Dicas sobre tipagem de dados!!!

  • Analisar quantas informações serão armazenadas no campo da tabela.
  • Se perguntar até aonde aquela informação pode crescer.
  • É recomendável usar os tipos de dados String de comprimento fixo (char, nchar, binary), quando os valores que estão sendo armazenados tiverem um tamanho consistente.
    • Ex.: A sigla dos estados no Brasil é sempre com duas letras, um char de tamanho 2.
  • Quando o tamanho não for consistente utilizar os tipos String de comprimento variável (varchar,nvarchar, varbanary).
    • Ex.: Uma coluna de endereço ou nome de uma pessoa, aonde os valores podem variar de tamanho.
  • Cuidado ao utilizar um campo CHAR com valores de tamanho variável. Mas porque?
    • Ex.: Um campo do tipo CHAR (5), mesmo que você o preencha com apenas 2 caracteres, ele ocupa em memoria 5 bytes, ou seja, os outros 3 bytes são preenchidos com espaço em branco.
    • Já o campo VARCHAR vai ocupar em bytes apenas o que esta sendo inserido no campo.
  • Para os tipos numéricos, é necessário verificar até quando a informação vai crescer.
    • Ex.: É melhor uma coluna Smallmoney ou Money em uma coluna de preço de produto? Eu terei algum preço que vai ultrapassar 200 mil de valor? Entender o negócio é uma chaves para tipar os objetos com mais acertividade.
    • Quero armazenar o valor de 1 a 10 em uma coluna. Podemos utilizar TINYINT ao invés de INT, pois o range de valores do TINYINT vai de 0 a 255 e seu consumo é apenas de 1 byte.
  • Para campos auto incrementais os tipos inteiros (exatos) são os recomendados.
  • Os numéricos exatos tem uma melhor performance na junção de tabelas (JOINS).
  • Para os tipos Data, verificar se deseja armazenar apenas a data, data e hora ou apenas a hora.
  • A Microsoft recomenda usar DATETIME2 ao invés de DATETIME.

É isso galera, espero que depois dessa postagem sua visão e seu conhecimento tenha sido ampliado sobre a importância dos tipos de dados nos SGBDs. Lembrem-se que, um banco de dados sendo ele relacional ou de BI quando bem implementado faz toda a diferença na escrita e leitura dos dados, então, apliquem as melhores praticas e os tipos corretos nos nossos bancos de dados e sejam felizes.

Para quem quer estudar:

  • Para a Certificação Microsoft MTA Database Fundamentals | Banco de Dados Relacional e Linguagem T-SQL.
    • Segue o link do curso na Udemy. >> LINK <<
  • Sobre Bancos da Dados no Azure
    • Segue o link do curso na Udemy. >> LINK <<

Não se esqueçam de avaliar esta postagem através da ESTRELAS abaixo das redes sociais, isso vai me ajudar muito a melhorar as postagens.

Quem quiser mandar comentários, sugestões, criticas e complementos, fiquem a vontade, pois feedbacks positivos ou negativos engradecem meu conhecimento para que possa melhorar as postagem para vocês.

Até a próxima o/

Acessem nossas Redes Sociais:

Publicidade