You can create these complex modules with the module builder. You can define 1 or more content types within one module with relations between them. You could also use the Guid field or the Array of Guid field to create 1-n or n-n relations.
Use Sitefinity Thunder to create selector fields to have some control on the relations from the UI.
You can use the export functionality to export the scheme or data to reuse the definitions you made in a new project.