Есть Таблица Course
Необходимо разделять курс на части(frames)
А уже в частях может находиться разный контент
Вот пример Курс
Имя курса: Как выучить php за час?
Он разделен к примеру на 2 части
1 часть знакомство с синтаксисом
К примеру тут есть 2 урока,которые содержат тип video
после есть еще текст какой то(3 урок)
ну и 4 урок это к примеру тест
2 часть работа с базой данных
тут к примеру 5 урок(видео в каждом)
потом идёт 6 урок к примеру тест
а в 7 уроке к примеру статья и картинки
Как это грамотно все спроектировать?
В вашем случае нужно сделать разные модели для каждого типа теста, а для каждой модели теста - своя таблица.
Структура:
1) курсы (поля: id, название)
2) части курсов (поля: id, id_курса, название)
3) курс (поля: id, id_части, тип)
а уже определившись в запросе, какой у урока тип - вызывать контроллер данного урока. А контроллер уже пусть хоть какую модель использует - хоть с картинками, хоть с видео, хоть с кукурузными палочками.