Saturday 15 January 2011

c# - If EAV is evil, what to use for dynamic values? -


I need to create a database where there will be dynamic fields in the account group table, so that Accounts can enter dynamic field values ​​when necessary, this is probably not important, but I am using EF and Linux with C #.

This is difficult for me because I have never done such a thing and since I did my research, everyone says that the EAV system is terrible and you should design it differently < / Em>, the problem is that no one later says - how?

Then you can help me and tell me how can I apply something like this without doing EAV?

This is what I've done so far.

Enter image details here <> The problem with thumb rules is that they "This is usually a bad idea from

X " " Never X ".

EAV Usually is a bad idea because it defeats this objective in a number of ways, it is a relational schema and has created many features and advantages of relational DBMS and made on RDBMS Other technologies such as the Entity Framework, such as ARM, can be overcome.

See howe, there are some design problems for which RDBMS is not a great fit, there are some such things that are such a bad fit that a whole new technique can be invented (for example, like Nosakul DB like Mozhedibi).

There are times when EAV is probably left out of one set. If you do not (know) if your schema is before hand, then EAV is your best choice. This is particularly true if your schema becomes insignificant, for example, consider an online product catalog where you have a large list of products, each of which has a number of features Land you before what features which can not predict the end, the only thing you with product features, to dump them in any way "feature: Value" list. This is a situation where the schema is not particularly powerful, so defeating it with EAV is not particularly harmful.

The most important thing is to understand what your design options are doing for your abilities and operations. All design business is closed, the issue is that intentionally making their trade-off. Rather than "EVE Evil" instead, think instead: "EAV is a loaded gun, make sure you know whose point you're pointing towards."

No comments:

Post a Comment