Skip to content

Intro to Relational Database Management Systems

What are we trying to accomplish

In this module, we aim to give you a strong foundation in how relational databases work, why they are critical in full-stack development, and how they interact with application code. You will learn where data truly lives, how to structure it safely using tables and constraints, and how to retrieve it efficiently with queries. By connecting database concepts to familiar Python OOP patterns—such as classes, attributes, and setters—you will gain a mental model that makes working with Django models, migrations, and QuerySets intuitive. By the end of this module, you will understand both the theory behind relational databases and the practical skills needed to manipulate and protect data in production-ready applications.


Lectures & Assignments

Pre-Requisites

Lectures

Assignments


Terminal Learning Objectives (TLO's) executable

  • Explain the role of relational databases in full-stack applications
  • Set up and run PostgreSQL using Docker
  • Create tables with appropriate columns and data types
  • Enforce data integrity using constraints such as NOT NULL, UNIQUE, CHECK, PRIMARY KEY, and FOREIGN KEY
  • Write SQL queries to filter, sort, aggregate, and group data
  • Connect database tables to Python OOP concepts
  • Import data from CSV files and handle primary key synchronization
  • Recognize when to use relational databases vs NoSQL

Enabling Learning Objectives (ELO's) enabling

  • Define and explain key database terminology: table, row, column, constraint, primary key, foreign key
  • Map Python class attributes and setters to database columns and constraints
  • Navigate psql and understand meta-commands for exploration and management
  • Perform CRUD operations in PostgreSQL
  • Analyze the differences between relational and non-relational database approaches
  • Practice creating, inserting, and querying tables both manually and from external data sources
  • Reason about data structure, validation, and retrieval in both application and database layers