Potresti creare una tabella che memorizza i corsi che possono essere presi l'uno con l'altro: CourseCombination (id, course1id, course2id). Quindi puoi creare una tabella che memorizzi un singolo valore che rappresenti il periodo di tempo in cui uno studente può prendere una qualsiasi combinazione di corsi: CourseCombinationTimeFrame.
Quindi, nella tua applicazione, crea un posto dove gli amministratori di sistema possono combinare i corsi e impostare il periodo di tempo in cui uno studente può prendere una qualsiasi combinazione di corsi. In questo caso avrebbero raggruppato la scrittura e la lettura e l'intervallo di tempo sarebbe di 2 settimane. Questo memorizza la scrittura e la lettura nella tabella CourseCombination e aggiorna il valore CourseCombinationTimeFrame a 2.
Ora, nella tua applicazione, crea un blocco di logica che convalida le selezioni del corso per gli studenti:
- Interrogare la tabella delle combinazioni.
- Quando lo studente sceglie un corso, controlla che il corso selezionato non violi le combinazioni.
- Prendi la data minima di inizio dei corsi che lo studente ha selezionato.
- Prendi la massima data di inizio dei corsi che lo studente ha selezionato.
- Esegui una query sulla tabella degli intervalli di tempo.
- Verifica che max - min sia all'interno del lasso di tempo.
Questo è solo un esempio. Ma tieni presente che non possono modificare la logica di business, solo i parametri della logica.
Se vogliono davvero il controllo sulla logica stessa, allora stanno praticamente chiedendo il codice sorgente, e presumo che abbiano un ragazzo IT che vuole essere in grado di personalizzare la post produzione del software. Se questo è il caso, assicurati che il tuo contratto sia molto chiaro su cosa stai consegnando e per quale pagamento. Idealmente, se vogliono cambiare la logica stessa, ti contatteranno per avere più lavoro. Dovresti provare a venderli con questa idea, perché sarai il meglio equipaggiato per apportare modifiche e sarà più economico per loro a lungo termine.