Salve a tutti. Mi sono appena cimentato nella creazione di database, con sql, e mi sono imbattuto in questo esercizio https://docplayer.it/5275050-Progettazione-di-basi-di-dati-temi-d-esame-svolti.html quello riguardante la gestione delle piscine comunali di torino. Per quanto riguarda all'entità tempo nell'associazione ternaria "rotazione" l'ho concepito come coppia degli attributi (giorno,ora) (la sua PK), così come sono organizzate le ore di lezione in una scuola: lunedì prima, seconda......ora, martedì........ecc. Quello che vorrei fare nella realizzazione in sql è effettuare un controllo nella "tabella ponte" rotazione(insegnante,piscina,giorno,ora) dell'associazione ternaria in modo tale che l'insegnante inserito in tale tabella abbia la qualifica necessaria per insegnare un determinato corso (coppia piscina, tipo corso cfr. riferimento esterno in tiene). Le tabelle in grado di effettuare tale collegamento alla tabella rotazione sono (almeno io le ho chiamate così) Qualificazioni e Orario_Corsi. Poichè qualifica in Insegnante è un attributo multivalore si introduce un'associazione molti a molti ove Qualificazioni(insegnante,qualifica) costituisce la tabella ponte. A sua volta Orario _Corsi(piscina,tipo,giorno,ora) è la tabella ponte dell'associazione lezione (basso destra). Si noti che tipo corso altri non è che qualifica!
La mia idea era di fare un trigger da azionare allorquando si inserisce una riga in rotazione e controllare, tramite un select count, se le righe di una determinata tabella join per un determinato insegnante sono nulle in corrispondenza di Qualificazioni.qualifica = Orario_Corsi.tipo e per Orario_Corsi.giorno = Rotazione.giorno e Orario_Corsi.ora = Rotazione.ora. In tal caso faccio fare al trigger un roll back. Non riesco però ad organizzare bene le "concatenazioni" nel trigger, qualcuno ha un'idea di come fare per sbrogliare la matassa?