When a single dimension simultaneously appears several times in the same fact table, it is known as a Role Playing Dimension. This is done with a single physical table presented as separately labeled views. For instance, a fact table can have several dates, each of which is represented by a foreign key to the date dimension. It is essential that each foreign key refers to a separate view of the date dimension so that the references are independent. These separate dimension views (with unique attribute column names) are called “Roles”.
The underlying dimension will exist in the database as a single physical table, but each of the roles should be presented to the data access tools in a separately labeled relational view.
The example shown here shows a single date dimension split into two views, Order Date and Ship Date. Now the fact table can refer to two separate foreign keys to indicate the proper date type.