Not necessarily Gareth,
For example, in my university I have the structure below
Faculty (category) > School (sub-category) > Programme (sub-sub-category) > Module (course)
But one module might be taught to students who are studying more than one Programme (e.g. one engineering module might be taught in Civil Engineering, Fire and Safety Engineering, Mechanical engineering and several others as well). They may be core components of one 'category' and optional components for another.
The way I deal with it, however, is very simple - the categories are treated as an administrative function only, so I don't worry about it :D
The course goes into the category/programme for whoever first requested it to be created or wherever it was validated first and students still get enrolled at a module/course level on the correct module/course, irrespective of which programme they are taking it as part of.
R