Databaseontwerp. Beste praktijken

In de aanloop naar de start van de nieuwe cursus Database hebben we een kort auteursmateriaal voorbereid met belangrijke tips voor het ontwerpen van databases. We hopen dat dit materiaal nuttig voor u zal zijn.

Databaseontwerp. Beste praktijken

Databases zijn overal: van eenvoudige blogs en directories tot betrouwbare informatiesystemen en grote sociale netwerken. Het maakt niet uit of een database eenvoudig of ingewikkeld is, zolang deze maar goed is ontworpen. Wanneer een database zonder nadenken en zonder een duidelijk begrip van het doel is ontworpen, is het niet alleen ondoeltreffend, maar wordt het ook een echte beproeving om ermee te werken, een ondoorgrondelijk woud voor de gebruikers. Hier zijn enkele tips voor het ontwerpen van een database die helpen bij het creëren van een nuttig en gebruiksvriendelijk product.

1. Bepaal waarvoor de tabel dient en wat de structuur is

Databaseontwerp. Beste praktijken

Tegenwoordig helpen ontwikkelingsmethoden zoals Scrum of RAD (snelle applicatieontwikkeling) IT-teams om snel databases te ontwikkelen. Echter, in de jacht op tijd is de verleiding groot om direct aan de bouw van de database te beginnen, terwijl men vaag in het duister tast over wat het uiteindelijke doel is en wat de verwachte resultaten zouden moeten zijn.
 
Het lijkt alsof het team gericht is op efficiënt, snel werken, maar dat is een illusie. Hoe verder en sneller je in het project duikt, des te meer tijd je nodig hebt om fouten in het databaseontwerp te identificeren en te corrigeren.

Daarom is het eerste wat je moet doen, het bepalen van het doel van je database. Voor welk type applicatie wordt de database ontwikkeld? Zal de gebruiker alleen met de gegevens werken en moet er aandacht worden besteed aan transacties, of is hij meer geïnteresseerd in data-analyse? Waar moet de database worden geïmplementeerd? Moet deze het gedrag van klanten volgen of alleen de relaties tussen hen beheren? 

Hoe eerder het ontwerpteam deze vragen beantwoordt, hoe soepeler en gemakkelijker het proces van databaseontwerp zal verlopen.

2. Welke gegevens moeten worden opgeslagen?

Databaseontwerp. Beste praktijken

Plan vooruit. Denk na over wat de website of het systeem in de toekomst zal doen waarvoor de database wordt ontworpen. Het is belangrijk om verder te kijken dan alleen de eenvoudige vereisten van het technische dossier. Maar laten we niet meteen nadenken over alle mogelijke soorten gegevens die ooit door de gebruiker zullen worden opgeslagen. Bedenk liever of gebruikers berichten kunnen schrijven, documenten of foto's kunnen uploaden of berichten kunnen uitwisselen. Als dat zo is, moet er ruimte in de database voor gemaakt worden.

Werk samen met het team, de afdeling of de organisatie voor wie de ontworpen database in de toekomst zal worden ondersteund. Communiceer met mensen op verschillende niveaus, van klantenservicemedewerkers tot afdelingshoofden. Op deze manier krijg je via feedback een duidelijk beeld van de vereisten van het bedrijf. 

Het is onvermijdelijk dat de behoeften van gebruikers, zelfs binnen één afdeling, met elkaar in conflict zullen komen. Als je hiermee wordt geconfronteerd, wees dan niet bang om op je eigen ervaring te steunen en een compromis te vinden dat alle partijen tevreden stelt en de uiteindelijke doelstelling van de database dient. Wees gerust: in de toekomst ben je +100500 in karma en een berg koekjes rijker.

3. Modelleer gegevens met voorzichtigheid

Databaseontwerp. Beste praktijken

Er zijn verschillende belangrijke punten waarmee je rekening moet houden bij het modelleren van gegevens. Zoals eerder vermeld, hangt het af van het doel van de database welke methoden je moet gebruiken bij het modelleren. Als we een database ontwerpen voor de operationele verwerking van gegevens (OLTP), met andere woorden, voor het aanmaken, bewerken en verwijderen ervan, dan gebruiken we transactie-modellering. Maar als de database relationeel moet zijn, is het het beste om multidimensionale modellering toe te passen.

Tijdens het modelleren worden conceptuele (CDM), fysieke (PDM) en logische (LDM) datamodellen opgebouwd. 

Conceptuele modellen beschrijven entiteiten en de types gegevens die ze bevatten, evenals de relaties tussen deze entiteiten. Verdeel je gegevens in logische stukken - dat maakt het leven veel eenvoudiger.
Het belangrijkste is maat houden, overdrijf niet.

Als een entiteit moeilijk in één woord of zin te classificeren is, dan is het tijd om subtypes (kind-entiteiten) te gebruiken.

