Naar de inhoud

Programmeren

Databases: al je gegevens op een vaste plek

Een database is de plek waar een systeem zijn gegevens bewaart: je voorraad, je bestellingen, je klanten en je facturen. Elk systeem met bestellingen, klanten of facturen dat wij bouwen, heeft er een. Op deze pagina lees je wat een database is, waarom het meer is dan een grote Excel-lijst, en hoe wij ermee werken in onze eigen projecten. Je hebt er geen technische kennis voor nodig. Deze pagina hoort bij onze uitleg over programmeren.

Wat is een database?

Denk aan een archiefkast op kantoor. Elke la heeft een eigen onderwerp: klanten, bestellingen, facturen. In elke la zitten mappen die er allemaal hetzelfde uitzien. Op elk formulier staan dezelfde vakjes, in dezelfde volgorde. En op de kast hangt een kaartje met de regels. Een factuurnummer komt maar één keer voor. Een bestelregel hoort bij een bestelling die ook echt in de kast zit.

Zo werkt een database ook. Een la heet daar een tabel. Een map is een rij. Een vakje op het formulier is een kolom. De regels op het kaartje schrijven we vooraf op, en de database houdt zich eraan. Probeer je een tweede factuur met hetzelfde nummer op te slaan, dan weigert hij dat.

Vergelijk dat met losse Excel-lijsten. Die zijn handig, maar iedereen kan overal alles typen. De ene keer staat een prijs in euro's, de andere keer met een komma te veel. Er ontstaan kopieën, zoals "voorraad-definitief-2". En werken twee mensen tegelijk in hetzelfde bestand, dan wint wie het laatst opslaat. Een database is de goed geordende archiefkast. Excel is de stapel losse lijstjes op het bureau. Meer over die overstap lees je in van Excel naar je eigen systeem.

De database zelf zie je niet. Je werkt in een scherm in de browser: een lijst met bestellingen, een voorraadoverzicht, een knop "factuur maken". Achter dat scherm haalt het programma de gegevens uit de database en zet het nieuwe gegevens er weer in.

Waar wij het voor gebruiken

Onze systemen met bestellingen, facturen of klanten gebruiken SQLite. Dat is een database die als één bestand op de server staat, naast het programma. Er hoeft geen aparte databaseserver bij te draaien. SQLite is gratis en bestaat al lang. Hij zit ook in veel telefoons en browsers.

Zo gebruiken we hem in ons eigen werk:

  • Voorraadsysteem.com. Voorraad, bestellingen van Shopify en bol, verzendlabels en facturen. Het staat in één database, verdeeld over bijna zestig tabellen. Elke klant heeft een eigen omgeving met een eigen database. Zo blijven de gegevens van verschillende bedrijven gescheiden.
  • De administratie van Broer Collective. Onze eigen klanten, offertes, facturen en abonnementen. Factuurnummers lopen per jaar door, en de database laat geen twee documenten met hetzelfde nummer toe.
  • PandInfo. De rapporten over een adres, de bestellingen en de betalingen. Een rapport bewaren we zoals de klant het zag, zodat het later precies zo terug te zien is. De bewaartermijnen staan in het programma zelf. Een gratis voorproef wordt na 90 dagen anoniem gemaakt. Een bestelling blijft zeven jaar staan, vanwege de bewaarplicht. Het opruimen gaat vanzelf.
  • Lichthoek. De webshop bewaart zijn producten, de bestellingen en een wachtrij. Een betaalde bestelling gaat eerst in die wachtrij en daarna naar het voorraadsysteem. Lukt dat even niet, dan blijft hij in de wachtrij staan en probeert het programma het later opnieuw. Bedragen staan als hele centen in de database. Zo ontstaan er geen afrondingsverschillen.
  • Nummerbordcheck.nl. De bezoekcijfers, en een tussenopslag (in het Engels: cache) voor tellingen van de RDW. Een antwoord dat we al hebben, hoeven we dan een dag lang niet opnieuw te vragen. Gegevens over bezoeken gaan na 90 dagen vanzelf weg. Alleen de totalen per dag blijven langer staan.

Zo bouwen we het

  • Eerst de indeling. Voordat er gegevens in komen, schrijven we op welke tabellen er zijn en welke regels gelden. Bijvoorbeeld: een bestelregel hoort bij een bestaande bestelling, en een ordernummer komt één keer voor.
  • Meegroeien zonder opnieuw te beginnen. Komt er later een vakje bij, dan zet het programma die kolom er bij het starten zelf bij. Wat er al in staat, blijft staan.
  • Gegevens los van de code. De database staat in een eigen map op de server, apart van het programma. Bij een update vervangen we alleen het programma, de map met gegevens blijft staan.
  • Testen met verzonnen gegevens. We testen met verzonnen gegevens in dezelfde vorm als die van jou. Met de echte gegevens kijkt je broer zelf.
  • De AI-hulp ziet de opbouw, niet de inhoud. We bouwen met hulp van AI. Die mag de code en de indeling van de database zien, maar niet de gegevens die jij erin zet.
  • Pas live na controle. Elke wijziging gaat eerst door onze tests. Daarna leest een aparte AI-hulp alles nog eens na, en live gaat het pas na het akkoord van je broer.

