У нас есть веб-приложение, поддерживаемое базой данных MySQL.
Одна часть системы, которую мы кодируем, требует, чтобы мы сохраняли посещаемость (т. Е. Да / нет) сеансов для пользователей в течение каждого дня недели. Например, нам нужно хранить с понедельника по пятницу, а затем для каждого дня, утра, обеда, дня, вечерних сессий и т. Д. По сути, это массив с 2 димками.
Мне было интересно, как лучше всего хранить это в базе данных?
В настоящий момент, человек, работающий над этим, склоняется к тому, чтобы сохранять это как одно целое для каждого дня, где 1 представляет посещаемость, а 0 - не посещает. Я думаю, что значит использовать битовую маску (например, 13 для 1101, поэтому каждый сеанс кроме полудня). Они просто хранят его как «0» и «1» по какой-то странной причине.
Я подумал, что может быть проще сохранить его в виде списка bools (бит / крошечные), например monday_morning, monday_lunch, monday_affter и т. д., поскольку это семантически более «правильно» (я думаю?), вероятно, его будет легче расширять / поддерживать, и я также, кажется, единственный в команде, кто знает, как делать битовые операции ... LOL.
Другой способ, которым я думал, это просто иметь таблицу 1: 1 для каждого пользователя со списком всех случаев, когда он посещает, например, . Эффективность этого подхода? (Не уверен, что за шаблоны чтения / записи, но я предполагаю довольно равномерное распространение операций чтения / изменения).
Какие рекомендации по этому поводу? Или есть лучшие способы хранения этих данных?
Кроме того, как примечание, это, вероятно, будет логическим - было бы сомнительно, что нам нужно будет хранить больше состояний, чем посещение / не посещение в таблице, и если мы это сделаем, мы готовы повторно работать по схеме. Или люди настоятельно рекомендуют делать ставку на биты за биты?
Ура,
Victor