Here's an example that dates back to my own University days - it was used both as a database design challenge and as an Object Oriented design challenge.
Not all information was revealed at once - part of the challenge was to see how to adapt a design to handle new requirements, and how proper normalisation made this easier.
Assume you have to design a database for a university/college situation and want to handle enrollments.
You have the Courses taught. Each course has a title and a regular timeslot each week.
Each Course has a Lecturer who presents the course.
Each Course has many Students who study the course.
Each Course has one or more Tutors who help students with their study. You don't need to track which tutors help which students.
Some courses have multiple regular timeslots.
Some courses have multiple Lecturers.
Lecturers and Tutors are paid, which means we need to track some information for tax purposes. The Tax department doesn't care what they were paid for - they expect us to have a single record per person.
On some courses, the Lecturer works as a Tutor as well, to get a close up view of how some students are handling the material.
Some Tutors are also Lecturers, on other courses.
To be a Tutor on a course, you have to have been a Student on that course at an earlier time.
Not every student will receive credit for passing the course - some are just auditing the course without a need for credit.
A student who fails a course may attend the course again later on. We need to keep records of every attempt.