Relational Database Design – Full Course

freeCodeCamp.org · Beginner ·📊 Data Analytics & Business Intelligence ·7mo ago

Key Takeaways

This video course covers relational database design, including SQL fundamentals, entity-relationship modeling, normalization, data types, constraints, indexing strategies, and query optimization, using tools such as SQL and entity-relationship diagrams.

Original Description

Learn relational database design from the ground up in this comprehensive course. This 8-week curriculum covers SQL fundamentals, entity-relationship modeling, normalization (1NF through BCNF), data types and constraints, indexing strategies, and query optimization. You can get the complete learning experience with weekly schedules, quizzes and hands-on assignments at https://github.com/StructuredCS/grokking-relational-database-design. All materials are freely available. This course is based on the book Grokking Relational Database Design by Dr. Qiang Hao and Dr. Michael Tsikerdekis (Manning Publications, 2025): https://mng.bz/PRER. The book provides additional depth and context with extended examples and a cohesive narrative that follows a single complex design throughout. ⭐️ Contents ⭐️ 0:00:00 Relational Databases for Beginners — Tables, Entities, Keys & SQL 0:16:32 SQL Filtering & Aggregation 0:33:23 SQL Table Commands 0:45:57 Foreign Keys in SQL 1:01:54 How SQL JOINs Work 1:17:03 How to learn SQL on your own 1:31:48 Database Design Goals 1:39:25 Database Design Lifecycle 1:51:17 From Real-World Ideas to Tables 2:01:24 Primary Key, Candidate Key, and Super Key 2:14:25 Don't Use the Wrong SQL String Type 2:24:08 The FLOAT Mistake That Crashed a Stock Exchange 2:33:31 SQL Date and Time Types Explained 2:38:48 Connecting Entities in an ER Diagram 2:47:36 One-to-One Relationships 3:03:19 One-to-Many Relationships 3:14:18 Many-to-Many Relationships 3:24:54 Strong vs Weak Entities 3:38:05 First Normal Form - Primary Keys and Atomic Values 3:50:21 Second Normal Form - Partial Keys and Functional Dependencies 4:04:37 Third Normal Form - Transitive Dependencies 4:18:58 The Untold Story of BCNF 4:26:18 Primary Key vs Unique Constraints 4:40:15 Foreign Key Constraints - ON DELETE & ON UPDATE 4:50:31 Other Constraints: NOT NULL, DEFAULT, and CHECK 5:08:59 Access Control, Hashing & Encryption 5:29:47 B-Tree vs Full-Text Indexes 5:41:46 Denormalization ❤️ Support for this
AI explanation not available for this lesson yet
This lesson is still being prepared for the AI tutor. In the meantime, explore lessons that are ready.
Browse explainer-ready lessons →

Playlist

Uploads from freeCodeCamp.org · freeCodeCamp.org · 0 of 60

