Sorry let me try and contextualize this to a real world problem. I have also modified the relationships and actual entities involved(due to confidentiality) somewhat:
A school has many teachers.
A teacher can belong to more than one school.
A teacher teaches many students.
A student can be taught by more than one teacher.
These are all bi-directional relationships. Given a student, I should be able to tell what school he/she belongs to and vice versa.
Solution A:
Tables: School, School_Teacher, Teacher, Teacher_Student, Student
School has primary key school_id
Teacher has primary key teacher_id
Student has primary key student_id
School_Teacher is join table with foreign key references to school_id and teacher_id
Similar for Teacher_Student
Solution B:
Tables: School, Teacher, Student
School has primary key school_id
Teacher has primary key (teacher_id, school_id)
Student has primary key (student_id, teacher_id, school_id)
I personally argue for solution A, because I feel multi-column primary keys convolute the design and cause inefficient lookups? I have almost no experience in this, thats why I can't put up a convincing argument for my superiors and colleagues. Their only argument/mantra is that "joins are expensive", which makes me feel like they're simply blindly quoting a phrase that they picked up somewhere.