Hi!
Currently i'm working on a project which requires me to work with semi-structured data in dataverse and a model driven app. This means that i have a table with say for example "vehicles", and in this table you can have bikes, cars, unicycles etc. Depending on this type, you'll have different vehicle properties. For example, a car will have properties that are related to engine/power values, while a bike may have a boolean whether or not it contains a luggage carrier.
I'm struggling with finding a best practice method to handle this:
- Create a different table, fields, forms and views per vehicle type, basically splitting up the vehicles table to cater to every type. basically have the user choose the type for every vehicle first before doing anything
- Create one big table with all the possible properties and have the form dynamically show hide the needed properties depending on vehicle type.
- Create some properties table with a relation to the vehicles table that will contain vehicle properties as rows.
Each of these have pro's and cons;
- Cumbersome for the user to work with and when doing integrations you'll have to be constantly splitting and merging tables. Also if a new vehicle type is introduced, new tables/views/forms will need to be created.
- Easier for the user since all in one place, but can grow pretty heavy on performance and maintenance if you have a lot of properties and vehicle types.
- Most logical from a normalization standpoint, however you wont be able to really guide the user as you wont be able to make use of specific field types depending on the property, so every property value would become string based thing, while in some cases an option set would be needed.
- I know that Dynamics Sales has a product catalog data model but the client does not have Dynamics Sales to make use of this.
Am i missing some option here, or is there a specific best practice approach to take here?
Thanks!