← Previous Next →
1 React: Production Server Setup Part 2 - Live Coding with Jesse
React: Production Server Setup Part 2 - Live Coding with Jesse
freeCodeCamp.org
2 cookies vs localStorage vs sessionStorage - Beau teaches JavaScript
cookies vs localStorage vs sessionStorage - Beau teaches JavaScript
freeCodeCamp.org
3 Browser history tutorial - Beau teaches JavaScript
Browser history tutorial - Beau teaches JavaScript
freeCodeCamp.org
4 Graph Data Structure Intro (inc. adjacency list, adjacency matrix, incidence matrix)
Graph Data Structure Intro (inc. adjacency list, adjacency matrix, incidence matrix)
freeCodeCamp.org
5 React: Parameterized Routing with Next.js - Live Coding with Jesse
React: Parameterized Routing with Next.js - Live Coding with Jesse
freeCodeCamp.org
6 React: Dealing with jQuery Issues - Live Coding with Jesse
React: Dealing with jQuery Issues - Live Coding with Jesse
freeCodeCamp.org
7 setInterval and setTimeout: timing events - Beau teaches JavaScript
setInterval and setTimeout: timing events - Beau teaches JavaScript
freeCodeCamp.org
8 Browser and Device Testing - Live Coding with Jesse
Browser and Device Testing - Live Coding with Jesse
freeCodeCamp.org
9 Last Minute Updates - Live Coding with Jesse
Last Minute Updates - Live Coding with Jesse
freeCodeCamp.org
10 Post Launch Updates - Live Coding with Jesse
Post Launch Updates - Live Coding with Jesse
freeCodeCamp.org
11 React: Setting Up Google Analytics - Live Coding with Jesse
React: Setting Up Google Analytics - Live Coding with Jesse
freeCodeCamp.org
12 React: Masonry Layout - Live Coding with Jesse
React: Masonry Layout - Live Coding with Jesse
freeCodeCamp.org
13 Load Balancing Digital Ocean Droplets - Live Coding with Jesse
Load Balancing Digital Ocean Droplets - Live Coding with Jesse
freeCodeCamp.org
14 try, catch, finally, throw - error handling in JavaScript
try, catch, finally, throw - error handling in JavaScript
freeCodeCamp.org
15 Load Balancing: SSL Passthrough Setup - Live Coding with Jesse
Load Balancing: SSL Passthrough Setup - Live Coding with Jesse
freeCodeCamp.org
16 Graphs: breadth-first search - Beau teaches JavaScript
Graphs: breadth-first search - Beau teaches JavaScript
freeCodeCamp.org
17 React: Masonry Layout Part 2 - Live Coding with Jesse
React: Masonry Layout Part 2 - Live Coding with Jesse
freeCodeCamp.org
18 React: WordPress API Live Search - Live Coding with Jesse
React: WordPress API Live Search - Live Coding with Jesse
freeCodeCamp.org
19 Creating WordPress Custom Post Types - Live Coding With Jesse
Creating WordPress Custom Post Types - Live Coding With Jesse
freeCodeCamp.org
20 Dates - Beau teaches JavaScript
Dates - Beau teaches JavaScript
freeCodeCamp.org
21 Miscellaneous Front End Updates - Live Coding with Jesse
Miscellaneous Front End Updates - Live Coding with Jesse
freeCodeCamp.org
22 Merging a Pull Request from GitHub - Live Coding with Jesse
Merging a Pull Request from GitHub - Live Coding with Jesse
freeCodeCamp.org
23 React + Prettier + Standard JS - Live Coding with Jesse
React + Prettier + Standard JS - Live Coding with Jesse
freeCodeCamp.org
24 React: Sortable Responsive Table - Live Coding with Jesse
React: Sortable Responsive Table - Live Coding with Jesse
freeCodeCamp.org
25 Geolocation Sorting by Distance - Live Coding with Jesse
Geolocation Sorting by Distance - Live Coding with Jesse
freeCodeCamp.org
26 Tradeoff Matrix - Agile Software Development
Tradeoff Matrix - Agile Software Development
freeCodeCamp.org
27 The Definition of Ready - Agile Software Development
The Definition of Ready - Agile Software Development
freeCodeCamp.org
28 Getting first React job without experience - Ask Preethi
Getting first React job without experience - Ask Preethi
freeCodeCamp.org
29 React: Google Analytics Click Tracking - Live Coding with Jesse
React: Google Analytics Click Tracking - Live Coding with Jesse
freeCodeCamp.org
30 Submitting a PR to an Open Source Project - Live Coding with Jesse
Submitting a PR to an Open Source Project - Live Coding with Jesse
freeCodeCamp.org
31 Should I go back to school to get CS degree? - Ask Preethi
Should I go back to school to get CS degree? - Ask Preethi
freeCodeCamp.org
32 Hero Section CSS Changes - Live Coding with Jesse
Hero Section CSS Changes - Live Coding with Jesse
freeCodeCamp.org
33 Working Agreement - Agile Software Development
Working Agreement - Agile Software Development
freeCodeCamp.org
34 A day at Pennybox with Co-Founder Reji Eapen
A day at Pennybox with Co-Founder Reji Eapen
freeCodeCamp.org
35 React: Sorting and Filtering Data - Live Coding with Jesse
React: Sorting and Filtering Data - Live Coding with Jesse
freeCodeCamp.org
36 React: Sorting and Filtering Data Part 2 - Live Coding with Jesse
React: Sorting and Filtering Data Part 2 - Live Coding with Jesse
freeCodeCamp.org
37 React: Building a New UI - Live Coding with Jesse
React: Building a New UI - Live Coding with Jesse
freeCodeCamp.org
38 Definition of Done - Agile Software Development
Definition of Done - Agile Software Development
freeCodeCamp.org
39 Getting started with jQuery (tutorial) - Beau teaches JavaScript
Getting started with jQuery (tutorial) - Beau teaches JavaScript
freeCodeCamp.org
40 Making a React Blog with WordPress Content - Live Coding with Jesse
Making a React Blog with WordPress Content - Live Coding with Jesse
freeCodeCamp.org
41 React, NextJS, CSS - Live Coding with Jesse
React, NextJS, CSS - Live Coding with Jesse
freeCodeCamp.org
42 jQuery events - Beau teaches JavaScript
jQuery events - Beau teaches JavaScript
freeCodeCamp.org
43 React/NextJS Routing and WordPress API Custom Types - Live Coding with Jesse
React/NextJS Routing and WordPress API Custom Types - Live Coding with Jesse
freeCodeCamp.org
44 React: Working with API Data - Live Coding with Jesse
React: Working with API Data - Live Coding with Jesse
freeCodeCamp.org
45 React: Refactoring Components - Live Streaming with Jesse
React: Refactoring Components - Live Streaming with Jesse
freeCodeCamp.org
46 jQuery effects - Beau teaches JavaScript
jQuery effects - Beau teaches JavaScript
freeCodeCamp.org
47 More React Refactoring - Live Coding with Jesse
More React Refactoring - Live Coding with Jesse
freeCodeCamp.org
48 animate in jQuery - Beau teaches JavaScript
animate in jQuery - Beau teaches JavaScript
freeCodeCamp.org
49 "Finishing" My React Site - Live Coding with Jesse
"Finishing" My React Site - Live Coding with Jesse
freeCodeCamp.org
50 Starting a New React Project (P2D1) - Live Coding with Jesse
Starting a New React Project (P2D1) - Live Coding with Jesse
freeCodeCamp.org
51 React Project 2 Day 2: Learning Material UI - Live Coding with Jesse
React Project 2 Day 2: Learning Material UI - Live Coding with Jesse
freeCodeCamp.org
52 The Agile Manifesto - Agile Software Development
The Agile Manifesto - Agile Software Development
freeCodeCamp.org
53 jQuery: get and set with http, text, val, and attr - Beau teaches JavaScript
jQuery: get and set with http, text, val, and attr - Beau teaches JavaScript
freeCodeCamp.org
54 React Project 2 Day 3 - Live Coding with Jesse
React Project 2 Day 3 - Live Coding with Jesse
freeCodeCamp.org
55 The INVEST approach to product backlog items
The INVEST approach to product backlog items
freeCodeCamp.org
56 React Project 2 Day 4 - Live Coding with Jesse
React Project 2 Day 4 - Live Coding with Jesse
freeCodeCamp.org
57 Chickens and Pigs - Agile Software Development
Chickens and Pigs - Agile Software Development
freeCodeCamp.org
58 React Project 2 Day 5 - Live Coding with Jesse
React Project 2 Day 5 - Live Coding with Jesse
freeCodeCamp.org
59 jQuery: add and remove DOM elements - Beau teaches JavaScript
jQuery: add and remove DOM elements - Beau teaches JavaScript
freeCodeCamp.org
60 React Project 2 Day 6 - Live Coding with Jesse
React Project 2 Day 6 - Live Coding with Jesse
freeCodeCamp.org

