I've been searching for a database means to fix allow user defined fields and values (permitting an limitless number). Initially, EAV appeared such as the right fit, but after a little reading through I don't know any longer.

Do you know the benefits and drawbacks of EAV?

Can there be an alternate database approach to allow user defined characteristics/fields and values?

This isn't that need considering an thorough answer, but simply a couple of points around the subject.

Since now you ask , also labeled using the [sql] tag, allow me to state that, generally, relational databases aren't particularly appropriate for storing data while using EAV model. You are able to still design an EAV model in SQL, but you'll have to sacrifice several benefits that the relational database gives. Not just you will not have the ability to enforce referential integrity, use SQL data types for values and enforce mandatory characteristics, but the very fundamental queries may become hard to write. Actually, to beat this limitation, several EAV solutions depend on data duplication, rather than joining with related tables, which understandably, has lots of disadvantages.

Should you really need a schemaless design, "permitting an limitless quantity of characteristics", your best choice is most likely to utilize a NoSQL solution. Despite the fact that the weak points of EAV in accordance with relational databases also affect NoSQL options, you'll be offered capabilities which are hard to achieve with conventional SQL databases. For instance, usually NoSQL datastores could be scaly much simpler than relational databases, since they specified for to resolve some kind of scalability problem, plus they deliberately dropped features which make scaling difficult.

Many cloud computing platforms (for example individuals provided by Amazon . com, Google and Microsoft) are featuring datastores in line with the EAV model, where a random quantity of characteristics could be connected having a given entity. If you're thinking about implementing the application towards the cloud, you might think about this both like a business advantage, in addition to a technical one, since the strong competition between your large suppliers is pushing the worthiness-to-cost ratios to high levels, by constantly pushing on the characteristics and pushing lower the financial and implementation costs.

Can there be an alternate database approach to allow user defined characteristics/fields and values?

One alternative would be to alter the database schema according to user input: for instance once the user wants a brand new area, adding a corresponding column towards the database.