Schema Design Basics
Primary Key Lookup
Stable Row Identity
A primary key gives each row a stable identity. Queries can use that key to find exactly one intended row.
Program
Play the script to choose a product SKU and fetch the matching product row.
primary_key_lookup.sql
Replay: real traced execution (multi-file project)
CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);
INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);
WITH params(target_sku) AS (VALUES ('B2')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);
CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);
INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);
WITH params(target_sku) AS (VALUES ('A1')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);
CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);
INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);
WITH params(target_sku) AS (VALUES ('C3')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);
tables ← 1 row
1CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);values this step1 rowtablesproducts ← 3 rows
1CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);3WITH params(target_sku) AS (VALUES ('B2')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);values this step3 rowsproductsresult ← 1 row
2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);3WITH params(target_sku) AS (VALUES ('B2')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);values this step1 rowresult
tables ← 1 row
1CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);values this step1 rowtablesproducts ← 3 rows
1CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);3WITH params(target_sku) AS (VALUES ('A1')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);values this step3 rowsproductsresult ← 1 row
2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);3WITH params(target_sku) AS (VALUES ('A1')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);values this step1 rowresult
tables ← 1 row
1CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);values this step1 rowtablesproducts ← 3 rows
1CREATE TABLE products (sku TEXT PRIMARY KEY, name TEXT, price INTEGER);2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);3WITH params(target_sku) AS (VALUES ('C3')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);values this step3 rowsproductsresult ← 1 row
2INSERT INTO products VALUES ('A1', 'pen', 3), ('B2', 'notebook', 7), ('C3', 'bag', 25);3WITH params(target_sku) AS (VALUES ('C3')) SELECT sku, name, price FROM products WHERE sku = (SELECT target_sku FROM params);values this step1 rowresult
primary key
`sku TEXT PRIMARY KEY` says each SKU identifies one product row.
lookup
`WHERE sku = target_sku` finds the row with the selected key.
stable identity
A key value is safer for lookup than a display name that might change.