Bird
Raised Fist0
Supabasecloud~30 mins

Creating tables via dashboard in Supabase - Try It Yourself

Choose your learning style10 modes available
Creating tables via dashboard
📖 Scenario: You are building a blog application with Supabase. You need to create the database schema with a users table and a posts table with a foreign key relationship. You'll write the SQL that the dashboard generates behind the scenes.
🎯 Goal: Create two related tables with proper primary keys, constraints, foreign keys, and Row Level Security enabled.
📋 What You'll Learn
Create a users table with UUID primary key and email
Create a posts table with foreign key to users
Enable Row Level Security on both tables
Add a basic RLS policy for authenticated read access
💡 Why This Matters
🌍 Real World
Every Supabase application needs tables with proper RLS policies. The dashboard provides a visual way to create them, but understanding the generated SQL is essential for migrations and debugging.
💼 Career
Full-stack developers using Supabase must understand table creation, foreign keys, and RLS to build secure applications.
Progress0 / 4 steps
1
Create the users table
Create a table public.users with columns: id as UUID with default gen_random_uuid() as PRIMARY KEY, email as TEXT NOT NULL UNIQUE, and created_at as TIMESTAMPTZ with default now().
Supabase
Hint

Use gen_random_uuid() as the default value for UUID primary keys in Supabase.

2
Create the posts table with foreign key
Create a table public.posts with columns: id as BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, user_id as UUID referencing public.users(id) with ON DELETE CASCADE, title as TEXT NOT NULL, and created_at as TIMESTAMPTZ with default now().
Supabase
Hint

Use REFERENCES public.users(id) ON DELETE CASCADE to create the foreign key with cascade delete.

3
Enable Row Level Security
Enable Row Level Security on both public.users and public.posts tables using ALTER TABLE ... ENABLE ROW LEVEL SECURITY.
Supabase
Hint

Use ALTER TABLE table_name ENABLE ROW LEVEL SECURITY for each table.

4
Add a read policy for authenticated users
Create a policy named "Users can read all posts" on public.posts for SELECT using the role authenticated with the check (true) to allow all authenticated users to read posts.
Supabase
Hint

Use CREATE POLICY name ON table FOR SELECT TO role USING (expression).

Practice

(1/5)
1. What is the main purpose of creating tables via the Supabase dashboard?
easy
A. To deploy applications directly from the dashboard
B. To write complex SQL queries manually
C. To create user interface designs
D. To organize data with clear columns and constraints without coding

Solution

  1. Step 1: Understand the dashboard's role

    The Supabase dashboard allows users to create tables visually without writing code.
  2. Step 2: Identify the main benefit

    This method helps organize data clearly with columns and constraints easily set up.
  3. Final Answer:

    To organize data with clear columns and constraints without coding -> Option D
  4. Quick Check:

    Dashboard table creation = Organize data visually [OK]
Hint: Dashboard tables = visual data organization, no code needed [OK]
Common Mistakes:
  • Confusing dashboard with SQL query writing
  • Thinking dashboard creates app UI
  • Assuming dashboard deploys apps
2. Which step is required to add a new column when creating a table in the Supabase dashboard?
easy
A. Run a database migration script
B. Write a SQL INSERT statement
C. Click 'Add Column' and define the column name and type
D. Upload a CSV file with column data

Solution

  1. Step 1: Locate the column addition feature

    In the Supabase dashboard, you add columns by clicking the 'Add Column' button.
  2. Step 2: Define column details

    After clicking, you specify the column name and data type to create it.
  3. Final Answer:

    Click 'Add Column' and define the column name and type -> Option C
  4. Quick Check:

    Add column = Click button + define name/type [OK]
Hint: Add columns by clicking 'Add Column' and setting details [OK]
Common Mistakes:
  • Confusing column addition with data insertion
  • Trying to upload data instead of defining structure
  • Running scripts instead of using dashboard UI
3. After creating a table with columns id (integer, primary key) and name (text) via the Supabase dashboard, what will be the result of inserting {id: 1, name: 'Alice'} and then querying all rows?
medium
A. [{id: 1, name: 'Alice'}]
B. Error: Missing table schema
C. Empty result set
D. [{name: 'Alice'}]

Solution

  1. Step 1: Understand table schema and insert

    The table has columns 'id' as primary key and 'name' as text. Inserting {id:1, name:'Alice'} matches schema.
  2. Step 2: Query all rows after insert

    Querying all rows returns the inserted row as [{id: 1, name: 'Alice'}].
  3. Final Answer:

    [{id: 1, name: 'Alice'}] -> Option A
  4. Quick Check:

    Insert + query = inserted row returned [OK]
Hint: Insert matching schema, query returns inserted rows [OK]
Common Mistakes:
  • Expecting error without schema mismatch
  • Thinking query returns empty before insert
  • Assuming partial row returned without id
4. You tried to create a table via the Supabase dashboard but received an error saying the column name is invalid. What is the most likely cause?
medium
A. Not selecting a data type for the column
B. Using spaces or special characters in the column name
C. Adding too many columns at once
D. Not clicking the 'Save' button after creation

Solution

  1. Step 1: Identify invalid column name causes

    Column names cannot contain spaces or special characters in Supabase.
  2. Step 2: Recognize common naming rules

    Valid names use letters, numbers, and underscores only.
  3. Final Answer:

    Using spaces or special characters in the column name -> Option B
  4. Quick Check:

    Invalid column name = spaces/special chars [OK]
Hint: Use only letters, numbers, underscores in column names [OK]
Common Mistakes:
  • Ignoring naming rules and using spaces
  • Forgetting to select data type (usually warned separately)
  • Assuming too many columns cause naming errors
5. You want to create a table for customer orders with columns: order_id (primary key), customer_id, order_date, and total_amount. Which approach via the Supabase dashboard ensures data integrity and efficient queries?
hard
A. Set order_id as primary key, customer_id as foreign key, and choose appropriate data types
B. Create all columns as text type for flexibility
C. Skip primary key to allow duplicate orders
D. Add only order_id and total_amount columns

Solution

  1. Step 1: Define primary key for uniqueness

    Setting order_id as primary key ensures each order is unique.
  2. Step 2: Use foreign key and proper data types

    Defining customer_id as foreign key links orders to customers; choosing correct data types improves query efficiency.
  3. Final Answer:

    Set order_id as primary key, customer_id as foreign key, and choose appropriate data types -> Option A
  4. Quick Check:

    Primary + foreign keys + data types = data integrity [OK]
Hint: Use keys and correct types for integrity and speed [OK]
Common Mistakes:
  • Using text for all columns losing type benefits
  • Skipping primary key causing duplicates
  • Ignoring foreign key relationships
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard