Chaves alternativas

Introdução aos bancos de dados relacionais em SQL

Timo Grossenbacher

Data Journalist

Chaves alternativas

  • As chaves primárias devem ser criadas com o menor número possível de colunas
  • As chaves primárias nunca devem mudar com o tempo
Introdução aos bancos de dados relacionais em SQL
     license_no     | serial_no |    make    |  model  | color
 -------------------+-----------+------------+---------+------
 Texas ABC-739      | A69352    | Ford       | Mustang | blue
 Florida TVP-347    | B43696    | Oldsmobile | Cutlass | black
 New York MPO-22    | X83554    | Oldsmobile | Delta   | silver
 California 432-TFY | C43742    | Mercedes   | 190-D   | champagne
 California RSK-629 | Y82935    | Toyota     | Camry   | red
 Texas RSK-629      | U028365   | Jaguar     | XJS     | blue
    make    |  model  | color
 -----------+---------+------
 Ford       | Mustang | blue
 Oldsmobile | Cutlass | black
 Oldsmobile | Delta   | silver
 Mercedes   | 190-D   | champagne
 Toyota     | Camry   | red
 Jaguar     | XJS     | blue
Introdução aos bancos de dados relacionais em SQL

Como adicionar uma chave alternativa com tipo de dados serial

ALTER TABLE cars
ADD COLUMN id serial PRIMARY KEY;

INSERT INTO cars VALUES ('Volkswagen', 'Blitz', 'black');
    make    |  model  | color       | id
  ----------+---------+-------------+-------------
 Ford       | Mustang | blue        | 1
 Oldsmobile | Cutlass | black       | 2
 Oldsmobile | Delta   | silver      | 3
 Mercedes   | 190-D   | champagne   | 4
 Toyota     | Camry   | red         | 5
 Jaguar     | XJS     | blue        | 6
 Volkswagen | Blitz   | black       | 7
Introdução aos bancos de dados relacionais em SQL

Como adicionar uma chave alternativa com tipo de dados serial (continuação)

INSERT INTO cars
VALUES ('Opel', 'Astra', 'green', 1);
duplicate key value violates unique constraint "id_pkey"
DETAIL:  Key (id)=(1) already exists.
  • “id” identifica de forma única os registros na tabela – útil para referência!
Introdução aos bancos de dados relacionais em SQL

Outro tipo de chave alternativa

ALTER TABLE table_name
ADD COLUMN column_c varchar(256);

UPDATE table_name
SET column_c = CONCAT(column_a, column_b);

ALTER TABLE table_name ADD CONSTRAINT pk PRIMARY KEY (column_c);
Introdução aos bancos de dados relacionais em SQL

Introdução aos bancos de dados relacionais em SQL

Vamos tentar isso!

Introdução aos bancos de dados relacionais em SQL

Preparing Video For Download...