Samenvatting Hoofdstuk 7 Database

advertisement
Samenvatting Hoofdstuk 7 Database
7.1 Relationele Database
Gegevensgeoriënteerde machines
 Grote hoeveelheden gegevens beheren
 Bewerkingen (=toevoegen/veranderen/verwijderen/raadplegen)
o Programma= database management system (dbms)
 Maakt gebruikt van vraagtaal Structured Query Language (SQL)
 = taal → communicatie in een database
o SQL is meest gebruikte vraagtaal
o Bijv. MS Access gebruikt SQL maar kan ook andere functie
uitvoeren hierom is SQL in MS Access deels aangepast.
o Programma + gegevens= database system
o Ordenen
 Vroeger: Hiërarchisch model (vb met personen)
 Één-op-één relatie= één persoon die hoger in hiërarchie staat één
persoon onder zich heeft
 Één-op-veel relatie= één persoon die hoger in hiërarchie staat
meerdere personen onder zich heeft
 Veel-op-veel relatie= veel personen die hoger in hiërarchie staan die
meerdere personen onder zich hebben

 Voordeel: goed voor simpele databases
 Nadeel: voor complexere databases wordt het een chaos
1970: Relationeel model
 Geïntroduceerd → wiskundige E.F. Codd (in dienst bij IBM)
o In artikel: ‘A Relational Model of Data for Shared Data’
 Relatie tussen verschillende kolommen → hierom naam:
“relationeel”
 Heading= 1e rij v/d tabel. Staan de veldnamen
 Record= 1 rij
 Sleutel= rij die door unieke kolomna(a)m(en) kan worden opgezocht


Voordeel: Model is gebaseerd op een wiskundige theorie waardoor
het heel logisch is.
Nadeel:
o Redundantie= het meerdere malen opnemen van dezelfde
informatie.
o inconsistentie= wanneer de gegevens niet meer kloppen in
een database.
7.2 Informatiemodellering
Ofwel → stappenplan van invoeren informatiesystemen
Automatisering begon ’70 grote organisaties en ’80 voor kleinere organisaties (personal computer)
Doelgerichte totstandkoming → informatiesysteem (o.l.v. projectteam)
1.
2.
3.
4.
Formuleren informatiebehoeften + beschrijving bruikbaarheid → informatie
Schetsen v/d functie om zo in informatiebehoeften te kunnen voorzien
In praktijk brengen (computer materiaal aangeschaft/geschreven)
Evaluatie
7.3 SQL (Structured Query Language)
Strokendiagram= tabellen verschijnen als stroken met een veldnaam
 Een kolom kan verbanden met andere tabellen leggen. Zie onderstaand vb.
(wanneer een teamcode, score of boete moet worden geraadpleegd wordt gebruikt gemaakt
van het lidnr. in tabel “LEDEN”)
1
SQL zoekopdrachten
 Opbouw:
