I'm focusing on a database model and one sector I have to address is really a client configurable record table(s). Ideally the customer might have some predefined check-lists which i could then enter as bit posts. Alas, once again to occur. The customer wants a chance to add and group check-lists so that they are multiple-use.

I possibly could opt for an EAV type model and employ strings for "true/false" but I have been lower this road before and prefer to require that journey again.

Any ideas or suggestions are welcome. Thanks.

"Client Configurable" more often than not means EAV. EAV's store data fine... it is simply obtaining the data out this is the trick.


Another... somewhat-less objectionable approach would be to make generic posts. Answer1 BIT, Answer2 BIT, Answer3...

Should you choose this, make a table in which you define the actual names from the posts to ensure that you can build the right view for just about any given checklist.

The first checklist is

  • Gas within the tank?
  • Profit the Wallet?

Then store

 CheckList_ID     Answer_Number     Column_Name
     1                 1              Tank has Gas
     1                 2              Wallet has Money.

Then your view could be:

 SELECT Answer1 "Tank has Gas", Answer2 "Wallet has Money"
  FROM Generic_Answer_Table
  WHERE CheckList_ID = 1

It apparent the way the view could be dynamically produced.

However when you include 10 posts they cannot convey more than 10 EVER.

XML may be the other possibility and does not suffer that problem... however it's less than as SQL friendly.

I am thinking XML is going to be the easiest method to provide them with the control they seek together with keeping the check boxes dynamic. Maybe an XML file per page/section that consists of all of the custom check boxes. What is good about XML is the fact that it's very easy to utilize and provides you excellent versatility. In the database level just save the creation of the check boxes as completed data, just just in case the check box source XML changes you still begin to see the initially selected values saved in the database level.