Lezen en schrijven tegelijk

Bij Voorraadsysteem.com, PandInfo, Lichthoek en Nummerbordcheck.nl staat SQLite in de WAL-stand. WAL staat voor "write-ahead log": een logboek waar nieuwe wijzigingen eerst in komen. Het voordeel is dat lezen en schrijven elkaar minder in de weg zitten. Iemand kan een lijst bekijken terwijl er net een bestelling binnenkomt. Moet een tweede schrijver wachten, dan wacht hij even in plaats van meteen een foutmelding te geven. In Voorraadsysteem.com wacht hij tot 15 seconden. Daar worden meerdere verzendlabels tegelijk gemaakt.

Een kopie die klopt

Een database kun je niet zomaar kopiëren terwijl het programma erin schrijft. Dan kan de kopie half zijn. Daarom maken we elke dag een kopie met de backup-functie van SQLite zelf. Die maakt een nette momentopname, ook als het programma doorwerkt.

Waarom SQLite vaak genoeg is

Voor een mkb-bedrijf is SQLite vaak een goede keuze. Een paar redenen:

  • Eén bestand. Makkelijk te kopiëren en te verhuizen.
  • Snel. Het programma leest de gegevens direct van de schijf van dezelfde server. Er zit geen netwerk tussen.
  • Weinig onderhoud. Er is geen aparte databaseserver die bijgewerkt, beveiligd en bewaakt moet worden. Minder onderdelen betekent minder dat stuk kan gaan.
  • Groot genoeg. Tienduizenden bestellingen of facturen zijn voor SQLite weinig.

Er is één grens. SQLite laat één schrijver tegelijk toe. Lezen kan door veel mensen tegelijk, schrijven gaat om de beurt. Bij een webshop, een kassa of een administratie gaat dat zo snel dat je er niets van merkt. Maar zijn er heel veel mensen die tegelijk en de hele tijd iets opslaan? Of moeten meerdere servers dezelfde gegevens delen? Dan is een databaseserver, zoals PostgreSQL, een betere keuze. Dat bespreken we vooraf, als we je systeem ontwerpen.

SQLite past goedKies iets anders
Een systeem op één serverMeerdere servers die dezelfde gegevens delen
Veel lezen, af en toe schrijvenHeel veel mensen die tegelijk en steeds opslaan
Een webshop, kassa, administratie of rapportEen platform met heel veel gebruikers tegelijk

Wat jij ervan merkt

  • Eén versie van je gegevens. Wat je in je systeem bijwerkt, staat binnen een minuut ook in je webshop. Er zwerven geen oude lijstjes rond.
  • Snelle schermen. Een lijst met bestellingen of een voorraadoverzicht staat er meteen.
  • Overzichten uit dezelfde bron. Een factuur, een rapport of een pdf maken we uit de gegevens in de database. Lees meer bij rapporten en pdf's.
  • Wij houden het in de gaten. We kijken of alles draait, en grijpen in als het nodig is.
  • Je gegevens blijven in Europa. Onze server staat in een datacenter binnen de EU.

Wat het kost

Een database is geen los product. Hij zit in elk systeem dat we bouwen. Je betaalt dus voor het systeem, niet apart voor de database. Een paar prijzen om mee te rekenen:

  • Gegevens overzetten: vanaf € 350. Je lijsten uit Excel of je oude systeem, opgeschoond en in de nieuwe database.
  • Een scherm of onderdeel op maat: vanaf € 650. Bijvoorbeeld een nieuw overzicht op gegevens die je al hebt.

Een systeem met een database moet blijven draaien, dus het zit in een pakket. Kleine broer is vanaf € 19 per maand, plus eenmalig bouwen vanaf € 495. Grote broer is vanaf € 68 per maand, zonder opstartkosten. Hosting, controles en de dagelijkse kopie zitten erin. Alle bedragen zijn exclusief btw. Je krijgt eerst een offerte. Alles op een rij staat bij de prijzen.

Wat we eerder bouwden

  • Voorraadsysteem.com. Voorraad, bestellingen, labels en facturen, voor elke klant in een eigen omgeving met een eigen database.
  • PandInfo. Rapporten over een adres, met bestellingen en betalingen, en bewaartermijnen die het programma zelf bijhoudt.
  • Lichthoek. Een webshop met ruim 3.800 producten, waar bestellingen via een wachtrij naar het voorraadsysteem gaan.
  • Nummerbordcheck.nl. Een gratis kentekencheck, met bezoekcijfers die na 90 dagen vanzelf verdwijnen.

