tienes que hacer 3 tablas una para los cursos otra para los profesores y otra para asignarles a los profesores los cursos y las horas.
eJ: tablas asignaprofesorescursos, cursos, profesor.
la tabla de Departamentos no te entendi??
el codigo en mysql seria asi:-- phpMyAdmin SQL Dump
-- version 2.11.5
--
http://www.phpmyadmin.net--
-- Servidor: localhost
-- Tiempo de generación: 10-10-2009 a las 12:07:50
-- Versión del servidor: 5.0.51
-- Versión de PHP: 5.2.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de datos: `profesores`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `asignaprofesorescursos`
--
CREATE TABLE `asignaprofesorescursos` (
`codeasigna` int(12) NOT NULL auto_increment,
`nempleado` varchar(12) collate latin1_general_ci NOT NULL,
`codcurso` varchar(12) collate latin1_general_ci NOT NULL,
`nhoras` int(11) NOT NULL,
`fechaimportacion` date NOT NULL,
PRIMARY KEY (`codeasigna`),
KEY `nempleado` (`nempleado`),
KEY `codcurso` (`codcurso`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ;
--
-- Volcar la base de datos para la tabla `asignaprofesorescursos`
--
INSERT INTO `asignaprofesorescursos` (`codeasigna`, `nempleado`, `codcurso`, `nhoras`, `fechaimportacion`) VALUES
(1, '1454', '01', 5, '2009-10-10'),
(2, '1454', '02', 5, '2009-10-10'),
(3, '1454', '03', 5, '2009-10-10'),
(4, '1454', '03', 5, '2009-10-07'),
(5, '1455', '01', 10, '2009-10-07'),
(6, '1455', '02', 10, '2009-10-08');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `cursos`
--
CREATE TABLE `cursos` (
`codcurso` varchar(12) character set latin1 collate latin1_general_ci NOT NULL,
`nomcurso` varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
PRIMARY KEY (`codcurso`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Volcar la base de datos para la tabla `cursos`
--
INSERT INTO `cursos` (`codcurso`, `nomcurso`) VALUES
('01', 'Logica de Programacio1'),
('02', 'Logica de Programacio2'),
('03', 'Base de datos1'),
('04', 'Base de datos2');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `profesor`
--
CREATE TABLE `profesor` (
`n_empleado` varchar(12) collate latin1_general_ci NOT NULL COMMENT 'codigo del profesor',
`nombres` varchar(30) collate latin1_general_ci NOT NULL,
`apellidos` varchar(30) collate latin1_general_ci NOT NULL,
`direccion` varchar(40) collate latin1_general_ci NOT NULL,
`dni` varchar(25) collate latin1_general_ci NOT NULL,
`telefono` varchar(25) collate latin1_general_ci NOT NULL,
`n_cuentabancaria` varchar(30) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`n_empleado`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='tabla de profesores';
--
-- Volcar la base de datos para la tabla `profesor`
--
INSERT INTO `profesor` (`n_empleado`, `nombres`, `apellidos`, `direccion`, `dni`, `telefono`, `n_cuentabancaria`) VALUES
('1454', 'Luis ', 'Perez Rico', 'cra 24 n 2-14', 'no se que es dni', '987456', '546987lk12'),
('1455', 'Mauricio', 'Mantinez', 'cra 24 n 2-14 palma de mollorca', 'no se que es dni', '569874', '546987lk2365');
--
-- Filtros para las tablas descargadas (dump)
--
--
-- Filtros para la tabla `asignaprofesorescursos`
--
ALTER TABLE `asignaprofesorescursos`
ADD CONSTRAINT `asignaprofesorescursos_ibfk_2` FOREIGN KEY (`codcurso`) REFERENCES `cursos` (`codcurso`),
ADD CONSTRAINT `asignaprofesorescursos_ibfk_1` FOREIGN KEY (`nempleado`) REFERENCES `profesor` (`n_empleado`);
y la consulta en mysql asi:SELECT profesor.nombres, cursos.nomcurso, asignaprofesorescursos.nhoras, sum( asignaprofesorescursos.nhoras )
FROM asignaprofesorescursos, cursos, profesor
WHERE cursos.codcurso = asignaprofesorescursos.codcurso
AND profesor.n_empleado = asignaprofesorescursos.nempleado
AND asignaprofesorescursos.nempleado = '1454'
GROUP BY cursos.nomcurso
LIMIT 0 , 30
si puedo ayudarte mas no dudes en preguntar