Asking this question shows that you find your current model not intuitive and I think this is a good feeling.
Let me explain an alternative to having only
Degree to you that hopefully feels more intuitive.
While a student might seem to know everything about his degrees, he doesn't. Let's illustrate this with a real world example: Consider a student got a degree for some course. However, the university staff found out and can prove that the student cheated in the final tests. His degree is therefore immediatly declared invalid before he probably even gets to know about that.
The question is: who is responsible for telling if some students degree is existing and also valid?
They are the ones having the responsibility of knowing which student has which (valid) degrees. This could e.g. be an
examination office, but it might depend on the university/country.
As you see, we have to model another party in regards of separation of concerns. And same goes for your
single degree plan. There certainly is another authority responsible for administration of the students degree plans to make sure every student has only one plan and that this plan is valid.
In a nutshell, students and their degrees are only connected indirect through differend kind of authorities. The students usually know the authorities that are responsible for them (e.g. in code that means they have a reference to this object).
: Just a note of caution: even though there might only be one authority of this kind, don't model this with some singleton pattern. Instead, model it as if there could be more than one authorities and in your actual program only create one instance.