Vaak gevraagd

Moet ik zelf iets met de database doen?

Nee. Je werkt in de schermen van je systeem. De database zit daarachter, en die regelen wij.

Kan ik mijn Excel-lijsten meenemen?

Ja. We zetten ze over naar de nieuwe database. Dubbele regels gaan eruit en alles komt in dezelfde vorm. Jij kijkt daarna na of alles klopt. Dat kost vanaf € 350.

Wie kan in mijn database kijken?

Het programma zelf, en op de server de beheerder. De AI-hulp waarmee we bouwen, krijgt jouw gegevens niet te zien. De server staat binnen de EU.

Wat als er iets misgaat met de database?

Dan kijken we eerst wat er aan de hand is. Elke dag maken we een kopie. Wat na de laatste kopie is ingevoerd, zit daar niet in.

Is SQLite niet te klein voor mijn bedrijf?

Voor de meeste mkb-bedrijven niet. Onze eigen systemen, van voorraad tot administratie, draaien erop. Verwacht je heel veel mensen die tegelijk opslaan, of meerdere servers, dan kiezen we samen iets anders. Dat bespreken we voordat we gaan bouwen.

Werk

Gemaakt door je broer

voorraadsysteem.com
Homepage van Voorraadsysteem.com op een computer: voorraad, kassa en koppelingen.
Voorraadsysteem.com op een telefoon.

002 · eigen software

Voorraad­systeem.com

Onze eigen software: voorraad, bestellingen, verzending, facturen en kassa in één omgeving, gekoppeld aan Shopify, bol en MyParcel. De basis onder alles wat we voor klanten bouwen.

  • Eigen software
  • Koppelingen
  • Kassa
voorraadsysteem.com ↗ Lees het verhaal
pandinfo.nl
De voorpagina van pandinfo.nl: een adres invoeren, zoeken op de kaart, en hoe het werkt.
De voorpagina van pandinfo.nl op een telefoon.

003 · webapp

PandInfo

Typ een adres en PandInfo zet binnen een paar seconden op een rij wat de overheid over dat pand weet: bouwjaar, oppervlakte, energielabel, bestemmingsplan, monument, bodem, funderingsrisico, verkoopprijzen en de buurt. In gewone taal, met de bron bij elk cijfer, en ook als pdf. Achter de schermen vraagt het tegelijk meer dan dertig openbare bronnen op, van het Kadaster tot de Omgevingswet.

  • Open overheidsdata
  • Koppelingen
  • Webapp
  • PDF-rapport
  • Omgevingswet
pandinfo.nl ↗ Lees het verhaal
nummerbordcheck.nl
De voorpagina van nummerbordcheck.nl: een gele kentekenplaat als invoerveld, een voorbeeldkaart met stoplichten, en wat je ziet.
De voorpagina van nummerbordcheck.nl op een telefoon.

004 · webapp

Nummerbord­check.nl

Kentekencheck: vul een Nederlands kenteken in en zie in gewone taal wat de RDW openbaar weet, met stoplichten per punt, de hele keuringsgeschiedenis, terugroepacties en leuke feitjes. Van idee tot live in twee dagen.

  • Open data RDW
  • Webapp
  • Eigen huisstijl
  • Twee dagen
nummerbordcheck.nl ↗ Lees het verhaal
lichthoek.nl
De voorpagina van lichthoek.nl: foto- en videoapparatuur, populaire producten, categorieën, direct leverbaar en merken.
De voorpagina van lichthoek.nl op een telefoon.

005 · webshop

Lichthoek

Een webshop voor foto- en videoapparatuur, fotolijsten en fotopapier, met ruim 3.800 producten. Producten, prijzen en voorraad komen vanzelf uit het voorraadsysteem, en een bestelling gaat vanzelf terug, met de track-and-trace naar de klant. Gebouwd en live op één dag.

  • Webshop
  • 3.800 producten
  • Gekoppeld aan voorraad
  • Eigen server
lichthoek.nl ↗ Lees het verhaal

Meer over programmeren

  • JavaScript

    JavaScript is de taal die in de browser van je bezoeker draait. Waar wij het voor gebruiken, en waarom we er zuinig mee zijn.

  • API's

    Wat is een API, wat is een sleutel en wat gebeurt er als een API even niet werkt? Uitgelegd in gewone taal, met voorbeelden uit ons eigen werk.

  • Rapporten en pdf's

    Facturen, offertes, picklijsten of een rapport over een pand: wij bouwen programma's die uit je gegevens vanzelf een nette pdf maken.

Contact

Bel je broer.

Liever eerst mailen? Ook prima. Je broer leest alles, en belt terug als het ingewikkeld wordt.

Eerst weten wat het kost?Alle prijzen staan op de site, vanaf € 19 per maand.