Stai partendo sbagliare con PHP, garantito al 100%. PHP è procedurale. Quello che vuoi sono vincoli dichiarativi. Vuoi dire all'intero stack:"Questi sono i vincoli sui dati e questi vincoli non possono essere violati". Non vuoi molto in giro con "Step 1 ... Step 2 ... Step 3 ... Step 432 ...", come metodo per imporre vincoli ai dati, perché
- hai intenzione di sbagliare
- quando lo cambi in seguito, dimenticherai quello che hai fatto ora
- nessun altro conoscerà tutti questi vincoli impliciti come li conosci tu ora, e questo include il tuo sé futuro
- ci vuole molto codice per applicare i vincoli in modo corretto e continuo:il server del database ha già questo codice, ma sei pronto a scriverlo?
La domanda in realtà dovrebbe essere formulata:"Perché dovrei usare PHP per imporre questi vincoli, quando potrei farlo semplicemente con MySQL?"