Прежде всего, если столбец содержит одинаковые данные, он должен иметь то же имя:
Themes (theme_id, name);
Groups (group_id, name, theme_id);
Затем, когда вы создаете JOIN, вы можете написать его как
SELECT
Themes.name AS theme,
Groups.name AS group
FROM Themes
LEFT JOIN Groups USING theme_id
Как для вас оригинальный вопрос:
Я бы пошел с классами:
- Учитель - это будет ваша модель MVC
- Слово - используется моделью, содержит ежедневное слово и дополнительную информацию о нем
- WordMapper - отвечает за хранение и извлечение экземпляров класса Word
В основном, эта установка будет реализовывать шаблон DataMapper .
Нет смысла создавать класс для каждой таблицы, потому что дополнительные таблицы содержат только информацию о словах. Чтобы это не было так.
Хотя я не совсем уверен, нужно ли вам создавать сложное приложение, просто для того, чтобы делать обычные вещи ... может быть, только как упражнение.