Greetings,

I've got a form so it has almost 150 checkbox, but they're not in one location, the shape is split into divisions and every division has blocks, the checkboxes they fit during these blocks based on their group and you'll discover four checkbox within this place and eight in other and 30 in certain other and thus continue.
And So I designed a two table’s someone to keep groups along with other to keep checkboxes and also to which group they fit in with.

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       |
    ------------------------------------------------

I've two methods to store their values:
The first keep checkbox values as concatenated string of the secrets and place it straight to the designated table, eg:

UserProperties
    ----------------------------------------
    |  ID  |  Customer  |  PropertiesType  | 
    ----------------------------------------
    |   1  |    Cat     |     home,farm    |
    ----------------------------------------

pros:Very simple to apply and all sorts of I want is simply to include a column and you're simply all set to go, and theoretically it's faster
cons: Will forfeit db degree of data integrity and it'll rely on the applying level (I believe I'm able to live that)

The 2nd way I create tables for every block, eg:

UserProperties
    ---------------------
    |  ID  |  Customer  |
    ---------------------
    |   1  |    Cat     |
    ---------------------

UserPropertiesTypes
    --------------------------------------
    |  ID  |  CustomerId  |  CheckBoxId  | 
    --------------------------------------
    |   1  |       1      |       1      |
    --------------------------------------
    |   1  |       1      |       2      |
    --------------------------------------

pros: I view it because the professional way and can insure the information integrity at db level
cons: I have to create table for every part which has checkbox group the industry headache in development specifically for those who have many groups within the form.

I did not consider bitwise because I will need to produce a column for every checkbox and that i see it's not efficient for large groups who'll convey more than 30 checkbox. and so i preferred to create a way that'll be implemented within the application

For those who have any suggestions or better method of doing it you shouldn't hesitate to inform. Thanks greatly