Привет,
У меня есть форма, которая имеет почти 150 флажков, но они не находятся в одном месте, форма разделена на подразделения, и у каждого подразделения есть блоки, флажки ставятся в эти блоки в зависимости от их группы
где вы можете найти четыре флажка в этом месте и восемь в другом и 30 в другом и так далее.
Поэтому я создал две таблицы для хранения групп, а другую для хранения флажков и к какой группе они принадлежат.
FormBlocks
--------------------------
| ID | key |
--------------------------
| 1 | property_type |
| 2 | providors |
--------------------------
BlocksCheckBoxes
------------------------------------------------
| ID | Label | Key | FormBlockId |
------------------------------------------------
| 1 | Sweet Home | home | 1 |
| 2 | Farm | farm | 1 |
| 3 | Invst Bank | bank | 2 |
| 4 | Constructor | constr | 2 |
------------------------------------------------
У меня есть два подхода для хранения их значений:
Первый хранит значения флажков в виде объединенной строки их ключей и вставляет их непосредственно в назначенную таблицу, например:
UserProperties
----------------------------------------
| ID | Customer | PropertiesType |
----------------------------------------
| 1 | Cat | home,farm |
----------------------------------------
плюсы : очень легко реализовать, и все, что мне нужно, это просто добавить столбец, и вы готовы к работе, и теоретически это быстрее
cons : потеряет уровень целостности данных в БД, и это будет зависеть от уровня приложения (думаю, я смогу это пережить)
Второй способ создания таблиц для каждого блока, например:
UserProperties
---------------------
| ID | Customer |
---------------------
| 1 | Cat |
---------------------
UserPropertiesTypes
--------------------------------------
| ID | CustomerId | CheckBoxId |
--------------------------------------
| 1 | 1 | 1 |
--------------------------------------
| 1 | 1 | 2 |
--------------------------------------
профи : Я считаю это профессиональным подходом и обеспечу целостность данных на уровне БД.
cons : мне нужно создать таблицу для каждой части, у которой есть группа флажков, что является головной болью при разработке, особенно если у вас много групп в форме.
Я не учел побитовое, потому что мне придется создавать столбец для каждого флажка, и я вижу, что он неэффективен для больших групп, у которых будет более 30 флажков. поэтому я предпочел сделать способ, который будет реализован в приложении
Если у вас есть какие-либо предложения или лучший способ сделать это, пожалуйста, не стесняйтесь сообщить.
Большое спасибо