I wish to develop a system where an admin can make forms using the program and customers enter data to individuals forms. Also, admins should have the ability to enter any area names for their forms, even selectable multiple choice questions. Perfect solution I'm able to develop is developing a huge text block for each form type produced and storing form fields, names, options, etc serializing them from an assortment or object. I'd keep your customers solutions in serialized arrays in another text block, setting each with their positions in arrays.

It is possible to better method for this issue?

An EAV data model may fit your reasons here. Just remember that you'll purchase the versatility with a few disadvantages, for example insufficient referential integrity and lengthy queries to retrieve data (every attribute you need to return requires another JOIN).

You will find many methods for you to continue this. Since you are using a relational database, one choice is to check out the Entity-Attribute-Value model. Essentially, this method switches your computer data structure from the predefined schema (posts) into rows. You will find many disadvantages for this versatility, and also you frequently finish up building a lot of sights to provide a number of this "rotated" data as a classical table.

Some relational databases provide noSQL-type features, so you may take action lower that road. PostgreSQL, for instance, has got the hstore type, which enables you to definitely store teams of key-value pairs in one value. I recognize you did not mention PostgreSQL inside your question, but so you are conscious of what's available, they are also focusing on a local JSON datatype and performance suite for 9.2. Coupled with functional indexes, this might provide some interesting relational/noSQL hybrid options without something similar to Redis or MongoDB.

Would you produce a table within the database known as something similar to "Fields"? Each area includes a type and text. Then in addition have a table known as options, which consists of different a text area for that options in addition to a fk pointing to the "fields" table. There may be an application table that the fields table comes with an fk to. Within the code for that application you might then consider a area and see if you want to fetch a choice. This can be a relational database approach. A few of the object databases like Mongo may handle that much better.

In summary:

Table: Form Column: Form_ID PK

Table: Area Column: Area_ID PK Column: Text Column: Type Column: Form_ID (FK)

Table: Options Column: Option_ID Column: Text Column: Area_ID (FK)