Also as a matter of interest, would the ability to use foreign keys have solved my problem?
No, but support for subselects would.
I have done this before in mysql and it's not fun.
1.
SELECT DISTINCT on just the department data, the data should go into a table that has a name field and an auto_increment field as primary key, plus whatever other data you need.
2.
Search and replace? Save the grunt work for a shell script that you will generate through sql.
SELECT CONCAT('perl -p -e \'s#', name, '#', id, '#\' name_of_csv_file;')
FROM dept
INTO OUTFILE 'path/filename';
3.
Do the same for the other tables - just change table name in FROM and filename in OUTFILE
4.
Backup your csv and run the shell scripts - test it first, as I might have a typo...
5
Import the data into a table.
6.
SELECT DISTINCT into employee table with all needed columns plus an auto_increment for primary key.