Hier wie von @fkleedorfer angeregt ein einfaches ER-Diagramm des Datenmodells. Es spiegelt ungefähr wider, wie ich den aktuellen Diskussionsstand in Software umsetzen würde. Es sind allerdings nur die ganz grundlegenden Beziehungen und Attribute angegeben. Es geht um das Verständnis der Struktur, nicht um die Details.
Und hier der Quelltext dazu:
[Need]
*id
title
description
+creating_user_id
+satisfying_activity_id
[User]
*id
username
reputation
[ActivityPattern]
*id
title
description
effort
+result_means_pattern_id
[MeansPattern]
*id
+knowledge_term_id
amount
[DemandPattern]
*id
+activity_pattern_id
+means_pattern_id
[KnowledgeTerm]
*id
[Activity]
*id
+activity_pattern_id
+result_means_id
relevance
[Means]
*id
+means_pattern_id
[Demand]
*id
+demand_pattern_id
+activity_id
+means_id
Need *--1 User
Need *--* ActivityPattern
ActivityPattern *--? MeansPattern
DemandPattern *--1 ActivityPattern
DemandPattern *--1 MeansPattern
MeansPattern *--1 KnowledgeTerm
Activity *--1 ActivityPattern
Need ?--? Activity
Means ?--1 MeansPattern
Activity *--? Means
Demand *--1 DemandPattern
Demand *--1 Activity
Demand *--? Means
User *--* Activity