Surrogate keys

SQL เบื้องต้น: ฐานข้อมูลเชิงสัมพันธ์

Timo Grossenbacher

Data Journalist

Surrogate keys

  • Primary key ควรประกอบด้วยคอลัมน์น้อยที่สุดเท่าที่จำเป็น
  • Primary key ไม่ควรเปลี่ยนแปลงตามเวลา
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
SQL เบื้องต้น: ฐานข้อมูลเชิงสัมพันธ์

การเพิ่ม surrogate key ด้วยชนิดข้อมูล 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
SQL เบื้องต้น: ฐานข้อมูลเชิงสัมพันธ์

การเพิ่ม surrogate key ด้วยชนิดข้อมูล serial (ต่อ)

INSERT INTO cars
VALUES ('Opel', 'Astra', 'green', 1);
duplicate key value violates unique constraint "id_pkey"
DETAIL:  Key (id)=(1) already exists.
  • "id" ระบุแต่ละแถวในตารางได้โดยไม่ซ้ำกัน — มีประโยชน์สำหรับการอ้างอิง!
SQL เบื้องต้น: ฐานข้อมูลเชิงสัมพันธ์

Surrogate key อีกประเภทหนึ่ง

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);
SQL เบื้องต้น: ฐานข้อมูลเชิงสัมพันธ์

SQL เบื้องต้น: ฐานข้อมูลเชิงสัมพันธ์

มาฝึกกันเถอะ!

SQL เบื้องต้น: ฐานข้อมูลเชิงสัมพันธ์

Preparing Video For Download...