I am creating a module for a school. Now a school has a lot of data like: school general info, grades, classes, rates, registration dates, etc.

Now, there are some information that should remain more or less the same, regardless of the year, e.g. School Name, School address, Levels (as this is government regulated), etc.

However, there are those data that is year-dependent. E.g. Classes (new classes may be added next year?), registration dates, school holidays, school rates, etc. may be different from year to year.

And these aren't just standalone data for display. The system logic relies on some of them too. E.g. school rates determine the invoices to be generated for the parents. Hence, they can't just be changed on a whim, once set.

How do I handle these types of settings? When I create a 'new school', should my first question be for what school year are the settings going to be (e.g. Aug 2017 to Jun 2018)? And after that duration has ended (e.g. Jul 1 2018), I would be prompted to enter a 'new school year' followed by asking the user to go through all the settings again (prefilled with last year's info).

Any thoughts?

2 Answers 2


Can you make a school a persistent object, and assign a 'year' to a school?

A school can be a parent object to a 'year'.

A school is created one time, and years are created annually.

We haven't seen any mockups, so I'm not sure I understand your use case well.

If you keep the persistent values such as:

  • Name
  • History and background
  • Location
  • Faculty (fairly consistent)

You can add a 'year', which contains classes and rates separately. That way users can modify the rates, classes, holidays separately.

You can even do this with a clone function for the year itself, especially if not too much data will change. The user can then modify or add new classes and schedules as needed.

This way you can even decouple the student population from the main school object, and show comparative growth by year.


You could categorise your data into options, settings, properties ect.

For example:

  • School Name and address can be in settings
  • registration dates, school holidays and school rates can be in options

There are no exact definitions but you can find some useful information here

Options, Settings, Properties, Configuration, Preferences — when and why?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.