Como vc já viu nas respostas anteriores, sua pergunta está muito aberta, mas o raciocínio para você ligar essas tabelas talvez não seja algo tão difícil.
Por exemplo, você tem uma tabela chamada "Curso" e outra "Professor".
Se a relação entre elas for 1-1 (onde cada professor leciona apenas um curso, e cada curso tem apenas um professor), você pode, em qualquer uma das tabelas, criar uma coluna que vai receber o IdCod da outra (ou cria na tabela Professor uma coluna que vai receber o IdCod do curso que ele leciona, ou o contrário). Não há necessidade de fazer a coluna em ambas tabelas, mas também é possível.
Se a relação for 1-N (onde ou cada curso recebe apenas um professor mas cada professor pode lecionar em mais de um curso, ou cada professor leciona em apenas um curso mas cada curso pode receber mais de um professor), o ideal é que a coluna seja criada na tabela que só há uma relação (ou seja, se for o caso de cada curso ter apenas 1 professor, crie a coluna na tabela Curso).
Agora, se cada curso puder ter mais de um professor, e cada professor puder lecionar em mais de um curso, temos uma relação N-N. Assim, o mais prático é construir uma nova tabela (algo como "Professor_Curso") que vai administrar essas relações todas. Essa tabela teria simplesmente o seu ID próprio (é indicado que toda tabela tenha seu ID), o ID do professor e o ID do curso, linha a linha.
Todas essas relações são feitas com chave-estrangeira, o que impede que a alteração (exclusão) do registro de uma tabela impacte na outra.
Fazendo essa lógica em todas as tabelas, você vai acabar relacionando todas elas de alguma forma, dai, já será possível criar query para construnção de qualquer tabela dentro do universo das tabelas do print.