Relational database design: model data that stays correct

Turn requirements into entities and relationships, normalise sensibly, choose keys and constraints, and evolve schemas without downtime

7 ratings 1,890 students Sample

Created by Irina Sokolova

  • Updated September 2026
  • English
  • Intermediate

What you will learn

  • Translate requirements into entities, attributes and relationships
  • Draw entity relationship diagrams with correct cardinality
  • Normalise tables to third normal form and explain each step
  • Denormalise deliberately with a clear reason and safeguards
  • Choose keys and constraints that enforce business rules
  • Apply patterns for hierarchies, history, money and multi tenancy
  • Plan schema migrations that avoid downtime

Course content

6 sections, 25 lessons, 3h 44m total

Thinking in entities and relationships 5 lessons · 44 min
  • Video: Why database design matters Preview 8 min
  • Article: Entities, attributes and relationships Preview 10 min
  • Article: Drawing an entity relationship diagram 10 min
  • Article: Cardinality and optionality 11 min
  • Quiz: Check your understanding 5 min
Normalisation in practice 4 lessons · 37 min
  • Article: Why normalise 8 min
  • Article: First normal form 9 min
  • Article: Second and third normal form 11 min
  • Article: Denormalising deliberately 9 min
Keys and constraints 4 lessons · 36 min
  • Article: Natural and surrogate keys 9 min
  • Article: Composite keys 8 min
  • Article: Constraints as living documentation 10 min
  • Article: Deleting, archiving and soft deletes 9 min
Patterns for real applications 6 lessons · 55 min
  • Article: Many to many with attributes 8 min
  • Article: Hierarchies and trees 10 min
  • Article: Polymorphic relationships and alternatives 9 min
  • Article: Modelling history and time 11 min
  • Article: Money, currency and units 8 min
  • Article: Multi tenant data 9 min
Evolving schemas safely 3 lessons · 27 min
  • Article: Migrations as code 9 min
  • Article: Zero downtime changes 11 min
  • Article: Naming conventions 7 min
Reviewing designs 3 lessons · 25 min
  • Article: A schema review checklist 8 min
  • Article: Case study critique 11 min
  • Quiz: Final check 6 min

Requirements

  • Comfortable with basic SQL: CREATE TABLE, SELECT and joins
  • Access to PostgreSQL or another relational database

Description

A database schema outlives most of the code written against it. Good design makes features easy to build and data easy to trust. Poor design leads to duplicated data, contradictory records and painful migrations years later. This course teaches the thinking behind solid relational design, with practical patterns for situations real applications face.

What you will learn

  • Turning requirements into entities, attributes and relationships
  • Drawing clear entity relationship diagrams
  • Cardinality and optionality, and how they become keys and constraints
  • Normalisation to third normal form, explained with practical examples
  • When and how to denormalise deliberately
  • Choosing natural or surrogate keys, and using constraints as documentation
  • Patterns for many to many relationships, hierarchies, history, money and multi tenant data
  • Evolving schemas safely with migrations and zero downtime changes

Case study

We design the database for a clinic booking platform: clinics, practitioners, services, patients, appointments, payments and reviews. Requirements arrive in stages, as they do in real projects, so you practise adapting a design without breaking it.

Tools

Examples use PostgreSQL syntax, but the design principles apply to any relational database, including MySQL, SQL Server and SQLite. For diagrams you can use any tool; free options such as dbdiagram.io or draw.io work well.

Who it is for

Developers who can write SQL and want to design schemas with confidence, technical leads reviewing data models and analysts who build their own databases. You should be comfortable with basic SQL, including creating tables and writing joins.

Who this course is for

  • Developers who design or change database schemas
  • Tech leads who review data models
  • Analysts building their own databases

Instructor

Irina Sokolova

Database engineer teaching PostgreSQL, data modelling and query performance

  • 4.3 instructor rating
  • 21 reviews
  • 6,990 students
  • 3 courses
  • Sample

I work as a database engineer, mostly with PostgreSQL. My job covers schema design, migrations, indexing, query tuning, backups and helping application developers understand why their queries are slow.

I teach databases as a practical engineering skill. We model real domains, write SQL by hand, read EXPLAIN output together and break things on purpose so you can see how constraints and transactions protect your data. I explain the theory, such as normal forms and isolation levels, only as far as it changes what you do.

All examples run on a local PostgreSQL install or a Docker container, and every course includes the scripts so you can reproduce each step.

View profile

Student reviews

4.3 7 ratings
5 star 43%
4 star 43%
3 star 14%
2 star 0%
1 star 0%
Leila M. Sep 20, 2026
Sample

The review checklist is excellent

We added it to our pull request template. Schema reviews are faster and catch more problems.

Thomas R. Sep 6, 2026
Sample

Changed how I approach schemas

Writing relationships as sentences and finding hidden entities saved our team from a bad design last month.

Amara O. Jul 23, 2026
Sample

Normalisation explained clearly

I had memorised normal forms for an exam without understanding them. The messy spreadsheet example made it click.

Ikenna J. Jun 20, 2026
Sample

Clinic case study works well

Requirements arriving in stages felt like a real project, and showed how good designs adapt.

Felipe D. May 21, 2026
Sample

Great patterns section

History tables and multi tenant options were exactly what I needed. Would love even more on reporting schemas.

Yuna K. Apr 3, 2026
Sample

Practical zero downtime advice

Expand and contract is now how we ship every column change. The lock warnings were very useful.

Gareth W. Feb 5, 2026
Sample

Heavy on PostgreSQL specifics

Principles are general, but some solutions rely on PostgreSQL features. Fine for us, less so for MySQL users.

$54.99 Enroll now
SampleSample catalog: the instructors, courses, reviews and stats on this site are demo content.