Tipos de Campos, Índices e Chaves Compostas em Bancos de Dados

1. Tipos de Campos (Tipos de Dados)

Os tipos de campos determinam o tipo de dado que pode ser armazenado em uma coluna de uma tabela. Os principais tipos são:

  • Numéricos: INTEGER, FLOAT, DOUBLE, DECIMAL
  • Texto: CHAR, VARCHAR, TEXT
  • Datas e Horas: DATE, TIME, DATETIME, TIMESTAMP
  • Booleanos: BOOLEAN ou BOOL
  • Binários: BLOB

Diferenças entre SQLite, MySQL e PostgreSQL

Tipo de Dado SQLite MySQL PostgreSQL
Inteiro INTEGER INT INTEGER
Texto TEXT VARCHAR(n), TEXT VARCHAR(n), TEXT
Decimal REAL, NUMERIC DECIMAL, FLOAT, DOUBLE NUMERIC, REAL, DOUBLE PRECISION
Booleano INTEGER (0/1) TINYINT(1) ou BOOLEAN BOOLEAN
Data/Hora TEXT, REAL, INTEGER DATE, DATETIME, TIMESTAMP DATE, TIMESTAMP
Binário BLOB BLOB BYTEA
  • SQLite é mais flexível, aceita quase qualquer valor em qualquer coluna, mas recomenda-se seguir os tipos.
  • MySQL e PostgreSQL são mais rígidos e possuem mais tipos específicos.

2. Índices

Índices são estruturas que aceleram buscas em tabelas. Podem ser criados em uma ou mais colunas.

  • Sintaxe geral:
    CREATE INDEX nome_indice ON tabela(coluna1, coluna2);
    
  • Índices Únicos: Garantem que os valores das colunas indexadas não se repitam.
    CREATE UNIQUE INDEX nome_indice ON tabela(coluna);
    
  • Índices Compostos: Envolvem mais de uma coluna.

Diferenças

  • SQLite: Suporta índices simples e compostos, mas não tem tipos de índice avançados (como FULLTEXT ou SPATIAL).
  • MySQL: Suporta vários tipos de índices (BTREE, FULLTEXT, SPATIAL). FULLTEXT só em tabelas MyISAM/InnoDB.
  • PostgreSQL: Suporta vários tipos (BTREE, HASH, GIN, GiST, BRIN) e índices parciais.

3. Chaves Compostas

Chaves compostas são chaves primárias ou estrangeiras que envolvem mais de uma coluna.

  • Exemplo de chave primária composta:
    CREATE TABLE exemplo (
    	coluna1 INT,
    	coluna2 INT,
    	valor TEXT,
    	PRIMARY KEY (coluna1, coluna2)
    );
    
  • Exemplo de chave estrangeira composta:
    CREATE TABLE dependente (
    	coluna1 INT,
    	coluna2 INT,
    	valor TEXT,
    	FOREIGN KEY (coluna1, coluna2) REFERENCES exemplo(coluna1, coluna2)
    );
    

Diferenças

  • SQLite: Suporta chaves compostas, mas o enforcement de integridade referencial pode ser limitado dependendo da configuração.
  • MySQL: Suporta chaves compostas normalmente.
  • PostgreSQL: Suporte completo e robusto para chaves compostas.

4. Resumo das Peculiaridades

  • SQLite: Tipagem flexível, índices e chaves compostas suportados, mas menos tipos de índice e enforcement de integridade pode ser desativado.
  • MySQL: Tipagem mais rígida, vários tipos de índice, bom suporte a chaves compostas.
  • PostgreSQL: Tipagem rígida, mais tipos de índice, suporte avançado a chaves e integridade referencial.

5. Exercício Proposto

  1. Crie uma tabela com chave primária composta em cada SGBD.
  2. Crie índices simples e compostos.
  3. Teste inserir dados repetidos em campos com índice único.

Dica: Sempre consulte a documentação do SGBD para detalhes e limitações específicas de cada tipo de campo e índice.