Another approach is to organise tables in tree schema, if possible, and make academic year root of tree - I am referring to relationships here. Each root branch then would specify distinct academic year.
How is it possible to modify forms even to the point of custom arrows in combobox and actually to customize every attribute of any control ??
sample screens HERE
I understand that "physical" separation into several distinct databases is the most secure one. I search for alternatives making compromises on some issues.
The same method is embedded in mssql 2016. Looks like a low level secure method.
https://channel9.msdn.com/Events/DataDriven/SQLServer2016/Row-Level-Security
The following is a method for record level lock - per user - regarding mySQL. Looks promising.
https://www.sqlmaestro.com/resources/all/row_level_security_mysql/
I feel that managing multiple BE databases will be a nightmare. I will test it and see how it goes.
I thing the single database with a guid 128 bit companyID is hard enough to break.
I will test each method.
I am thinking of adding foreign key companyID to every table and relate all tables to company table, then all queries will be restricted by the specific companyID field.
Database: MySQL or MSSQL