In Zoho CRM, it's relatively easy to set up a one to one or one to many relationship using lookup fields. E.g. Let's say you're configuring the CRM for a real estate firm and there's a one to one mapping between owners of a house (which we'll use the Contacts module for) and the property itself (which we'll set up in a custom module). Just add a lookup in the property module for Owner and hey presto, you have a one (owner) to many (properties) relationship.
But what about if it's many to many. For example, if instead of the people being the ones selling the house, we actually want to track interested buyers. We have a few options:
1. We could rename Products to Properties and use the inbuilt many to many feature in Leads which allows you to add unlimited products to a Lead. However, if you're not using the Products module, then this won't work. There's no way to set up the same functionality for custom modules or any module apart from Products.
2. We could add 50 separate fields to the property: "Buyer 1", "Buyer 2" but this is incredibly ugly and non-scalable.
3. Preferred option: use a linker module, e.g. "Expression of interest"
In our example, "Expression of interest" would have a lookup for "Potential Buyer" and "Property". As such, it would have a one (buyer/property) to many (expression of interest) relationship with the underlying modules and facilitate a many to many relationship between buyers and properties. Now you can have unlimited expressions of interest for a single property - many buyers can be interested in it and each buyer can be interested in multiple properties.
This is a flexible approach and one I've used in several client projects.