Voor web toepassingen is het dan wel weer handig. Ik weet niet de precieze voordelen/nadelen/betekenis van:transacties, stored procedures, triggers, views, ...., zou iem. dat kunnen uitleggen? Ik weet alleen dat je er een db mee kan maken. (les gehad in php), Het is ook wel makkelijk met kleine- =>middel- grote databases.
Even snel dus een goed boek over databases is beter, preciezer en duidelijker.
Transacties: Stel je bent aan het boekhouden.
Dus aanschaf computer € 500,-
Aan kas € 500,-
Nu is de database lekker bezig en maakt record 1 aan. Het tweede record wordt echter niet aangemaakt (gebruiker voert het niet in, computer van gebruiker crasht enz, enz.)
Zonder transacties is je boekhouding niet meer correct terwijl met transacties automatisch het eerste record weer wordt verwijderd. Transacties zijn dus vrij belangrijk
Triggers. Stel ik boek in mijn boekhouding € 500,- af van de kas (=contant geld) Echter ik heb helemaal geen contant geld in kas. Met een trigger kan ik nu een routine schrijven die elke keer als ik de database opdracht geef het saldo van het kasgeldrecord in mijn boekhouding te verlagen, controleert of dit mogelijk is. Ook kun je met triggers altijd unieke serienummers genereren. Ook vrij belangrijk.
Serienummers zonder trigger en transactie.
Probleem 1
- Gebruiker 1 maakt een record aan maar vult geen serienummer in. OOPS. Met trigger: trigger herkend nullveld en vult automatisch het nummer in (of geeft een foutmelding of.....)
Probleem 2
- Gebruiker 1 maakt een record aan en leest het serienummer uit een tabel.
- Gebruiker 2 maakt een record aan en leest het serienummer uit een tabel (dit is dus HETZELFDE serienummer)
- Gebruiker 1 verhoogt het serienummer in de tabel
- Gebruiker 2 verhoogt het serienummer in de tabel
- gebruiker 1 Post zijn record
- Gebruiker 2 post zijn Record.
OOPS serienummer is niet uniek.
Met transacties gebruiker 2 krijgt een foutmelding zodra hij het serienummer verhoogt Met sequences (= een reeks unieke nummers) kun je ervoor zorgen dat het onmogelijk is om twee dezelfde nummers te gebruiken.
Stored procedure. Voer complexe code uit op de database server in plaats van op de clientmachine.
Voorbeeld, geef iedere werknemer die tenminste leiding geeft aan 5 andere werknemers én werkzaam is op de IT afdeling, niet meer dan 3 dagen ziek geweest is en een voornaam heeft die begint met een "A" of een achternaam die eindigt op "berg" een bonus van 10% van zijn jaar salaris.
Zonder stored procedures gaat dit waarschijnlijk een hele hoop netwerkverkeer veroorzaken. Dit zijn heerlijke geneste SQL statements die ofwel een complex SQL statement benodigen ofwel door code op de client verwerkt moet worden. Bij stored procedures blijft alle code en data op de server en is er dus geen sprake van veel netwerk verkeer (in dit geval enkel een OK als de routine klaar is)
Views maak een beeld (=view) van een veel gebruikte query zodat de database server de query alvast kan optimaliseren voor het herhaalde gebruik (=sneller)
VB SELECT * from LINEITEMS where LINEITEM.FACTUURNUMMER=FACTUUR.FACTUURNUMMER
voor de items die op een bepaalde factuur staan.
Daarnaast hebben triggers en stored procedures het voordeel dat de code op de server staat en dus veranderd kan worden zonder de (honderden, duizenden of nog meer) clients te moeten updaten.
De conclusie is dan ook dat je zonder deze dingen niet eens aan een serieuze multi user omgeving moet gaan denken.
MySQL is hier traditioneel heel zwak in vandaar dat het weinig kans maakt om als backend voor "serieuze" toepassingen gebruikt te worden.
Maar alles is relatief en MySQL wordt ook verbeterd dus misschien gaat MySQL wel eens een serieuze contender worden.