Millerish
@Millerish

Как правильно построить таблицу MySQL?

Доброе время суток!

Я пишу маленький сервис для школы(React+PHP+MySQL). Мне нужно будет хранить расписание для каждого класса. Количество классов неизвестно. Хочется максимально простую структуру.

Пока самый простой варит который пришел в голову такой:

  • id - индекс
  • Название класса - текст
  • Понедельник - текст - тут через запятую все уроки
  • Вторник - текст - тут через запятую все уроки
  • Среда - текст - тут через запятую все уроки
  • Четверг - текст - тут через запятую все уроки
  • Пятница - текст - тут через запятую все уроки
  • Суббота - текст - тут через запятую все уроки
  • Воскресенье - текст - тут через запятую все уроки


Плюс такого варианта в том, что структура выходит очень простая и гибка, минус в дополнительной операции по разбору строки для получения уроков.

Как бы организовали такую базу?
  • Вопрос задан
  • 537 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
классы (id, номер)
предметы (id, название)
преподаватели (id, фио)
расписание (id_класса, id_предмета, id_преподавателя, день_недели, номер_урока)
корректировки (id_класса, id_предмета, id_преподавателя, дата, номер_урока)
Ответ написан
Комментировать
alex-1917
@alex-1917
Если ответ помог, отметь решением
Учитывая три фактора:
1. Ваше заявление о том что приложение планируется маленькое
2. Такое приложение будет действительно маленьким, вы навряд ли делаете его для школы №63 в Тюмени, где в этом году набрали 26 классов, даже 1-я!))
3. Дней недели действительно всего семь, их не будет меньше, их не будет больше, считаю глупостью заводить таблицу для дней недели, тогда уж лучше создать для этого поле типа ENUM.
ТАКИ: таблица может остаться плоской и это факт.

Все остальные доводы против - вы не научитесь делать джойны и запросы к нескольким таблицам за один присест, вас не будет заботить возможность ускорения запроса через отдачу части расчетов php-интерпретатору и т.д.
Выбирайте сами)))
59ef5ec0c672e680241036.jpeg
Ответ написан
Комментировать
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
А какие-то выборки предполагается делать? Можно ж вообще упростить.
Два поля, класс и расписание. Расписание - хранить в json-представлении, что-то вроде:
{
  "понедельник": {
                "0": "",
                "1": "Алгебра",
                "2": "Геометрия"
  },
  "вторник": {
  ...
  },
  ...
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы