La progettazione di un database per le applicazioni è raramente completa senza la creazione di relazioni tra le tabelle. L'editor di database AppMaster consente di creare tali relazioni con una semplice mossa. È sufficiente tracciare una linea di collegamento tra le tabelle e selezionare il tipo di relazione (uno-a-uno, uno-a-molti, molti-a-molti) e, se necessario, i nomi dei campi. Ma cosa succede se la tabella deve fare riferimento a se stessa?
Analizziamo la situazione in cui è necessario mantenere un certo registro di record. Allo stesso tempo, è organizzato in modo tale che i record siano creati rigorosamente a catena. Ogni registrazione deve essere collegata alla precedente e alla successiva (ad eccezione della prima e dell'ultima, ovviamente). In questo modo, l'intera catena può essere tracciata per ogni singolo record e il sistema riceve una protezione aggiuntiva contro le modifiche non autorizzate.
Progettazione del database
Per prima cosa, dobbiamo creare il modello stesso nel designer di database. Diamogli un nome Journal e aggiungiamo un campo di testo, record.
Il passo successivo è creare una connessione. Per farlo, fare clic con il tasto destro del mouse su un punto qualsiasi dell'area di disegno e selezionare Create relation.
Il passo successivo consiste nell'impostare la connessione. Per farlo, è necessario selezionare lo stesso modello di Source e Target (in questo caso, Journal), impostare i nomi dei campi (next e previous) e il tipo di connessione (has_one).
L'impostazione della tabella autoreferenziale è completa. È possibile iniziare a creare il progetto front-end e i processi aziendali.
Creazione del processo aziendale
Creiamo un processo aziendale di back-end per aggiungere nuove voci al diario. Il processo riceverà il testo della nuova voce come parametro di input. Il processo cercherà nel database la voce più recente per associarla alla nuova voce. Per la ricerca, è possibile impostare _Limit = 1 (perché è necessario solo un ultimo record), il che sarà sufficiente poiché, per impostazione predefinita, i record saranno ordinati per ID e rilasciati nell'ordine in cui sono stati aggiunti al database, a partire dall'ultimo record.
Il risultato della ricerca sarà un array composto da un elemento. Dobbiamo estrarlo utilizzando il blocco Array Element con index 0 e formare una nuova voce del diario (Make Journal). L'ultimo passo consiste nella scrittura nel database (DB: Create Journal) e completare il processo aziendale.
Questo processo aziendale può essere utilizzato per l'endpoint predefinito per creare nuovi record del database.
Progettazione del front-end
Per il front-end di un'applicazione web, è sufficiente aggiungere tre elementi alla pagina.
- Campo di testo per inserire il contenuto della nuova voce
- Pulsante per aggiungere una voce
- Tabella per visualizzare tutte le voci.
Per il pulsante "ADD Journal Record" è necessario creare un semplice processo aziendale. Facendo clic sul pulsante, il testo del campo di input deve essere inviato all'endpoint per creare nuovi record e un altro pulsante deve essere cliccato per aggiornare il contenuto della tabella come ultima azione.
Per la tabella stessa, è opportuno impostare anche i processi aziendali, ma in questa lezione non ci soffermeremo su questo aspetto. Tutte le informazioni necessarie si trovano nella lezione sull'impostazione delle tabelle. Vale solo la pena di notare che quando si ottengono i dati, è necessario specificare il parametro _with il parametro per ottenere i dati da tabelle correlate (nonostante il fatto che, nel nostro caso, la tabella sia correlata a se stessa).
Possiamo pubblicare l'applicazione, aggiungere alcune voci e verificare che tutto funzioni correttamente. Ogni voce è realmente correlata alle voci della stessa tabella. Ad esempio, per una voce con ID 3, esiste un collegamento alla voce precedente (ID 2) e alla voce successiva (ID 4).