Yes, you are absolutely right. For instance a site I finished just a while ago had multiple vendors per quote, each quote having products from different vendors per line, each line with different vendors. Each quote was sent out built out of vendor pricing, depending on the quotes that came back. However, different vendors only supplied certain products, so choosing one quote from a vendor could mean that, given the overlap, different lines could have quotes rejected. So line 1 from vendor 1 and 2, if you decided on vendor 1, meant vendor 2's quote for line 3, say, was also rejected. Despite all the effort doing the multiple vendors for different lines for if they could be accepted or not etc etc in the end what does the customer actually do. One quote - one vendor. What a waste of good coding that was.
Am just glad I charged them a bloody fortune :-)
So for a CMS, you simply cannot cater for every eventuality. You just have to go with the 80:20 rule, 20% of your functionality will be used 80% of the time.
It would, in the case of a CMS, give you that added feature though of 'if you need it we can do it but it will cost you extra!'.
As another example, I built a company sales manager recently where a person could be linked to multiple companies, because that is what they said was 'essential'. Despite the headaches that caused (multiple relationships, multiple job titles, multiple contact details repeated for company and direct etc etc) how many of their records would you guess actually use multiple companies? So far, with over 3000 contacts added, absolutely none. yet despite me constantly explaining why it was unnecessary, they insisted it was an essential feature.
Any way, enough moaning by me about stupid customers, at least they paid for the burden :-)
Best wishes,
Paul