Desmistificando o collation no SQL Server – Parte 2

Olá!

No último post eu comecei uma série sobre collations no SQL Server. Este post apresenta a segunda parte da série. Você pode conferir a agenda a seguir para se situar:

  • Introdução [Você está aqui]
  • O que são collations
  • Collations do Windows vs Collations do SQL
  • Precedência de Collations
  • Tertiary Weights
  • Query Optimizer e Collations!

Lembrando: Essa parte é muito importante para entender a necessidade do collation. Vamos nessa, fera!?

Como um breve resumo: no último post vimos o que são textos e como eles se diferenciam dos outros tipos de dados. Para resumir:

  • Textos dependem de regras culturais!
  • Textos são formados por elementos menores: O caractere
  • O caractere pode ser uma letra, um algarismo, um sinal de pontuação, um espaço, etc.
  • Computadores trabalham com números somente!
  • O seu monitor/impressora faz um desenho, com base no que algum software ordena… Eles não sabem a diferença entre um o ‘a’ de um texto em um site, e o ‘a’ de uma foto de um documento 😉
  • Em suma: O computador/software representa tudo internamente com números e ordena aos dispositivos que desenhem conforme nós entendemos!

Então, o que você vê na tela como sendo uma letra ‘a’ é na verdade um conjunto de pontinhos(pixels) no seu monitor acesos que formam isso que você chama de letra, ou de interrogação, ou de exclamação, ou a maiúsculo com acento…os softwares e o sistema operacional só trabalham com números, mas dão significados aos números dependendo do contexto em que estão usando eles. Imagine este caractere que está vendo na tela do seu computador: A. Olha o que ele é:

  • O seu navegador web/sistema operacional/computador: 65
  • Para o seu monitor/placa de vídeo: pintar o pixel que está na linha 1001 e coluna 5000, pintar o pixel que está na linha 1002, coluna 5002, etc…
  • Para você: letra A
Uma letra A desenhada no monitor, em um zoom!

Uma letra A desenhada no monitor, em um zoom!

Sacou!? Para o computador/software tudo são números e caracteres são números, e consequentemente, textos são números. Todo o texto que você digita e que você lê, está sendo na verdade representado por uma sequência de números (sequência de caracteres), e em qualquer lugar que ele for exibido, por um monitor e uma placa de vídeo, ou uma impressora, ele vai ser exibido conforme você entende: um conjunto de símbolos, de desenhos. Mas dentro do computador, eles são números, porque o computador é capaz de trabalhar somente com números!

Bom Rodrigo, então se caracteres são números, então qual número representa qual caractere?

E é aqui que você começa a se deparar com um dilema que começou lá no início da computação. Os primeiros computadores/softwares eram capazes de trabalhar somente com números de 256 valores diferentes: 0-255. Para entender melhor isso, precisaríamos de outro post, outra série e provavelmente ela despertaria muitas outras dúvidas… Existe um cara, muito foda extremamente expert neste assunto,  que escreveu uma série de artigos sobre como funciona um computador, mais especificamente, uma CPU, começando falando sobre o que são dados e informações até chegar em como o seu computador carrega o sistema operacional… É simplesmente sensacional, e ele aborda tudo o que você precisa saber para entender detalhes de como um computador consegue representar textos, imagens, fazer cálculos,o que quer dizer computador de 8-bits, de 32-bits, etc. Ele é o B. Piropo (http://www.bpiropo.com.br/). Lá tem muitos artigos excelentes, e eu ainda tenho muita fé que vou ler todos! A série de artigos que estou falando começa com o artigo “Mudança de Rumo” e depois com “Computadores I: Dados e Informações”, e estão na seção “Escritos”, “Colunas Fórum PC”. Você pode usar a busca para encontrar também. O B. Piropo sabe realmente como transformar assuntos complexos, com uma linguagem técnica difícil, em brincadeira de criança. Faça bom proveito!

Mas Rodrigo, espera um pouco… O que esse assunto tem a ver com SQL Server?

Bom, o SQL Server é um SGBD, isto é, um software que gerencia um banco de dados onde informações estão a todo tempo sendo armazenadas e recuperadas, e essas informações podem ser textos, ou melhor dizendo, caracteres :-).
Ele realmente não se preocupa em escrever nada na tela, ou imprimir algo… Porém, ele pode entregar e receber textos de outros softwares… Além disso, ele permite que você ordene, compare, conte caracteres, e muitas outras operações com textos…

Para o computador, um ‘a’ e um ‘A’ são representados por números diferentes, mas para nós, significam a mesma letra, porém uma é maiúscula e outra é minúscula. O mesmo vale quando temos um ‘á’ (para o computador é outro número diferente, mas para nós é um ‘a com acento agudo’). Dependendo como você quer trabalhar com texto, você irá querer ignorar essas diferenças, e mesmo sendo números diferentes, o software deverá ser capaz de lidar com isso. E todas essas operações podem ser afetadas conforme as regras culturais. No japão, por exemplo, os caracteres não são iguais ao que usamos aqui. Então é de suma importância entender toda essa base sobre textos! Os conceitos que irá aprender nessa parte, não vale apenas para o SQL Server, mas para qualquer software que necessite trabalhar com texto.

No próximo post, vamos continuar este assunto e descobrir como os caracteres são representandos por números!

Até lá!

[]’s

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s