Full relational database design for a streaming platform, built with Oracle SQL/PL-SQL. Covers the complete data lifecycle: schema modeling, constraints, triggers, views, and automated data generation.
Academic project — Database Systems module, L3 Computer Science @ UVSQ
- Relational schema with 10+ tables (users, subscriptions, movies, series, episodes, actors, directors, characters)
- Integrity constraints: CHECK, FOREIGN KEY, UNIQUE, NOT NULL
- PL/SQL triggers for business logic (subscription management, age restrictions, content validation)
- Views for reporting (most popular content, user activity, subscription stats)
- Python script for realistic test data generation (Faker)
- SQL*Loader configuration for bulk data import
USERS ──→ SUBSCRIPTIONS (Basique / Premium)
│
├──→ VIEWINGS (watch history with timestamps)
├──→ DOWNLOADS
└──→ LIKES
CONTENT ──→ MOVIES ──→ DIRECTORS
└→ SERIES ──→ SEASONS ──→ EPISODES
ACTORS ──→ CHARACTERS (many-to-many with content)
| Component | Technology |
|---|---|
| Database | Oracle Database |
| Procedural | PL/SQL (triggers, procedures) |
| Data generation | Python (Faker library) |
| Bulk loading | SQL*Loader |
Plateforme-Streaming-DB-Oracle/
├── sql/ # All SQL scripts
│ ├── create_tables.sql
│ ├── constraints.sql
│ ├── triggers.sql
│ └── views.sql
├── docs/ # Documentation and diagrams
├── generation_donnee.py # Python data generator
├── LICENSE
└── README.md
git clone https://github.com/AmZzPYJS/Plateforme-Streaming-DB-Oracle.git- Run the SQL scripts in order: tables → constraints → triggers → views
- Generate test data:
python generation_donnee.py - Load data into Oracle using SQL*Loader or manual INSERT
- Designing a normalized relational schema (3NF) from business requirements
- Writing PL/SQL triggers to enforce complex business rules (subscription limits, age verification)
- Creating efficient views for analytics and reporting
- Automating realistic test data generation with Python
- Using SQL*Loader for bulk data import into Oracle
MIT