[eluser]insub2[/eluser]
I think I've settled on this:
Code:
Tables
----------------------------------------------
Business [ busID, *busData* ]
Locations [ locID, *locData* ]
BusinessLocations [ branchID, busID, locID ]
Review [ revID, busID, userID, *revData* ]
ReviewLocationss [ revID, branchID ]
Airline [ aLineID, busID, *aLineData* ]
Airport [ aPortID, locID, *aPortData* ]
It's pretty much what I had before with the addition of the BranchID to describe the Business Location Relationship. This should make validating that Business J is actually at Location #27 more direct.
I left the busID in the Review table because, though it's not fully normalized, performing the joins required to get a busID for a Review would be a bit much for something that is used to lookup reveiws so much. Plus, in the unlikely but possible event that a Review's BranchIDs point to multiple businesses, there will be a "master source" for making repairs.