A multi-to-multi table allows exactly what you need. It is not limited to only ONE join between Table A and Table B via the intermediate Table C. You can add as many intermediate records to Table C as you see fit.
Join the two foreign keys in "Reviews" to the PrimaryKeys of Reviewers and Movies. Done...
Of course add your name fields to reviewers and movies. Add your score field and summary to the reviews table.
To summarize a movie's average rating from all reviewers you can create a calculation type field and the Average() function:
Movies::AverageReview = Average( Reviews::Score )
You can invert that to get the Reviewers average for all movies:
Reviewers::AverageReview = Average( Reviews::Score )
If you want to get a more specific summary combining movie/reviewer, you can do so in a number of ways:
1) ExecuteSQL calc function, EG:
ExecuteSQL(SELECT AVG(Score) FROM Reviews WHERE ReviewerForeignKey = ? AND MovieForeignKey = ?";"";""; Reviewers::PrimaryKey ; Movies::PrimaryKey )
2) Or by adding a summary type field to Reviews that is an average of the Score field, and use get GetSummary() function to break it apart by movie.
3) Create an additional Self-join to a table occurrence of the reviews table (ReviewsSelf) based on:
Reviews::ReviewerForeignKey = ReviewsSelf::ReviewerForeignKey
Reviews::MovieForeignKey = ReviewsSelf::MovieForeignKey
Then create a calculation field of: Reviews::ReviewerScore = Average( ReviewsSelf::Score )
Don't forget as well that you will need to come up with a way to create the records in the intermediary table. You can do so via a portal on Reviewers by:
-Checking the box on the relationship between Reviewers and Reviews to allow creation in the reviews table.
-Adding a "reviews" portal to the Reviewers layout.
-Adding Reviews::MovieForeignKey to the portal
-Creating a 2-part popup value list on MovieForeignKey that has Movies::PrimaryKey as the first field and Movies::Name as the second field.
Thus when someone selects a value in the empty portal row in the MovieForeignKey field, it will auto-fill Reviewer::PrimaryKey into Reviews::ReviewerForeignKey and create the relationship with the Movie you selected.
Seems to me that the three tables that you describe are all you need here. Your reviews table can serve as the "join" table between movies and reviews.
Reviewers::__pkReviewerID = Reviews::_fkReviewerID
Movies::__pkMovieID = Reviews::_fkMovieID
While a portal is not the only option for working with these relationships, a portal to reviews on the Reviewers layout can list all reviews (and movies reviewed) created by that Reviewer. Put the same portal on the Movies layout and you can list the reviews (and reviewers) created for that movie.