O que significam esses códigos no MySQL? PK, NN, UQ, B, UN, ZF, AI e G

Ao criar uma tabela, ao especificar os campos, temos a seguinte coluna de marcações:

Eis o que cada uma significa:

  1. PK (Primary Key): Indica que a coluna é uma chave primária, o que significa que cada valor na coluna deve ser único e não nulo para identificar unicamente cada linha na tabela.
  2. NN (Not Null): Especifica que a coluna não pode aceitar valores nulos, garantindo que cada linha tenha um valor válido nesta coluna.
  3. UQ (Unique): Determina que todos os valores na coluna devem ser únicos dentro da tabela, mas diferentemente da chave primária, uma coluna única pode conter valores nulos.
  4. B (Binary): Quando este seletor é marcado, a coluna é tratada como contendo dados binários. Isso é relevante para tipos de dados como VARCHAR ou CHAR, especificando que os dados devem ser armazenados como binários em vez de texto.
  5. UN (Unsigned): Aplicável a tipos de dados numéricos (como INT, SMALLINT, DECIMAL, etc.). Marcar uma coluna como “unsigned” significa que ela não pode conter valores negativos, o que efetivamente dobra a capacidade do limite superior do tipo de dados, mas limita a entrada a apenas números positivos.
  6. ZF (Zero Fill): Quando utilizado com tipos de dados numéricos e em combinação com UN (Unsigned), faz com que o MySQL preencha a coluna com zeros à esquerda até o comprimento definido do campo. Por exemplo, se uma coluna INT(4) é definida como ZF e UN, e você insere o valor 5, ele será armazenado como 0005.
  7. AI (Auto Increment): Utilizado em uma coluna primária, geralmente uma chave primária, para criar um identificador único automaticamente incrementado cada vez que um novo registro é inserido.

Esses seletores permitem definir restrições e comportamentos específicos para as colunas das suas tabelas no MySQL, facilitando a manutenção da integridade e do desempenho adequados dos dados.

Já o G, que significa “Generated Colunms” exige uma explicação um pouco maior:

Como Funcionam as Colunas Geradas

  1. Tipos de Colunas Geradas:
  • Virtual: O valor da coluna é calculado em tempo de leitura e não é armazenado fisicamente na tabela. Isso é útil para cálculos que precisam ser sempre atualizados conforme os dados mudam, mas pode aumentar a carga de consulta porque o valor precisa ser recalculado a cada acesso.
  • Armazenada (Stored): O valor da coluna é calculado e armazenado fisicamente no banco de dados. Isso aumenta o espaço de armazenamento utilizado, mas melhora o desempenho das consultas, pois o valor já está calculado e pronto para ser lido sem a necessidade de recálculo.
  1. Criação de uma Coluna Gerada:
  • Ao definir uma coluna gerada no MySQL Workbench, você precisa especificar a expressão que calcula seus valores. Essa expressão pode ser uma combinação de colunas existentes, funções e constantes.
  1. Exemplo de SQL para Coluna Gerada:
   CREATE TABLE exemplo (
     id INT AUTO_INCREMENT PRIMARY KEY,
     preco DECIMAL(10,2),
     quantidade INT,
     total DECIMAL(10,2) AS (preco * quantidade) STORED
   );

Neste exemplo, a coluna total é uma coluna armazenada que é automaticamente calculada como o produto de preço e quantidade.

Vantagens das Colunas Geradas

  • Otimização de Performance: Para colunas armazenadas, o valor é calculado apenas uma vez no momento da inserção ou atualização, o que pode acelerar consultas subsequentes que dependem desses valores.
  • Consistência dos Dados: Como os valores são automaticamente calculados pelo banco de dados, isso reduz o risco de erros manuais na entrada de dados e garante a consistência.
  • Flexibilidade de Consulta: Permite criar representações dinâmicas de dados sem alterar ou duplicar dados na base de dados.

Essas colunas são particularmente úteis em cenários de modelagem de dados onde valores derivados precisam ser frequentemente acessados ou quando a consistência e a eficiência na execução de cálculos são cruciais.


Publicado

em

por

Tags:

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *