This is almost exactly the example used for 'factless fact tables' in analysis services, which illustrates the point. The thing represented by the table is a 'booking', which has no natural primary key. The true key would be a composite key of location-timeslot. You need to create an artificial primary key if you don't want to do that or the DBMS does not support that.
You need at least these tables- Location(room #, Capacity) Timeslot(day,starttime), module(code,name).
It's not clear if the person is tied to the module or tied to the booking. It's not clear if the extension is tied to the person or the location.