📖 Scenario: You are building a simple online store database using Supabase. You want to connect two tables: customers and orders. Each order belongs to one customer. This relationship helps you find all orders made by a customer.
🎯 Goal: Create two tables in Supabase: customers and orders. Then, set up a foreign key relationship from orders.customer_id to customers.id to link orders to customers.
📋 What You'll Learn
Create a customers table with columns id (primary key) and name (text).
Create an orders table with columns id (primary key), customer_id (foreign key), and product (text).
Add a foreign key constraint on orders.customer_id referencing customers.id.
Use SQL commands valid in Supabase/PostgreSQL.
💡 Why This Matters
🌍 Real World
Table relationships are essential in databases to connect related data, like customers and their orders in an online store.
💼 Career
Understanding how to create and use foreign keys is a key skill for database administrators and backend developers working with cloud databases like Supabase.
Progress0 / 4 steps
1
Create the customers table
Write a SQL command to create a table called customers with two columns: id as an integer primary key and name as text.
Supabase
Hint
Use SERIAL PRIMARY KEY for auto-incrementing id.
2
Create the orders table
Write a SQL command to create a table called orders with three columns: id as an integer primary key, customer_id as integer, and product as text.
Supabase
Hint
Define customer_id as INTEGER to link to customers.id.
3
Add foreign key constraint to orders
Write a SQL command to alter the orders table by adding a foreign key constraint on customer_id that references customers.id.
Supabase
Hint
Use ALTER TABLE and ADD CONSTRAINT to add the foreign key.
4
Verify the table relationship
Write a SQL query to select all columns from orders joined with customers on the foreign key customer_id to show orders with customer names.
Supabase
Hint
Use JOIN with ON orders.customer_id = customers.id to combine tables.
Practice
(1/5)
1. What is the main purpose of creating table relationships in Supabase?
easy
A. To store files in the database
B. To connect data across tables using keys
C. To increase the size of the database
D. To change the database theme
Solution
Step 1: Understand table relationships
Table relationships link data in different tables using keys to keep data connected.
Step 2: Identify the purpose
This linking helps to find related data easily, like joining customer info with orders.
Final Answer:
To connect data across tables using keys -> Option B
Quick Check:
Table relationships = Connect data [OK]
Hint: Relationships link tables by keys for easy data access [OK]
Common Mistakes:
Thinking relationships store files
Believing relationships increase database size
Confusing relationships with UI themes
2. Which SQL keyword is used in Supabase to create a foreign key relationship between tables?
easy
A. REFERENCES
B. JOIN
C. SELECT
D. INSERT
Solution
Step 1: Identify the keyword for foreign keys
In SQL, the REFERENCES keyword defines a foreign key that links one table's column to another's primary key.
Step 2: Match with Supabase usage
Supabase uses standard SQL, so REFERENCES is used to create safe links between tables.
Final Answer:
REFERENCES -> Option A
Quick Check:
Foreign key = REFERENCES [OK]
Hint: Use REFERENCES to link tables with foreign keys [OK]
Common Mistakes:
Using JOIN to create relationships (JOIN reads data, doesn't create keys)
Confusing SELECT or INSERT with key creation
3. Given these two tables: CREATE TABLE authors (id SERIAL PRIMARY KEY, name TEXT); CREATE TABLE books (id SERIAL PRIMARY KEY, title TEXT, author_id INT REFERENCES authors(id)); What will this query return? SELECT books.title, authors.name FROM books JOIN authors ON books.author_id = authors.id;
medium
A. A list of books without author names
B. A list of authors without book titles
C. An error because of missing foreign key
D. A list of book titles with their author's names
Solution
Step 1: Understand the table relationship
The books table has a foreign key author_id linking to authors.id, connecting each book to its author.
Step 2: Analyze the JOIN query
The query joins books and authors on matching author_id and id, selecting book titles and author names together.
Final Answer:
A list of book titles with their author's names -> Option D
4. You wrote this table creation: CREATE TABLE orders (id SERIAL PRIMARY KEY, customer_id INT, FOREIGN KEY customer_id REFERENCES customers(id)); Why does this cause an error in Supabase?
medium
A. FOREIGN KEY syntax is incorrect; it needs parentheses around the column
B. customer_id must be TEXT, not INT
C. PRIMARY KEY cannot be SERIAL
D. REFERENCES keyword is not supported
Solution
Step 1: Check FOREIGN KEY syntax
The FOREIGN KEY clause requires parentheses around the column name, like FOREIGN KEY (customer_id).
Step 2: Confirm other parts
customer_id as INT is valid, SERIAL primary key is valid, and REFERENCES is supported in Supabase.
Final Answer:
FOREIGN KEY syntax is incorrect; it needs parentheses around the column -> Option A
Quick Check:
FOREIGN KEY syntax = parentheses needed [OK]
Hint: Put column names in parentheses after FOREIGN KEY [OK]
Common Mistakes:
Omitting parentheses around foreign key column
Changing data type unnecessarily
Thinking REFERENCES is unsupported
5. You want to create a many-to-many relationship between students and courses tables in Supabase. Which setup is best?
hard
A. Add a foreign key column in students pointing to courses
B. Add a foreign key column in courses pointing to students
C. Create a join table with student_id and course_id as foreign keys
D. Merge students and courses into one table
Solution
Step 1: Understand many-to-many relationships
Many-to-many means each student can take many courses and each course can have many students.
Step 2: Choose the correct design
Neither students nor courses alone can hold all links. A join table with student_id and course_id foreign keys connects them properly.
Final Answer:
Create a join table with student_id and course_id as foreign keys -> Option C
Quick Check:
Many-to-many = join table with two foreign keys [OK]
Hint: Use a join table for many-to-many links [OK]
Common Mistakes:
Trying to store many-to-many in one table column
Merging unrelated tables
Using one foreign key only
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.