Als een entiteit een eigen leven leidt, eigenschappen heeft die haar gedrag en uiterlijk beschrijven, en relaties heeft met andere objecten, dan kan je niet alleen een subtype maar ook een supertype (ouder entiteit) met vertrouwen gebruiken. 

Als je deze regel negeert, zullen andere ontwikkelaars in je model verward raken en de gegevens en regels voor het verzamelen ervan niet volledig begrijpen.

Conceptuele modellen worden gerealiseerd met behulp van logische modellen. Deze modellen fungeren als een routekaart voor het ontwerpen van de fysieke database. In het logische model worden zakelijke gegevensentiteiten geïdentificeerd, datatypen gedefinieerd, en sleutelregels vastgesteld die de relaties tussen de gegevens reguleren.

Vervolgens wordt het logische datamodel gekoppeld aan het van tevoren gekozen DBMS-platform (databasesysteem databasebeheer) en ontstaat het fysieke model. Dit beschrijft de fysieke opslagwijze van gegevens.

4. Gebruik geschikte datatypen

Databaseontwerp. Beste praktijken

Het toepassen van een onjuist datatype kan leiden tot minder nauwkeurige gegevens, moeilijkheden bij het samenvoegen van tabellen, het synchroniseren van eigenschappen en het toenemen van de bestandsgroottes.
Om de integriteit van de informatie te waarborgen, moet een attribuut alleen acceptabele datatypen bevatten. Als er een leeftijd in de database wordt ingevoerd, zorg er dan voor dat er gehele getallen met maximaal 3 cijfers in de kolom worden opgeslagen.

Creëer minimaal lege kolommen met een NULL-waarde. Als je alle kolommen als NULL creëert, is dat een ernstige fout. Maar als je een lege kolom nodig hebt voor een specifieke zakelijke functie wanneer de gegevens onbekend zijn of nog geen betekenis hebben, schroom dan niet om deze te creëren. We kunnen immers niet van tevoren de kolommen 'Datum van overlijden' of 'Datum van ontslag' invullen; we zijn geen voorspellers die maar wat in het wilde weg wijzen :-).

De meeste modelleringssoftware (ER/Studio, MySQL Workbench, SQL DBM, gliffy.com) voor gegevens maakt het mogelijk om prototypes van gegevensgebieden te creëren. Dit waarborgt niet alleen het juiste datatype, de logica van de applicatie en een goede prestaties, maar ook het verplichten van het instellen van waarden.

5. Geef de voorkeur aan natuurlijk

Databaseontwerp. Beste praktijken

Wanneer je beslist welke kolom in de tabel als sleutel moet worden gekozen, moet je altijd letten op welke velden door de gebruiker kunnen worden bewerkt. Kies deze nooit als sleutel - dat is een slechte keuze. Er kan van alles gebeuren, en je moet de uniciteit garanderen.

Het is het beste om een natuurlijke of zakelijke sleutel (natural key) te gebruiken. Dit heeft semantische waarde, zodat je duplicaten in de database voorkomt. 

Tenzij de zakelijke sleutel niet uniek is (naam, achternaam, functie) en in verschillende rijen van de tabel voorkomt of moet worden gewijzigd, is het raadzaam om een gegenereerde kunstmatige of surrogate sleutel (artificial key) als primaire sleutel aan te wijzen.

6. Normaliseer met mate

Databaseontwerp. Beste praktijken

Om gegevens effectief in de database te organiseren, is het noodzakelijk een aantal richtlijnen te volgen en de database te normaliseren. Er zijn vijf normale vormen waar je aan moet voldoen.
Met normalisatie voorkom je redundantie en waarborg je de integriteit van de gegevens die in de applicatie of op de website worden gebruikt.

Zoals altijd moet alles in balans zijn, zelfs normalisatie. Als er te veel tabellen met dezelfde unieke sleutels in de database staan, dan ben je te ver gegaan en heb je de database overmatig genormaliseerd. Overmatige normalisatie heeft een negatieve invloed op de databaseprestaties.

7. Test vroeg, test vaak

Databaseontwerp. Beste praktijken

Een testplan en adequaat testen moeten deel uitmaken van het databaseontwerp.

Het is het beste om de database te testen via Continuous Integration (continue integratie). Modelleer het scenario 'Een dag uit het leven van een database' en controleer of alle randgevallen worden afgehandeld, welke gebruikersinteracties waarschijnlijk zijn. Hoe eerder je bugs vindt, hoe meer tijd en geld je bespaart.

Dit zijn slechts zeven tips waarmee je een uitstekende database kunt ontwerpen qua prestaties en efficiëntie. Als je ze volgt, kun je de meeste hoofdpijn in de toekomst voorkomen. Deze tips zijn slechts de top van de ijsberg in databasemodellering. Er zijn talloze tricks. Welke gebruik jij?

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster