I am designing/building an educational system for a non-profit organisation. My query is regarding the database design of my website/webapp. What is the most efficient way of organising/storing all of the required information listed below?I have quite a few options to accomplish the goals detailed below, but I wanted to opinion of the brilliant people here on stack overflow before actually starting the project.This project will present Courses & Lessons in a guided way. Each page (of a lesson) presented to the user will contain about a paragraph or so of text. (Although technically there should be no limit to the amount of text displayed per page) After the user has read the page he/she would click next. The user would then be presented with one or two questions about the previous page (again the amount of questions should not be set in stone) which the user would then procede to answer.After answering the questions, the user would then advance to the next page, and the process would repeat until the end of the lesson, where they would be directed to the next lesson in the course.Any & all suggestions are appreciated!Here are the basic requirements/needs of my project:
- Multiple Courses each with Multiple lessons.
- Users should only be able to progress to the next page/lesson/course after the previous page/lesson/course had been completed/read.
- The paragraphs should be stored in such a way that a breadcrumb address could be easily generated (i.e. Course_name > Lesson_name > Section_name > Paragraph_subject)
- The paragraphs should also be stored so that their order inside of the lesson could easily be changed
- The users progress should be recorded in a way that would allow changes/additions to the lessons/courses without interfering with the users who have already completed said course/lesson.
- Each paragraph will have an audio clip (mp3) associated with it and an optional flash/html5 player will be generated on the page for the visually impaired.
- A glossary will need to be implemented. Links will most likely be inserted automatically into the paragraph by a parser when being saved by the course author.
- Entire system will be written in PHP/MYSQL with the fuelphp framework.
- Database queries will use the frameworks orm model when possible.
- A fuelphp package is availible for working with a nested sets hierarchical model. (fuel-nestedsets) I have used this package before and it works brilliantly to store unlimited depth of nodes in order with NO recursion.