A many-to-many relationship is a relationship (an m:n mapping) between two relation A and B in which :
The data warehouse world does not function with normalized fact tables since you need to start doing lots of select count(distinct) resulting in facts columns not being additive.
When you need to model a many-to-many relationship in a Dimensional Data Modeling - Dimensional Schemas, you fall in a snowflake schema.
There are a few ways of implementing many-to-many relationships :
See the many-to-many section of the Association table (bridge,…)
The boolean column method consists of creating a column for each possible value, like so:
Each boolean column can be a numeric (1 or 0), or character (Y or N).
The multiple column method consists of having columns for the number match the number of choices one can make. This has its limitations since it is tightly coupled to the application; but is easily transformed. The typical data model would look like:
In this case, you could only have five sports even though you could have several dozen choices.
The Boolean Method is far superior in every category except the breakdown, and the Bridge is a close second. You have to use the Bridge method if the number of potential values in the dimension exceeds 100 columns or so. You can do it, but it looks ugly. The best of both worlds would be to merge the Boolean and Bridge column methods. Its fairly straight–forward: add the boolean columns to the bridge table as follows:
There are several approaches: