Skip to main content

Overview

This document describes the entity-relationship diagram (ERD) and data models for the Learnille platform.

Database Schema

Core Entities

User Management

Course Management

Enrollment and Progress

Consultation System

Payment System

Reviews and Ratings

Entity Relationship Diagram

Key Relationships

One-to-One Relationships

  • User → User Profile
  • Payment → Invoice

One-to-Many Relationships

  • User → Courses (as instructor)
  • User → Enrollments
  • User → Reviews
  • User → Payments
  • User → Payment Methods
  • Course → Course Sections
  • Course Section → Course Lessons
  • Course → Reviews
  • Enrollment → Lesson Progress
  • Consultation → Consultation Bookings

Many-to-Many Relationships

  • Users ↔ Courses (through Enrollments)
  • Users ↔ Consultations (through Bookings)

Indexes

Data Constraints

  • Email uniqueness across users
  • Course slug uniqueness
  • Enrollment uniqueness per user-course pair
  • Rating values between 1-5
  • Positive price values
  • Future dates for scheduled consultations
  • Non-negative progress percentages

Data Migration Strategy

  1. Initial Schema: Create all tables with basic structure
  2. Seed Data: Populate reference data (categories, consultation types)
  3. Data Migration: Migrate existing data if applicable
  4. Index Creation: Add performance indexes after data loading
  5. Constraint Addition: Add foreign key constraints after data validation

Backup and Recovery

  • Daily automated backups of PostgreSQL database
  • Point-in-time recovery capability
  • Cross-region backup replication
  • Regular backup testing and validation