Skip to content

Last modified: April 17, 2025

Everything about keys

key = one (or more) attributes that uniquely identify a record

Primary Key

The one key the db designer picks to be the main way of identifying rows

student_id first_name last_name major
1 Alice Smith Informatics
2 Bob Lee CS
3 Carol Johnson Informatics
-- two ways for assigning PK

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    major VARCHAR(50)
);

CREATE TABLE students (
    student_id INT,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    major VARCHAR(50),
    PRIMARY KEY (student_id)
);


Multi-attribute keys

fName lName Income Department
Alice Smith 20000 Testing
Alice Thompson 50000 Testing
Bob Thompson 30000 SW
Carol Smith 50000 Testing


Surrogate keys

id fName lName Income Department
11111 Alice Smith 20000 Testing
22222 Alice Thompson 50000 Testing
33333 Bob Thompson 30000 SW
44444 Carol Smith 50000 Testing
CREATE TABLE employees (
    employee_id INT IDENTITY(1,1) PRIMARY KEY,
    first_name VARCHAR(100),
    last_name VARCHAR(100),
    department VARCHAR(100)
);

INSERT INTO employees (first_name, last_name, department)
VALUES ('Amelia', 'Smith', 'Informatics');

SELECT * FROM employees;

-- dont need to insert primary key


Super key

key might be an entire tuple
all attributes together always form a key

Make Model Year
Honda Pilot 2014
Honda CRV 2014
Toyota Camry 2012
Honda Pilot 2017


Multiple keys

a relation can have more than 1 key
the DB designer will designate one as the primary key

SSN fName lName Income Department
111-22-3333 Alice Smith 20000 Testing
222-33-4444 Alice Thompson 50000 Testing
333-44-5555 Bob Thompson 30000 SW
444-55-6666 Carol Smith 50000 Testing


Foreign key

title author isbn publisher printing
The New Jim Crow Michelle Alexander 123-45-678 The New Press 1
Guns, Germs, and Steel Jared Diamond 444-55-666 Norton 2
isbn customer date
123-45-678 1234 9/2/2021
444-55-666 4456 9/5/2021
customer lname fname
1234 Shah S
4456 Lee J
  • The isbn in the Sales table refers to the isbn in the Books table. This tells us which book was sold.
  • The customer in the Sales table refers to the customer in the Customers table. This tells us who bought the book.

A foreign key is a field (or group of fields) in one table that refers to the primary key in another table.

  • It’s how we create relationships between tables in a database.