Ontwerper van datamodellen
Creëren van database met behulp van datamodellen ontwerper
Databankontwerp
Het is tijd om uw eigen database te ontwerpen. Ga hiervoor naar de tab Database op het linkerpaneel.
Gegevensmodellen
De gegevens in de database worden opgeslagen in de vorm van speciale tabellen (modellen). En je ziet dat we al één model hebben. Het maakt deel uit van de autorisatiemodule en is standaard opgenomen in elk project. Dankzij dit model worden nieuwe gebruikers van de applicatie aangemaakt en bestaande gebruikers beheerd. Maar we zullen nu niet ingaan op de studie ervan, we zullen ons eigen model creëren.
Stel dat we een kaartendienst ontwikkelen. Laten we een model maken dat informatie over landen bevat. Om het te maken, moeten we rechts klikken in een leeg gebied van het canvas en selecteren Create empty model.
Om te creëren hoeven we alleen de naam van het model op te geven. We zullen het automatisch genereren van eindpunten en gebruikersinterface-elementen behandelen in verdere modules van de cursus.
Modelvelden
Merk op dat het model direct na het aanmaken al 4 velden bevat. Dit zijn systeemvelden, waarvan de aanwezigheid de eerste creatie en het verdere gebruik van het model sterk vereenvoudigt.
ID (integer) - Unieke identificator, primaire sleutel. Deze wordt automatisch aangemaakt voor elke nieuwe vermelding in de tabel en moet ervoor zorgen dat er geen duplicaten zijn. Het is door de ID dat u een record in een tabel uniek kunt identificeren. De waarde ervan begint bij 1 en wordt automatisch met 1 verhoogd voor elke nieuwe vermelding.
CreatedAt (datetime) - Het tijdstip waarop het record in de tabel is aangemaakt.
UpdatedAt (datetime) - Het tijdstip waarop het record voor het laatst werd gewijzigd.
DeletedAt (datetime) - Het tijdstip waarop het record werd verwijderd. Natuurlijk alleen als soft-removal werd gebruikt. Dat wil zeggen, een dergelijke verwijdering, waarbij het record alleen wordt gemarkeerd als verwijderd en gefilterd door verzoeken om toegang tot het record, maar tegelijkertijd fysiek in de tabel blijft. Dit is anders dan bulkverwijdering, waarbij de gegevens daadwerkelijk volledig worden verwijderd.
Naast de systeemvelden is het verstandig om aangepaste velden toe te voegen aan het aangemaakte model. Stel dat we de naam van het land en een beschrijving met informatie daarover willen zien.
Het kiezen van een veldtype mag geen probleem zijn. String is geschikt voor de naam, en Text voor de informatieve beschrijving.
Daarnaast zijn er nog vier schakelaars beschikbaar:
Multiple values (Array) - gebruik arrays in plaats van losse entries.
Not null - het gespecificeerde veld kan niet leeg zijn, het moet altijd gegevens bevatten.
Unique - de waarde van het veld moet uniek zijn, in dit model kunnen er geen twee records zijn waarvan de waarde van dit veld hetzelfde is.
Index - geeft aan dat voor dit veld een speciale index wordt aangemaakt om het zoeken te versnellen.
In het algemeen is het alleen goed om vinkjes te zetten als het echt nodig is. We zouden bijvoorbeeld Not null en Unique kunnen aanvinken voor landnamen, ervan uitgaande dat er geen land kan zijn zonder naam, of twee landen met dezelfde naam. Het is echter een goed idee om dit te regelen in het stadium van het creëren van de logica van de toepassing, en geen beperkingen op te leggen aan de database zelf.
Maak ook een tabel met informatie over steden. Denk na over welke gegevensvelden deze kan bevatten, en welk type deze velden zijn.
Gegevensmodellen relaties
De gegevens in de database bestaan niet op zichzelf, in de vorm van verspreide tabellen. Ze zijn op een bepaalde manier aan elkaar gerelateerd. De sleutel tot het ontwikkelen van een gegevensmodel is het definiëren van deze relaties en het leggen van verbanden.
Om dergelijke verbanden te leggen, is het nodig om met de muis een lijn te trekken van de grens van het ene model naar het andere. In ons voorbeeld weten we zeker dat elke stad zich in een bepaald land bevindt, dus kunnen we een link maken van land naar stad.
Er zijn 3 verschillende soorten verbindingen:
Eén-op-één (has one). Elk record in de tabel wordt gekoppeld aan één record uit de bijbehorende tabel (dit geldt ook omgekeerd). Een eenvoudig voorbeeld is een persoon en zijn paspoort. We kunnen er altijd zeker van zijn dat deze verbinding uniek is. Een paspoort kan maar één houder hebben, en elke persoon kan maar één geldig paspoort hebben.
One-to-many (has many). Elk record in een tabel kan vele records in een andere tabel hebben. Onze database is een vergelijkbaar voorbeeld. Een land kan veel verschillende steden hebben, maar elke stad kan slechts tot één land behoren. Dit is de verbinding die we zullen maken.
Many-to-many. Een relatie waarbij meerdere records uit de ene tabel kunnen corresponderen met meerdere records uit een andere tabel. Een eenvoudig voorbeeld is de relatie tussen leraren en leerlingen. Elke leraar kan veel leerlingen onderwijzen, net zoals elke leerling van veel verschillende leraren kan leren.