Allora dipende quanto vuoi complicarti la vita.
Se vuoi gestire le tipologie di studi come categorie puoi usare varie soluzioni, una di queste e' usare una tabella ricorsiva( per intenderci con una colonna che fa riferimento alla tabella stessa ) per gestire le sottocatergorie. Ovviamente devi usare funzioni ricorsive per scorrere le varie categorie/sottocategorie.
Senno a mio avviso a questo punto puoi usare una soluzione diversa e piu' versatile come inserire una'altra tabella dove ti salvi i dati aggiuntivi.
Il problema a sto punto diventa che bisogna invertire un po di roba.
io farei.
(ti metto dentro codice php cosi mi mantiene l'identazione)
Codice PHP:
Sql
create table studenti(
id int auto_increment not null,
-- DATI VARI DELLO STUDENTE
-- .....
primary key(id)
);
create table studi(
id int auto_increment not null,
-- DATI STUDI
corso text,
primary key(id),
);
create table sottotipi(
id int auto_increment not null,
-- DATI STUDI
corso text,
note text,
primary key(id),
);
/*
Come vedi ho aggiunto una tabella "sottotipi" nella quale andremo ad inserire i
vari sottotipi di studio e la gestiremo con la stessa relazione molti a molti che aveva
fatto prima.
Cosi a sto punto uno studio puo' possedere piu' sottotipi e uno stesso sottotipo puo'
essere riutilizzato in studi diversi.
Quindi ora inseriamo le tabelle di relazione.
Nota: ora inseriamo anche qlke campo aggiuntivo nella tabella di relazione che ci
consente di estendere le tabelle con i dati relativi alle votazioni note etc
*/
create table studenti_studi(
id_studente int not null,
id_studio int not null,
votazione varchar(50),
-- altri eventuali dati
primary key(id_studente , id_studio),
foreign key (id_studente) references studenti(id)
ON DELETE NO ACTION , ON UPDATE NO ACTION,
foreign key (id_studio) references studi(id)
ON DELETE NO ACTION , ON UPDATE NO ACTION
);
create table studi_sottotipi(
id_sottotipo int not null,
id_studio int not null,
-- altri eventuali dati
primary key(id_sottotipo , id_studio),
foreign key (id_sottotipo) references sottotipi(id)
ON DELETE NO ACTION , ON UPDATE NO ACTION,
foreign key (id_studio) references studi(id)
ON DELETE NO ACTION , ON UPDATE NO ACTION
);
Come vedi ora abbiamo esteso il database inserendo tutti i dati che ci servivano senza dover necessariamente apportare modifiche pesanti alla tabelle precedentemente usate.
Io reputo questa una buona soluzione che ti consetira' di estendere in futuro la base di dati.
Ionltre ti consente di fare tutte le ricerche che ti servono come caricare tutti gli studenti con un certo master controllare quanto maschi hanno un laurea + abilitazioni varie etc etc.
Ovviamente le query non saranno proprio immediate ma con qlke join risolverai i problemi e costruendo le query bene potri davvero fare di tutto.

Edit:
Ovviamente l'sql per la creazione delle table e' puramente un esempio potrebbe non funzionare.
Inoltre dopo ti consiglio di usare le foreign key con qlke action tipo cascade cosi' eviti la permanenza di dati incoerenti nella tab di relazione.
Ciauz de nuevo.