Wat is een database?
7.0 Werken met databases
Stel je bent bezig met het ontwikkelen van een webwinkel, waar haal je dan die producten vandaan? Een hele grote array, met daarin meerdere kleine arrays is natuurlijk niet de meest ideale oplossing. Het vergt een hoop tijd om zodoende je producten te kunnen onderhouden en zeg nou eens eerlijk, echt eenvoudig werkt dat met die arrays niet.
Gelukkig is het vrij eenvoudig om PHP te koppelen aan een database, dat kan Microsoft SQL, Oracle, PostgreSQL of MySQL zijn. Maar via ODBC kan je hem ook aan Microsoft Access hangen... van mijn part hang je hem aan IBM DB2 of DB++... de mogelijkheden zijn eindeloos. Een van de betere databases is zonder meer PostgreSQL maar de meest gebruikte database is toch wel MySQL. In mijn handleiding ga ik verder met MySQL maar eerst ga ik eens duidelijk proberen te maken wat een database is.
7.1. Wat is een database?
Een database word gebruikt om op een gestructureerde manier gegevens op te slaan zodat we daar vervolgens informatie uit kunnen halen. Je kunt een database vergelijken met een Microsoft Excel bestand. De database bestaat uit meerdere tabellen, de Excel werkbladen, met daarin meerdere kolommen. Vervolgens word daar de gegevens aan toegevoegd als een nieuwere rij.
Die kolommen met gegevens worden opgeslagen als een bepaald type, enkele van de meest gebruikte types: (moet nog uitleg bij)
- int,
- varchar
- text
- datetime
- enum & set
Waarom slaan we gegevens op in een database? Enkele voordelen (moet nog onderbouwd worden)
- Het is veiliger (Je kunt precies aangeven welke gebruiker welke rechten krijgt)
- Het is sneller
- Het is efficienter, met een goede database voorkom je dat gegevens dubbel opgeslagen worden (hoe schrijf je dat? Consistent toch?)
- eehmmm
Vervolgens wil ik een verwijzing maken naar http://www.phphulp.nl/php/tutorials/3/150/259/
Punt is, sommige dingen zijn zo standaard dat je er bijna niet meer bij nadenkt. Iemand nog suggesties?
Je kunt een vergelijking trekken met een soort van archiefkast?
Beter zou (denk ik) zijn:
Eeb database, (anders ook wel gegevensbank of databank genoemd) is een digitaal opgeslagen archief, ingericht met het oog op flexibele raadpleging en gebruik. Databases spelen een belangrijke rol voor het archiveren en actueel houden van gegevens bij onder meer de overheid, financiële instellingen en bedrijven, in de wetenschap, en worden op kleinere schaal ook privé gebruikt.
Een database is meer dan een gedigitaliseerd archief, een essentiële toevoeging is dat de gegevens in een database zodanig zijn opgeslagen dat deze gegevens optimaal doorzoekbaar zijn. Daarvoor worden gegevens bijvoorbeeld opgesplitst in (of uitgebreid met) onderdelen waarop (naar verwachting) gezocht zal worden, bijvoorbeeld persoonsgegevens kunnen worden opgesplitst in voornaam, tussenvoegsel, achternaam, adres, woonplaats, postcode, telefoonnummer etc. In het relationele model worden deze onderdelen in een aparte kolom gezet, maar wel in dezelfde rij, zodat het duidelijk is dat deze onderdelen bij elkaar horen. Soms is het praktisch om gegevens uit te breiden om de doorzoekbaarheid te vergroten, bijvoorbeeld door langere teksten in één of meerdere categorieën te zetten of er trefwoorden aan toe te kennen.
De doorzoekbaarheid van de gegevens wordt hier mee vergroot omdat bij zoekopdrachten als "toon alle personen met postcode tussen 3000 en 4000" alleen in het veld "postcode" hoeft te worden gezocht en alle andere gegevens niet geëvalueerd hoeven te worden. Er zijn nog meerdere methoden om de zoeksnelheid te vergroten.
(bron:wikipedia)
Jacco schreef op 25.10.2007 16:34:
Je kunt een vergelijking trekken met een soort van archiefkast?
Ja en nee.
Ja -> Het is inderdaad een manier om data te kunnen bewaren, maar -> Standaard is een database zelf NIET zo logisch geördend als een archiefkast. (database doorgaans op id)
Nee -> Zoeken in een archiefkast gaat maar op 1 type data. Of op naam (meestal) of op datum. Je hebt in een archiefkast niet op naam EN datum. Bovendien kan een database grote verschillende typen gegevens bevatten (gebruiker, winkelwagentje, rekeningen, e-mail enz.) waar dat bij archiefkasten of gescheiden is, of alles voor een user bij elkaar staat.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Of trek een vergelijking met bijv telekekst oid. Iets wat iedereen wel kent. Ook geordernd , maar wel unique records als pagina te bereiken
Wikipedia eens door en focus ook even op het begrip DBMS.
Een vergelijking met Excel vind ik niet op zijn plaats, je mist daarin de structuur, het enkelvoudig opslaan van een gegeven en een vraagtaal om de gegevens weer op te halen. Het is een totaal andere toepassing.
ENUM en SET zijn slechte voorbeelden van datatypes, dat zijn al specifieke MySQL-datatypes. Een DECIMAL of FLOAT lijken mij handiger om te vermelden.
Dat je in het artikel met MySQL aan de slag gaat, is een prima keuze, maar zorg er wel voor dat je geen brakke/onmogelijke SQL gaat gebruiken. Een kleine tip over STRICT-mode kan wellicht geen kwaad, maar zal voor een beginner hocus pocus zijn.
Ik zou zeggen, pluis Quote:
A DBMS is a complex set of software programs that controls the organization, storage, management, and retrieval of data in a database.
Een vergelijking met Excel vind ik niet op zijn plaats, je mist daarin de structuur, het enkelvoudig opslaan van een gegeven en een vraagtaal om de gegevens weer op te halen. Het is een totaal andere toepassing.
ENUM en SET zijn slechte voorbeelden van datatypes, dat zijn al specifieke MySQL-datatypes. Een DECIMAL of FLOAT lijken mij handiger om te vermelden.
Dat je in het artikel met MySQL aan de slag gaat, is een prima keuze, maar zorg er wel voor dat je geen brakke/onmogelijke SQL gaat gebruiken. Een kleine tip over STRICT-mode kan wellicht geen kwaad, maar zal voor een beginner hocus pocus zijn.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Ik zou voor de Wikipedia uitleg gaan in de post van Robert_Deiman. Die vergelijking met Excel is, wat mij betreft, onzinnig. Excel is een rekenblad. Dat er daarnaast ook enige database-achtige informatie in kan is eerder een (duur betaald) goedkoop aftreksel van een database.
ik wilde bijna al gaan typen omg n00b weet je wel wat google is? whehehe :P
Spiderpig schreef op 25.10.2007 16:57:
ik wilde bijna al gaan typen omg n00b weet je wel wat google is? whehehe :P
Ik zou het eigenlijk wel een slimme vraag vinden. Liever iemand die eerst het hele idee achter een database concept wil weten dan één of andere echte noob die zo maar wat doet en om de 2 seconden hier iets posts. Zouden meer mensen moet doen!
En Frank, ik wil ze gewoon nette query's aanleren. SELECT blabla FROM tabel WHERE blabla = 'test' dus ;). Ik heb voor MySQL gekozen omdat dat simpelweg meer gebruikt word op internet (kijk naar de voorbeeld scriptjes) en de meeste hosters bieden nog geen PostgreSQL.
Google geeft wel definities, maar hij wil dus weten of zijn uitleg geschikt zou zijn voor leken op dat gebied. Ik denk van niet, omdat het eigenlijk niet de goede uitleg is. Maar het moet op een manier uitlegbaar zijn zodat iedereen het snapt. De opmerking Google vind ik dus eigenlijk op dit topic niet van toepassing.
Arjan Kapteijn schreef op 25.10.2007 17:02:
Het archiefkasten verhaal vind ik zelf niet echt zo'n goed idee, het maakt de situatie er niet eenvoudiger op. Ik denk dat ik het gewoon niet moet gaan vergelijken. Alhoewel dat van teletext mij ook wel aanspreekt, maar of dat het duidelijker maakt.
En Frank, ik wil ze gewoon nette query's aanleren. SELECT blabla FROM tabel WHERE blabla = 'test' dus ;). Ik heb voor MySQL gekozen omdat dat simpelweg meer gebruikt word op internet (kijk naar de voorbeeld scriptjes) en de meeste hosters bieden nog geen PostgreSQL.
En Frank, ik wil ze gewoon nette query's aanleren. SELECT blabla FROM tabel WHERE blabla = 'test' dus ;). Ik heb voor MySQL gekozen omdat dat simpelweg meer gebruikt word op internet (kijk naar de voorbeeld scriptjes) en de meeste hosters bieden nog geen PostgreSQL.
Frank zegt toch ook dat op zich MySQL wel een goede keuze is ;) Is eigenlijk voor het eerst dat hij niet zegt dat je PostgreSQL moet gebruiken (of niet frank :P)
Maar kan je niet wat met de uitleg van Wikipedia? Eigenlijk is een database niets anders dan een grote verzameling gegevens, waar je door (indien een relationele database) heel gemakkelijk en snel in kan zoeken, en waarbij je geen redundante (dubbele) gegevens kan/ mag hebben, om ook de opslag zo klein mogelijk te houden.
Dus behalve dat je snel kan zoeken zijn het relatief ook kleinere bestandjes die je gebruikt voor je database (dubbele winst ;)) in vergelijking met bijvoorbeeld Excel, of nog erger een tekstbestand.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Vergis je er inderdaad niet in hoe moeilijk het is om mensen zonder voorkennis dit soort dingen uit te leggen :P.
maar google linkt naar pagina's waar op staan wat een database is, arjan is die pagina nou aan het maken :).. als hij dat niet doet kunnen wij ook niet vragen of hij weet wat google is
En wat ik al zei, MySQL is een logische keuze als je kijkt naar het aanbod bij de hostingproviders. Ik ben alleen altijd wat bang voor de meest vreemde GROUP BY-queries en de MyISAM-engine die 100% onbetrouwbaar is. Daar zul je in 99,99% van de gevallen geen last van hebben, maar die ene keer dat je er wel last van hebt...
Please, please, please, een klein linkje naar de pgSQL-installer? ;)
Ik laat het 'een van de betere..' in ieder geval staan en een linkje is geen probleem ;).
ik dacht al: waaroms schrijft die n00b met een hoofdletter en ?, doen n00bs toch nooit.. xD
Het is eenvoudiger om van pgSQL naar MySQL over te stappen, dan andersom. In pgSQL wordt je gedwongen om correcte SQL te gebruiken en dit zal in 99 van de 100 gevallen ook in andere databases werken. Waaronder dus MySQL. (uitgezonderd de specifieke functies)
Ook het gebruik van pipes || om 2 waardes aanelkaar te plakken, werkt in MySQL, mits je de configuratie goed hebt ingesteld.
Wanneer je van pgSQL overstapt op MySQL, hoef je niks af te leren, alleen wat bij te leren (specifieke functies). Andersom zul je een hoop moeten afleren, dit geldt ook voor de overstap van MySQL naar vele andere databases. MySQL staat dingen toe die helemaal niet kunnen.
Een cursus die pgSQL gebruikt, is eenvoudig toe te passen op MySQL. In PHP zul je alleen wel de gigantische stap van mysql_functie_naam() naar pg_functie_naam() moeten maken... Tenzij je PDO gebruikt.
Succes!
Edit: Vergeet dit artikel niet wanneer je de cursus voor MySQL schrijft. Dan kun je deze valkuilen proberen te voorkomen.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Verder lijkt het mij belangrijk te kijken naar de doelgroep bij het schrijven van je verhaal. Bedenk dat er waarschijnlijk meer applicaties zijn die een database gebruiken dan websites. Als je het verhaal neutraal en hoogwaardig wil houden (m.a.w. als je ze iets universeels wil leren), dan kun je eigenlijk niet voor MySQL kiezen. Het ligt er dus een beetje aan wat je doel en doelgroep is.
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
Uiteraard kan een cd niet in een boekenkast of andersom, ja soms past het wel maar je vind het nooit terug( datatypes, constraints)
De bibliothecaris weet echter nog meer, hij weet ook welke boeken "bij elkaar" horen ( de koper van dit produkt kocht ook.... Oftewel een beetje het Foreign Key idee)
En de bibliothecaris is erg zuinig op zijn verzamelig en zorgt dat deze niet in de war raakt (datacorruptie voorkomen door constraints)
En dan pas ermee aan het werk want daar leer je het het beste van
zo uit. Dat gehannes met arrays is natuurlijk niet handig dus de bedoeling is dat ze die producten gewoon netjes uit een tabel trekken. Wellicht zelfs een stapje verder en een formuliertje om producten toe te voegen, wijzigen en te verwijderen... maar dat is een beetje afhankelijk van persoon tot persoon.
Het zijn overigens op 2 of 3 man na jongens die 6 weken geleden nog geen regel PHP hebben geschreven.
Het doel is dat ze begrijpen wat een database is en er uiteindelijk ook eenvoudige dingen mee kunnen doen. Ze zijn op dit moment bezig met een webwinkel, dat ziet er dan ongeveer Het zijn overigens op 2 of 3 man na jongens die 6 weken geleden nog geen regel PHP hebben geschreven.
Jongens van welk niveau & leeftijd? Ik denk dat MySQL wel een redelijke keuze is in dit geval als je let op de dingen die Frank zei.
4e jaars HBO'ers (Minor e-business), meeste dus ergens rond de 20~25.