CiviWiki/OpenCiviWiki

Reconsider design of Civi model relationships

brylie opened this issue · 0 comments

Idea summary

Currently, we are using a somewhat linear relationship between Civis, where problems have causes and causes have solutions. However, the relationships between problems, causes, and solutions are non-linear. For example, a solution to one problem might cause others (e.g., climate engineering solutions may cause widespread problems.). Likewise, a solution to one problem may also solve others.

Further details

Given the complexity of the problem, cause, and solution space, our data model should be a bit more flexible and resilient, allowing us to capture the nuance of human agency.

For example, we currently do or are discussing the following.

  • delete all solutions when deleting a cause (#1436)
  • impose a strict linear relationship of Problem -> Cause -> Solution (original description from #101)

This issue proposes we clarify the intended flexibility of the Civi data model. We should also consider how to implement a more graph-like structure where we can traverse Civis via links like "causes," "caused by," "fixes," etc., as described in #149

Some examples

  • Problem <- ´caused_by´ <- Cause <- ´fixed_by´ <- Solution <- ´caused_by <- Problem