You're in the right direction and you do not over-complicate but this is a rather complex matter.
As I wrote previously the is a "Many to Many" relationship problem and, as far as I know, the only solution to it is the usage of an intermediate table, usually called a "junction table" (what I called "Associations") that creates the relationships among the different data tables. I probably over-did a little whith "the octopus" but the solution is in that way.
You should try to google for "many to many" and see if you can't find some texts explaining the subject better than I'm able to do. Try for instance:
SingingEels : Understanding SQL: Many to Many Relationships
Beginner's SQL: Many-to-many relationships - SQL and Databases - DMXzone.COM
Mitsu's blog : How to implement a many-to-many relationship using Linq to Sql ?
Database Design - Many-to-many
Understanding a SQL Junction Table Coding Notes
Oracle - What is a junction table and how is it used in Microsoft Access?
junction table ebook Download
Have a nice day!