Relationship properties

This might be a big ask, but would it be possible to add properties to relationships as well as entities (like is possible with a graph database)?
I realise that the more sophisticated you make the underlying platform, the greater the risk of users being scared away by the complexity, but for me, it would put you into a whole different league.
It could be a feature that can be enabled but is disabled by default so as to not scare non-techies…

1 Like

Chris, intriguing. As a non-techie, could you provide some hard example of how this would work? I am all for being able to slice and dice data as much as possible in Fibery, which is already packed with opportunity to do so at this early stage!

Thanks!

Hi B_Sp,
Well, I’m not sure if you’re asking for examples of how I would use it, or my suggestion for how it could be implemented in Fibery, so I’ll tell you both :slight_smile:

Example: If I want to have a bill of materials, one way of doing it might be to define an entity type (‘Part’) and create a one-to-many relationship to itself (with the names ‘Consists of’/‘Used in’) and where this relationship has a property ‘quantity’.
So…
Part A - Consists of (Qty:2) - Part B
Part A - Consists of (Qty:1) - Part C
Part B - Consists of (Qty:100) - Part D
Part B - Consists of (Qty:2) - Part E

Of course, with this information, there’s loads of things you can achieve, like working out cost of goods. If each Part has it’s own direct cost, then the cost of any sub-assembly can be calculated using a (recursive) formula like 'TotalCost = Part.Cost + sum(ConsistsOf.Quantity x ConsistsOf.TotalCost)

[Note: this is not supposed to be correct Fibery formula syntax!]

The only way I have found of currently achieving this (and other similar examples) is to create an intermediate entity type that acts as a bridging entity, with the properties I need to include.

In terms of how it could actually be done in Fibery, I was thinking that it would just be a series of properties that are defined when the relationship is created (and ideally be reconfigurable later, although I realise that may add complexity - I note that the relationship type can’t currently be changed after creation).

Hope that makes sense, and any thoughts/comments welcome.

Hey Chris, that’s a great write-up, thanks! I am in Fibery due primarily to the powerful relations, so I could easily see Michael & co working on this down the road. Good to have this request up here!

I’ve actually come across this need again.

This time, it relates to using Fibery to track production processes. I want to be able to define a process step type (corresponding to a single step in the overall production process). Most process steps consume raw materials and produce output. Since I have a type representing materials/components/parts/sub-assemblies etc. I can link a process step to the materials/components consumed and the part/sub-assembly being produced. but it would be ideal if the relationship had an amount property, so for example, the process step ‘plastic moulding’ is related to:

  • the raw material ‘ABS plastic’ with the value -20, representing consumption (in grams or whatever is the base unit defined for ABS)
  • the plastic part ‘widget’ with the value +1, representing production (of a single unit of widget)

The nice thing is that from this setup, I can further define a type which is ‘process step occurrence’ representing a record of that process step being carried out (with a date field, and maybe an operator field, or a company field) and I can use formulas/charts to maintain/calculate a historical record of consumption/production + net stock levels :slight_smile:

…and while browsing these forums, I came across this:

I think there is a genuine need here, but maybe a lot of use cases can be solved with a few basic properties (text, number, single-/multi-select, date, checkbox) without needing all the more sophisticated fields types that an entity supports (relations, formulas, extensions, etc.)
That would definitely keep me happy!

I know michael said,

so I’m keeping my fingers crossed :slight_smile: