Esto es mas o menos lo que tienes:

Tiene dos problemas:
1) No se sabe de dónde surge
cod_mat ni lo que representa.
2) Para hacer un JOIN entre
pensa y
notas hay que usar una función de caracteres para extraer la PK de
pensa, ya que tal y como está es inconsistente.
Ese tipo de cosas no se debe hacer. En todo caso si se requiere que además de ese código, contenga la relación con el sitio (sección) donde se puso esa nota, hay que extender el modelo:

Con este modelo ya podemos crear una consulta consistente:
Código MySQL:
Ver original P.cod_mat, M.descrip, S.semestre, M.creditos, N.nota, N.lapso, N.tiplap
Ahora bien, yo a esto le veo un problema: çLas notas son propiedad o pertenecen al cursante, no al plan o programa de cursada (que es lo que parece representar pensa), por lo que esta consulta generaría una repetición de registros por cada nota.
SI lo que quieres es poner las materias dadas en un semestre, esta consulta no requiere cruzar la tabla de notas, como no sea para saber la sección a la que pertenece esa cursada.
Eso sería:
Código MySQL:
Ver original P.cod_pensa, S.seccion_id, P.cod_mat, M.descrip, S.semestre, M.creditos, N.lapso, N.tiplap
Nota importante:
Cita: pero yo a mi forma de ver las cosas se debe relacionar las tablas con el campo cod_comp, que para las 3 tablas son iguales
Las relaciones no se establecen entre las entidades porque
parezcan estar relacionadas, sino porque realmente
exista una relación.
¿Modelaste con alguna herramienta gráfica antes de construir las tablas?, si es así, postea lo que hiciste para ver bien esas relaciones.