This comprehensive course covers relational database design, including SQL fundamentals, entity-relationship modeling, and query optimization, providing a thorough understanding of database design principles and practices. The course is based on the book Grokking Relational Database Design and includes hands-on assignments and quizzes. By the end of the course, students will be able to design and implement efficient relational databases.

Key Takeaways
  1. Learn SQL fundamentals
  2. Understand entity-relationship modeling
  3. Apply normalization techniques
  4. Implement data types and constraints
  5. Optimize queries using indexing strategies
💡 Proper database design is crucial for efficient data storage and retrieval, and normalization is a key step in ensuring data consistency and reducing data redundancy.

Related Reads

📰
Why Snowflake Is Becoming a Go-To Platform for Modern Data Engineering
Learn why Snowflake is becoming the go-to platform for modern data engineering and how it simplifies data warehousing
Medium · AI
📰
R You Kidding Me? Python vs R for Data Analysis
Learn when to use Python or R for data analysis and why it matters for efficient data science workflows
Medium · Python
📰
CBAM and Product-Level Carbon Accounting: Why the Future of Manufacturing Depends on Granular…
Learn how CBAM and product-level carbon accounting can shape the future of manufacturing with granular data analysis
Medium · Data Science
📰
“Removing the fun” from fantasy hockey: An attempt at automating drafting based on historical data
Learn how to automate fantasy hockey drafting using historical data and data science techniques, making the process more efficient but potentially less fun
Medium · Data Science

Chapters (28)

Relational Databases for Beginners — Tables, Entities, Keys & SQL
16:32 SQL Filtering & Aggregation
33:23 SQL Table Commands
45:57 Foreign Keys in SQL
1:01:54 How SQL JOINs Work
1:17:03 How to learn SQL on your own
1:31:48 Database Design Goals
1:39:25 Database Design Lifecycle
1:51:17 From Real-World Ideas to Tables
2:01:24 Primary Key, Candidate Key, and Super Key
2:14:25 Don't Use the Wrong SQL String Type
2:24:08 The FLOAT Mistake That Crashed a Stock Exchange
2:33:31 SQL Date and Time Types Explained
2:38:48 Connecting Entities in an ER Diagram
2:47:36 One-to-One Relationships
3:03:19 One-to-Many Relationships
3:14:18 Many-to-Many Relationships
3:24:54 Strong vs Weak Entities
3:38:05 First Normal Form - Primary Keys and Atomic Values
3:50:21 Second Normal Form - Partial Keys and Functional Dependencies
4:04:37 Third Normal Form - Transitive Dependencies
4:18:58 The Untold Story of BCNF
4:26:18 Primary Key vs Unique Constraints
4:40:15 Foreign Key Constraints - ON DELETE & ON UPDATE
4:50:31 Other Constraints: NOT NULL, DEFAULT, and CHECK
5:08:59 Access Control, Hashing & Encryption
5:29:47 B-Tree vs Full-Text Indexes
5:41:46 Denormalization
Up next
The Test Is Right 99% of the Time
DataMListic
Watch →