Het ontwerpen van een database voor toepassingen is zelden compleet zonder het maken van relaties tussen tabellen. Met de database-editor AppMaster kunt u in één eenvoudige beweging zo'n relatie maken. U hoeft alleen maar een verbindingslijn te trekken tussen tabellen en vervolgens het type relatie te selecteren (één-op-één, één-op-veel, veel-op-veel) en eventueel de namen van de velden. Maar wat als de tabel naar zichzelf moet verwijzen?
Laten we de situatie analyseren waarin het nodig is een bepaald logboek van records bij te houden. Tegelijkertijd is het zo georganiseerd dat records strikt in een keten worden aangemaakt. Elk gegeven moet gekoppeld zijn aan het vorige en het volgende gegeven (behalve het allereerste en het laatste gegeven, natuurlijk). Zo kan voor elk afzonderlijk record de hele keten worden gevolgd, en wordt het systeem extra beschermd tegen ongeoorloofde wijzigingen.
Ontwerp van de databank
Eerst moeten we het model zelf maken in de databaseontwerper. Laten we het een naam geven Journal en één tekstveld toevoegen, record.
De volgende stap is het maken van een verbinding. Om dit te doen, klikt u met de rechtermuisknop ergens op het canvas en selecteert u Create relation.
De volgende stap is het opzetten van de verbinding. Hiervoor moet u hetzelfde model selecteren als Source en Target (in dit geval, Journal), de veldnamen instellen (next en previous), en het type verbinding (has_one).
Het opzetten van de zelfverwijzende tabel is voltooid. U kunt beginnen met het maken van het front-end ontwerp en de bedrijfsprocessen.
Bedrijfsproces creëren
Laten we een backend bedrijfsproces aanmaken om nieuwe boekingen aan het journaal toe te voegen. Het ontvangt de tekst van de nieuwe invoer als invoerparameter. Dit zal de database doorzoeken naar de laatste invoer om die te koppelen aan de nieuwe invoer. Voor het zoeken kunt u _Limit = 1 (omdat slechts één laatste record nodig is), wat voldoende zal zijn omdat de records standaard op ID worden gerangschikt en uitgegeven in de volgorde waarin ze aan de database zijn toegevoegd, te beginnen met het laatste record.
Het resultaat van het zoeken is een array bestaande uit één element. We moeten het eruit halen met behulp van het Array Element blok met index 0 en een nieuwe journaalpost vormen (Make Journal). De laatste stap is het schrijven naar de database (DB: Create Journal) en het bedrijfsproces te voltooien.
Dit bedrijfsproces kan worden gebruikt voor het standaard eindpunt om nieuwe databaserecords aan te maken.
Front-end ontwerp
Voor de front-end van een webapplicatie is het voldoende om drie elementen aan de pagina toe te voegen.
- Tekstveld voor het invoeren van de inhoud van de nieuwe vermelding
- Knop om een vermelding toe te voegen
- Tabel om alle vermeldingen weer te geven.
Voor de knop "ADD Journal Record" moet u ook een eenvoudig bedrijfsproces maken. Als u op de knop klikt, moet de tekst uit het invoerveld naar het eindpunt worden gestuurd om nieuwe records aan te maken, en een andere knop om als laatste actie de inhoud van de tabel bij te werken.
Voor de tabel zelf is het ook de moeite waard om bedrijfsprocessen op te zetten, maar daar gaan we in deze les niet op in. Alle benodigde informatie is te vinden in de les over het opzetten van tabellen. Het is alleen vermeldenswaard dat u bij het ophalen van gegevens de parameter _with de parameter om gegevens te verkrijgen van gerelateerde tabellen (ondanks het feit dat, in ons geval, de tabel gerelateerd is aan zichzelf).
We kunnen de toepassing publiceren, een paar gegevens toevoegen en controleren of alles correct werkt. Elke invoer is echt gerelateerd aan invoer in dezelfde tabel. Bijvoorbeeld, voor een invoer met ID 3 is er een link naar de vorige invoer (ID 2) en de volgende invoer (ID 4).