Помогите правильно составить таблицу базы данных

SocMaster

Профессор
Регистрация
26 Июл 2011
Сообщения
211
Реакции
49
Есть вот такая форма
41d66-clip-27kb.png
(намного больше)
И возник вопрос. как лучше хранить данные в бд? всего 12 полей. чекбоксы можно комбинировать
не знаю, какой тип полей выбрать в бд, как лучше всего хранить данные
 
тип TINYINT(1)
И там хранить 1, 2, 3 и так далее

Например:
1 - Виден всем
2 - Только друзьям
3 - Только мне
 
для этого случая достаточно 4 полей, чекбоксы можно хранить в виде битовых масок типа 100 (можно привести к инту)
1 - всплывающие уведомления на сайте
0 - по электронной почте
0 - по смс

для приватности вообще достаточно минимального поля 0 - виден только мне, 1 - только друзьям, 2 - всем

почему 0, потому как народ всегда втыкает туда что-то писать, а если по дефолту ставить 0 - то больше вероятности, что при халявном программировании туда не попадёт настройка типа показать всем
 
Приватность это понятно, там только один вариант возможен. а вот чекбоксы
я уже написал, что там можно использовать 100 например

Для каждого чекбокса сделайте отдельную колонку, и будет Вам счастье
так тоже очень ок, правда полей может быть 100500
 
Да, полей будет слишком много. если для каждого чекбокса

А такой вид хранения плохой?
{"site":"1","email":"1","sms":"1"}
т.е например чекбоксы
personal_message[site]
personal_message[emaill]
personal_message[sms]
ну и поле в бд personal_message
 
Последнее редактирование модератором:
А такой вид хранения плохой?
{"site":"1","email":"1","sms":"1"}

Если тебе потребуется выдернуть только те объявления, которые имеют отмеченный чекбокс site и не отмеченный sms придётся юзать поиск по текстовому полю, что работает значительно медленнее проверки полей TINYINT или битовых масок или даже математических операций.

Если думаешь, что справишься - делай битовые маски - это наиболее производительный способ для высоконагруженных приложений, но может быть сложным в реализации, если не знаком с концепцией.
В противном случае делай 100500 полей по количеству чекбоксов и не парься, что их слишком много, придёт время отрефакторишь.
 
Назад
Сверху