SELECT
FROM
ORDER BY
WHERE
-
-
Hier selecteer je; wat je wil laten zien (bijv.
naam/MIN(geboortedatum)/MAX(gewonnen)/SUM(gewonnen)
/etc.
Wanneer je alle VELDNAMEN wil laten zien uit één tabel
gebruik dan: *
Hier geef je weer; waar je deze informatie vandaan wilt halen
o Voorbeeld:
SELECT DISTINCT naam
FROM leden
ORDER BY naam DESC;
DISTINCT zorgt
ervoor dat dubbele
rijen worden
vermeden
1
Hier geef je aan op welke veldnaam je wil ordenen (standaard doet
SQL dit van 1 t/m Z. (ASC= oplopend, DESC= aflopend)
Hiermee geef je aan wat je in de kolom wil hebben
Sluit AAN HET EIND
altijd af met ;
Bron: Enigma informatieboek Databases Hoofdstuk 7.3.1.
7.4 Samengestelde voorwaarden


Wanneer je bij WHERE meerdere voorwaarden wil ingeven
o AND (operator)
Dan worden alleen de rijen waarvoor beide zoekresultaten gelden getoond
o OR (operator)
Dan worden de rijen waarvoor één v/d zoekresultaten telt getoond
LET OP! Wanneer je AND en OR in een Query hebt staan geld AND als een
wiskundige x en OR als een +. Je voert dus eerst AND uit en daarna pas OR.
o IN (operator)
Zelfde als OR alleen dan eenvoudiger
Wanneer je bij WHERE voorwaarden wilt specificeren
o LIKE (operator)
Bijv.:
SELECT naam
FROM leden
WHERE naam LIKE ‘J*’;
Alle achternamen die met een J beginnen worden nu getoond
o NOT (operator)
Als je bepaalde veldnamen wilt uitsluiten
SELECT woonplaats
FROM leden
WHERE NOT woonplaats = ‘Den Bosch’;
Of
SELECT woonplaats
FROM leden
WHERE woonplaats <> ‘Den Bosch’;
o IS NULL (operator)
Als je velden wilt tonen waarin niks staat
SELECT naam
FROM leden
WHERE naam IS NULL
7.5 Combineren van tabellen
Koppelen van tabellen= join in het Engels
Dit gebeurt in de WHERE stap. Hier stel je de veldnaam die in beide tabellen overeenkomt gelijk bijv.
het lidnr.: WHERE leden.lidnr = scores.lidnr
7.6 Functies
AVG
Berekent gemiddelde
COUNT
Telt aantal waarden/rijen in een kolom/tabel
MAX
Bepaald grootste waarde
MIN
Bepaald kleinste waarde
SUM
Bepaald som van getallen
AS (component)
 De veldnaam wordt standaard na een optelling (bijv.) Expr1000, deze kun je veranderen door
AS en daarachter de nieuwe veldnaam toe te voegen
Vb.: SELECT SUM(gewonnen) AS totaal_gewonnen
GROUP BY betekend dat je de verschillende waarde groepeert wanneer je bijvoorbeeld een
hoeveelheid wilt weten van het aantal vrouwen en mannen in een stad. Dan groepeer je dus de
categorie mannen en vrouwen. Dan krijg je dus 2 rijen Den Bosch met 1 rij mannen en het aantal en 1
rij vrouwen en het aantal.
LET OP! GROUP BY dient uitsluitend kolomnamen uit SELECT te bevatten
HAVING of WHERE
HAVING gebruik je bij groepen en WHERE bij rijen die op zichzelf staan.
Een ander verschil is dat je in HAVING wel een functie mag gebruiken en in WHERE niet
7.8 Subquery
Subquery = subselect
Vb.
 SELECT voornaam, naam
FROM leden
WHERE lidnr IN
(SELECT lidnr
FROM scores
1: Zo ziet het eruit in Access
WHERE gewonnen =
(SELECT MAX(gewonnen)
FROM scores));
Expressie= uitdrukking. In dit geval een uitdrukking als veldnaam of functie.
De Select in een subquery mag maar 1 “expressie” bevatten
7.9

Gegevens toevoegen
INSERT INTO leden
VALUE
-
Hier geef je de waarde op volgorde van kolommen. Bijv.
(1, ‘Willem’, ‘Hoek’, etc.)
VALUE gegevens worden tussen haakjes geschreven
!Alle numerieke gegevens worden zonder
aanhalingstekens genoteerd!

Gegevens verwijderen
DELETE FROM leden
WHERE lidnr = 1;
o LET OP! Wanneer je de regel met WHERE vergeet worden alle rijen gewist
o DROP TABLE leden; wordt de gehele tabel leden gewist

Gegevens wijzigen
UPDATE leden
SET adres = ‘hoevenlaan 3’
WHERE lidnr= 1;
Unieke index
→ Door een unieke index te maken voorkom je dubbele waarden en wordt de tabel dus efficiënter
gebruikt
CREATE UNIQUE INDEX lidnr
ON
leden (lidnr);
Download