Skip to main content
added 711 characters in body
Source Link
Doc Brown
  • 220.3k
  • 35
  • 410
  • 623

IMHO you already laid out all the pros and cons correctly, so there is not much left here we can do for you here.

I would recommend to go with "fixed properties" as far as you can go, and use dynamic ones only as a last resort, in areas where customers themselves want to configure the availability of certain properties, and where you don't expect any business logic more complex than displaying those properties to the user, or printing them on some report. Otherwise you will run into the issues you identified already.

Of course, when you know your customers manage a certain list of similar assets which all have a name, a vendor, a price, a coordinate or shape on a map, but no more specific business requirements, it may be feasible to make the list of asset types extendable by the customer. Still I would be very careful with this approach, because extra assets for which the customer today has no specific requirement can turn into ones with special business requirements tomorrow.

Note even with the "fixed properties" approach, your system can be made configurable in many ways, for example

  • configurability of certain labels for fixed properties, or

  • the visibility of properties which belong to a common topic (together with certain features which belong to this topic)

These kind of configurations are typically on a much coarser granularity than the configurability on the level of individual attributes ("EAV" model). In the systems I have built in the past, configurability without "dynamic properties" was almost everywhere sufficient and manageable.

Don't forget, when you add an EAV model to a system, you need some power users or experts for maintaining the complex configurations, and if you don't have an organization around this, don't expect your customer to have it. With EAV models, you risk to run sooner or later into the well-known Inner-platform effect. The situation may be different of you are one of the big ERP vendors, having specific staff only responsible for configuring their systems individually (and selling this as an extra service, often much more expensive than the core platform itself).

As for resources: questions for 3rd party resources are off-topic here, but FWIW, I would recommend Fowler's book "Analysis Patterns", which presents a lot of ideas how to model systems with the right amount of flexibility. You find many excerpt's from the book on Fowler's website here.

IMHO you already laid out all the pros and cons correctly, so there is not much left here we can do for you here.

I would recommend to go with "fixed properties" as far as you can go, and use dynamic ones only as a last resort, in areas where customers themselves want to configure the availability of certain properties, and where you don't expect any business logic more complex than displaying those properties to the user, or printing them on some report. Otherwise you will run into the issues you identified already.

Note even with the "fixed properties" approach, your system can be made configurable in many ways, for example

  • configurability of certain labels for fixed properties, or

  • the visibility of properties which belong to a common topic (together with certain features which belong to this topic)

These kind of configurations are typically on a much coarser granularity than the configurability on the level of individual attributes ("EAV" model). In the systems I have built in the past, configurability without "dynamic properties" was almost everywhere sufficient and manageable.

Don't forget, when you add an EAV model to a system, you need some power users or experts for maintaining the complex configurations, and if you don't have an organization around this, don't expect your customer to have it. With EAV models, you risk to run sooner or later into the well-known Inner-platform effect.

As for resources: questions for 3rd party resources are off-topic here, but FWIW, I would recommend Fowler's book "Analysis Patterns", which presents a lot of ideas how to model systems with the right amount of flexibility. You find many excerpt's from the book on Fowler's website here.

IMHO you already laid out all the pros and cons correctly, so there is not much left here we can do for you here.

I would recommend to go with "fixed properties" as far as you can go, and use dynamic ones only as a last resort, in areas where customers themselves want to configure the availability of certain properties, and where you don't expect any business logic more complex than displaying those properties to the user, or printing them on some report. Otherwise you will run into the issues you identified already.

Of course, when you know your customers manage a certain list of similar assets which all have a name, a vendor, a price, a coordinate or shape on a map, but no more specific business requirements, it may be feasible to make the list of asset types extendable by the customer. Still I would be very careful with this approach, because extra assets for which the customer today has no specific requirement can turn into ones with special business requirements tomorrow.

Note even with the "fixed properties" approach, your system can be made configurable in many ways, for example

  • configurability of certain labels for fixed properties, or

  • the visibility of properties which belong to a common topic (together with certain features which belong to this topic)

These kind of configurations are typically on a much coarser granularity than the configurability on the level of individual attributes ("EAV" model). In the systems I have built in the past, configurability without "dynamic properties" was almost everywhere sufficient and manageable.

Don't forget, when you add an EAV model to a system, you need some power users or experts for maintaining the complex configurations, and if you don't have an organization around this, don't expect your customer to have it. With EAV models, you risk to run sooner or later into the well-known Inner-platform effect. The situation may be different of you are one of the big ERP vendors, having specific staff only responsible for configuring their systems individually (and selling this as an extra service, often much more expensive than the core platform itself).

As for resources: questions for 3rd party resources are off-topic here, but FWIW, I would recommend Fowler's book "Analysis Patterns", which presents a lot of ideas how to model systems with the right amount of flexibility. You find many excerpt's from the book on Fowler's website here.

Source Link
Doc Brown
  • 220.3k
  • 35
  • 410
  • 623

IMHO you already laid out all the pros and cons correctly, so there is not much left here we can do for you here.

I would recommend to go with "fixed properties" as far as you can go, and use dynamic ones only as a last resort, in areas where customers themselves want to configure the availability of certain properties, and where you don't expect any business logic more complex than displaying those properties to the user, or printing them on some report. Otherwise you will run into the issues you identified already.

Note even with the "fixed properties" approach, your system can be made configurable in many ways, for example

  • configurability of certain labels for fixed properties, or

  • the visibility of properties which belong to a common topic (together with certain features which belong to this topic)

These kind of configurations are typically on a much coarser granularity than the configurability on the level of individual attributes ("EAV" model). In the systems I have built in the past, configurability without "dynamic properties" was almost everywhere sufficient and manageable.

Don't forget, when you add an EAV model to a system, you need some power users or experts for maintaining the complex configurations, and if you don't have an organization around this, don't expect your customer to have it. With EAV models, you risk to run sooner or later into the well-known Inner-platform effect.

As for resources: questions for 3rd party resources are off-topic here, but FWIW, I would recommend Fowler's book "Analysis Patterns", which presents a lot of ideas how to model systems with the right amount of flexibility. You find many excerpt's from the book on Fowler's website here.