Samenvatting/examenleidraad HSB.1
HSB.1 Examenwijzer
(hoort bij het boek van E3 ICT- I-Tracks Advanced)
Hoofdstuk 1: Samenhang informatiesystemen, systeemmodellen en SQL
Definitie project: Een project is een tijdelijk multidisciplinair samenwerkingsverband gericht op het realiseren van een afgesproken resultaat (blz 10)
Veelal is er sprake van een project als de activiteiten die noodzakelijk zijn om het resultaat te bereiken:
- Van tijdelijke aard zijn
- Een eenmalig karakter hebben
- Afdelingsoverschrijdend zijn
- Omvangrijk en complex zijn. (blz 9)
Definitie systeemontwikkelaanpak: Een systeemontwikkelaanpak is het productieproces waarin ICT-deskundigen en materiedeskundigen (de bedrijfsvoering) gericht samenwerken met als doen: de realisatie van een informatiesysteem. (blz 18)
Lineair, incrementeel en evolutionair (blz 19)
Kenmerken MAD, de methode:
- Hanteren van modelmatige specificaties en hergebruik van modellen
- Toepassen van iteratieve en incrementele systeemontwikkeling
- Actieve betrokkenheid van de toekomstige gebruikers
- Optimaal gebruikmaken van prototypes
- Effectief gebruik maken van tools (ontwikkelgeneratoren) (blz 24)
Iteratieve systeemontwikkeling volgens de MAD aanpak: plaatje blz 25)
JAD: Joint Application Development (blz 26)
Projectbeheersing richt zich op de volgende kenmerken (MOSQUITO)
- MOney (blz 33)
- Safety (blz 34)
- QUality (blz 34-35)
- Information (blz 35)
- Time and resources (blz 35-36)
- Organization (blz 37)
Informatiemodel:
- Informatiestructuurmodel (ERD)
- Informatieregels
- identificatieregels
- verplichte attributen
- validatieregels
- afhankelijkheidsregels
- afleidingsregels
- transitieregels (blz 40)
Coupling en binding (blz 43)
Soorten beheer en onderhoud:
- Correctief onderhoud
- Perfectief onderhoud
- Adaptief onderhoud (blz 46)
Definitie model:
Een model is een beperkte vereenvoudigde afbeelding van de werkelijkheid vanuit een bepaald gezichtspunt voor een bepaalde doelgroep (blz 47)
Doorgaande resultaatlijn en doorgaande communicatielijn,
De rol van documentatie bij het systeemontwikkeltraject en
Modellenstrijd(blz 49)
Samenhang tussen de MAD modellen (blz 51 en verder )
Projectfase | Ontwikkelfase | Ontwikkelactiviteit | Ontwikkelproduct |
Opstarten en initiëren project | |||
Beheersen MAD-ontwikkelcyclus: - definieer project | Bedrijfsanalyse | Opstellen bedrijfsactiviteiten model | Bedrijfsactiviteiten model |
Opstellen informatiemodel | Informatiemodel | ||
Systeemspecificatie | Afbakening systeemgrenzen | Contextdiagram | |
Beheersen MAD-ontwikkelcyclus: - definieer increment | Definitie incrementen | Gedefinieerde incrementen | |
Definitie gegevensstructuur increment | Gegevensmodel | ||
Definitie gedrag increment | Functiemodel | ||
Definitie userinterface increment | Userinterface model | ||
Beheersen MAD-ontwikkelcyclus: - realisatie | Systeembouw | Ontwikkel increment | Ontwikkeld systeemonderdeel |
Beheersen MAD-ontwikkelcyclus: - installate | Installeer increment | Geïnstalleerd systeemonderdeel | |
Implementatie informatiesysteem | |||
Beheer en onderhoud | |||
Afsluiting project |
Templates en applicatiegeneratie (blz 56 en verder)
Samenvatting HFD 1 (blz 60-61)
Hoofdstuk 2: Bedrijfsactiviteitenmodel
Functies van het bedrijfsactiviteitenmodel:
- Uitgangspunt voor het vaststellen van de systeemgrenzen
- Uitgangspunt voor het opstellen van een globaal informatiemodel
- Uitgangspunt voor het vaststellen van de informatieregels
- Uitgangspunt voor het opstellen en vaststellen van de userviews
Componenten A-schema:
- Activiteit
- Input-stroom
- Control-stroom
- Output-stroom
- (Mechanism stroom .. niet in actimod..) (blz 70-71)
Toepassingsmogelijkheden A-schema’s:
- Het op gestructureerde wijze opdelen van de complexe werkelijkheid door middel van functionele decompositie van activiteiten
- Het zodanig vastleggen van de bedrijfsactiviteiten in schema dat hierover communicatie mogelijk is
- Het creëren van een eenduidige weergave van het beschouwingsgebied
- Het opstellen van documentatie
Conventies bij het opstellen van een A-schema:
Activiteiten:
- Activiteiten hebben een naam en een nummer. De naam wordt altijd uitvoergericht gekozen en bestaat uit een werkwoord eventueel gevolgd door een zelfstandig naamwoord. De naam duidt de verwerking aan die door de activiteit wordt uitgevoerd.
- Iedere activeit heeft minimaal één invoerstroom en één uitvoerstroom.
Informatiestromen:
1. Een informatiestroom heeft een naam. Deze naam is een zelfstandig naamwoord en geeft de inhoud van de informatiestroom weer.
2. Level balancing: bij toepassing van decompositie waardoor een lager abstractie niveau ontstaat, moet op het lagere niveau het aantal inkomende en uitgaande informatiestromen gelijk zijn aan het hogere abstractieniveau. (eventueel braching of joining van informatiestromen) (blz 76)
- Te gebruiken syntax:
- Activiteit (blz 73)
- Informatiestroom (blz 73)
- Materiestroom (blz 73)
- Inputstroom (blz 73)
- Outputstroom (blz 73)
- Controlstroom (blz 73)
- Branching/splitting (blz 76)
- Joinint (blz 76)
- Realtime stroom (geeft ten allen tijde de actuele informatie (blz 77)
- Tunneling (stroom die op hoger niveau niet relevant is) (blz 77)
- Voorwaardelijke stroom (blz 78)
- Parallele verwerking (blz 78)
- Invoer feedback (blz 79)
- Control feedback (blz 80)
Opstellen bedrijfsactiviteitenmodel:
- Verzamel de benodigde informatie (blz 81)
- Bepaal het doel van het model (blz 81)
- Bepaal het gezichtspunt van het model (blz 82)
- Maak een A0 diagram (blz 82)
- Maak een A-0 diagram (blz 82-83)
- Maak uitgaande van het A0 diagram de benodigde decomposities (blz 83-84)
- Review en controle (blz 84).
Bottom/up aanpak voor het opstellen van een A-schema: (blz 86 en verder)
- Maak een datalijst
- Maak een activiteitenlijst
- Leg associaties tussen de datalijst en de activiteitenlijst
- Transformeer de datalijst en activiteitenlijst naar een 1ste concept A-schema
- Verfijn het A-schema
- Controleer het A-schema
Check de diagrammen op: (blz 85)
- Controleer of alle activiteiten passen binnen het doel en het gezichtspunt van het model
- Controleer of alle activiteiten een naam hebben
- Controleer of alle activiteiten correct genummerd zijn
- Controleer of alle activiteiten minimaal 1 input en 1 output hebben
- Controleer of alle activiteiten binnen een diagram gelijkwaardig zijn (horizontal balancing)
- Controleer voor elke decompositie of de deelactiviteiten een afgeleide zijn van de bovenliggende activiteit
- Controleer voor elke decompositie of de stromen uit het afgeleide diagram consistent zijn met de bovenliggende activiteit (leveling)
- Beoordeel of het noodzakelijk is stromen te splitsen of te bundelen om hiermee de inzichtelijkheid van het diagram te verbeteren.
Hoofdstuk 3: Informatiemodel
- Het informatiemodel bestaat uit de volgende onderdelen:
- Informatiestructuurmodel (ERD)
- Informatieregels
- Functies van het informatiemodel:
- Communicatiemiddel voor de bij de ontwikkeling betrokken partijen
- Uitgangspunt voor het identificeren en afbakenen van incrementen
- Uitgangspunt voor het afleiden van het specificatiemodel
- Entiteittype (concreet object waarover informatie wordt vastgelegd):
- Zwak entiteittype: is een entiteittype dat niet zelfstandig beschikt over een uniek identificerend attribuut (blz 105)
- Sub- en supertypen:
supertype = moedertype met de gemeenschappelijke basisattributen
subtype = bevat de specifieke attribuuttypen die alleen van toepassing zijn op het subtype en via het principe van overerving zijn daarnaast de gemeenschappelijke basisattributen voor ieder subtype van toepassing
- Attribuuttype (soort kenmerk of eigenschap die van het entiteittype wordt vastgelegd):
- Single valued attribuuttype: is een attribuuttype dat voor een entiteit maximaal één attribuutwaarde vertegenwoordigd.
- Multivalued attribuuttype: is een attribuuttype dat voor een entiteit op moment x meerdere attribuutwaarden kan bevatten. Bijv. Gevolgde opleidingen (nieuwe tabel maken)
- Samengesteld attribuuttype: is een attribuuttype dat voor een entiteit een samenstelling van attribuutwaarden bevat.. Bijv. Adres (straatnaam, huisnummer, toevoeging, postcode, woonplaats) (attribuuttype splitsen)
- Enkelvoudig attribuuttype: is een attribuuttype dat voor een entiteit een atomische attribuutwaarde bevat.
- Sleutelattribuut: het identificerende attribuutype van de entiteit.
Relationshiptype (het element waarmee de samenhang tussen entiteittypen wordt gemodelleerd - geeft de relatie tusen de verschillende objecten):
- Eigenschappen van relaties:
- Connectiviteit of functionaliteit: geeft aan wat voor type relatie er tussen geassocieerde entiteiten is.
1:1 => bij één entiteittype hoort altijd één ander entiteittype
1:N => bij één entiteittype horen meerdere entititeittypen
N:M => bij meerdere entiteittypen horen meerdere entiteittypen - Aard: met aard wordt aangegeven of de relatie tussen de entiteittyepn optioneel/partieel of verplicht/totaal is.
- Graad of dimensie: geeft aan hoeveel entiteittypen er deelnemen aan een relatie.
(unair: een, binair: twee, tertiair: 3 etc.) - De aard en connectiviteit(functionaliteit) wordt vastgelegd d.m.v. kardinaliteiten.
- Informatieregels (zijn aanvullend op het informatiestructuurmodel):
- Identificatieregels: geeft het attribuut of de combinatie van attributen die de entiteit uniek identificeert/identificeren
- Verplichte attributen: geven aan welke attributen van een entiteit minimaal bekend moeten zijn bij de registratie van een entiteit.
- Validatieregels (domeinen): geven een opsomming van toegestane waarden die geldig zijn voor een attribuut
- Afhankelijkheidsregels (beschrijving relaties): geven de releties tussen de attributen van verschillende entiteiten weer.
- Afleidingsregels (procesgegevens): beschrijven op welke wijze de waarde van een attribuut kan worden afgeleid of berekend op basis van andere attributen.
- Transitieregels (bijvoorbeeld toegestane statusovergangen): beschrijven de toegestane statuswijzigingen voor een attribuut.
- Overige begrippen:
- Occurrence: een fysieke instantie van een bepaald entiteittype
- Population: de verzameling fysieke entiteiten op een willekeurig moment.
Notatiewijze (zie blz 109)
- Conventies:
- Een entiteittype heeft een naam en wordt gemodelleerd door middel van een rechthoek.
(voor niet disjuncte en disjuncte subtypen zie blz 110) - Een relationshiptype heeft een naam en wordt gemodelleerd door middel van een ovaal.
- De aard en connectiviteit/functionaliteit wordt gemodelleerd aan de hand van kardinaliteiten; minimum kardinaliteit is de aard(0 of 1) en de maximum kardinaliteit bepaald de connectiviteit/functionaliteit (1 of N)
- De graad betreft het aantal deelnemende entiteiten in een relatie
- Aggregatie (blz 113) is een abstractie waarbij een relatie met zijn entiteittypen als een entiteit op een hoger niveau wordt gemodelleerd.
ISO notatie van de tekstuele bijlage (voorbeeld op blz 114)
- Entiteit:
- Entiteittype: <naam>
- Identifier: <naam/namen>
- Description: <attribuuttype namen>
- Relatie:
- Relationshiptype: <naam>
- Dimension: <aantal>
- Collection: <namen>
- Cardinality: <namen (min,max)>
- Analyse en modellering – gestructureerd stappenplan (blz 115-117):
- Bepalen en benoemen entiteittypen
- Bepalen en benoemen relationshiptypen
- Maak een primair diagram
- Bepaal de kardinaliteiten
- Bepalen en benomen attribuuttypen
- Bepalen identificerende attribuuttypen
- Bepalen type attribuuttypen
- Onderzoek naar toepasbaarheid specialisatie/generalisatie
- Controleer het uitgewerkte ERD.
Analyse en modellering – analystische aanpak:
Er wordt uitgegaan van het inventariseren van entiteittype, relationshiptypen en attribuuttypen tegelijkertijd. Via een inventarisatiemodel ontstaat een basismodel dat wordt omgezet in een definitieve uitwerking. (blz 118)
Controleregels ERD
Algemene regels:
- Er zijn binnen een ERD geen twee entiteittypen met dezelfde naam
- Er zijn binnen een entiteittype geen twee attribuuttypen met dezelfde naam
Formele modelleringsregels (ISO):
- Enkelvoudige attribuuttypen: Elk entiteittype dient alleen enkelvoudige attribuuttypen te bezitten, multivalued attribuuttypen moeten worden overgezet in een entiteittype
- Normalisatie:
- het voorkomen van herhaalde groepen
- het voorkomen van attribuuttypen die afhankelijk zijn van een deel van de sleutel in plaats van de gehele sleutel
- het voorkomen van transitieve afhankelijkheden
- Decompositie:
- Bij tertiaire relationshiptypes moet de functionaliteit van een relationshiptype eenduidig te zijn over de aangesloten entiteittypen. Is dat niet het geval, dan moet je het relationshiptype splitsen in twee relationshiptypen met ieder de functionaliteit vh relationshiptype zoals dat voor de aangesloten entiteittypen van toepassing is (blz 120)
Pragmatische modelleringsregels (ISO)
Entiteittypen zonder relevante attribuuttypen:
Een entiteittype zonder attribuuttypen wordt samengevoegd als attribuuttype met dat entiteittype waarmee het via een relationshiptype verbonden is (blz 121)
Impliciete entiteittypen:
De attribuuttypen die niet tot het oorspronkelijke entiteittype behoren worden als entiteittype via een relationship type gekoppeld aan het oorspronkelijke entiteittype (omgekeerde van 1, blz 122)
Relationship met attribuuttypen:
De ISO geeft de voorkeur aan de objectivering boven het relationshiptype met attribuuttypen. Het geobjectiveerde entiteittype wordt via een kardinaliteit van 1,1 met het relationshiptype verbonden. Dit kan alleen bij een N:M relatie. (blz 123)
Multidimensionale databases (blz 136 en verder en loss hoofdstukken in zwarte klapper)
Een MMD is een vorm van databasetechnologie voor efficiënte opslag en bevraging van grote hoeveelheden complexe gerelateerde data vanuit verschillende applicaties vanuit verschillende onderdelen van de organisatie, waarbij data worden opgeslagen in een kruistabel waardoor de data beter toegankelijk zijn voor analyses vanuit verschillende invalshoeken. (datawarehouse met BI-tool functionaliteit)
Datawarehousing is het op zodanige manier structureren en koppelen van bestanden dat alle informatie via een uniform medium beschikbaar wordt.
BI-tool is een software-tool dat bedoeld is voor de presentatie en analyse van grote hoeveelheden data.
Hoofdstuk 4: Specificatiemodel
- Begrippen in het relationele model:
- Relatie: de tabel
- Attribuut: kenmerk of eigenschap die van de relatie wordt vastgelegd
- Intensie: de definitie van de relatie = opsomming van de attributen
- Extensie: de populatie van de relatie op enig moment
- Attribuutwaarde: concrete instantie van een attribuut
- Tupel: de inhoud van een rij in een relatie
- Kardinaliteit: het aantal rijen in een relatie
- Graad: het aantal kolommen in een relatie
- Domein: opsomming of formule van toegestane waarden voor een bepaalde kolom
- Kandidaatssleutel: attibuut of kleinst mogelijke samenstelling van attributen die een tupel binnen de relatie uniek indentificeert
- Primaire sleutel: de als sleutel gekozen kandidaatssleutel
- Functionele afhankelijkheid: de primaire sleutel bepaald de waarde van de overige attributen in de de relatie (determinant is het attribuut waar de andere attributen van afhankelijk zijn)
- Entiteit-integriteitsregel: elke relatie moet een unieke primaire sleutel hebben en deze moet altijd een waarde hebben
- Alternatieve sleutel: mogelijke (niet als primaire gekozen) sleutel van een relatie die naast de gekozen primaire sleutel voorkomt
- Null-waarde: een attribuut bevat voor die tupel geen waarde
- Vreemde sleutel: een attribuut of combinatie van attributen uit een relatie die in een andere relatie als primaire sleutel is gebruikt.
- Referentiele integriteitsregel: een vreemde sleutel heeft hetzelfde domein als zijn primaire sleutel en de waarde van de vreemde sleutel moet bestaan als primaire sleutel of is null.
- Integriteit: de mate waarin de database voldoet aan de gesteld regels zodat het een betrouwbare weergave van de werkelijkheid voorstelt.
- Redundantie: vorm van overtoligheid in de DB doordat dezelfde gegevens op meerdere plaatsen worden bijgehouden of doordat de database afleidbare gegevens bevat
- Inconsistentie: hetzelfde attribuut heeft op verschillende plaatsen verschillende waarden. Ontstaat vaak als gevolg van redundantie.
- Notatiewijze:
- naam relatie(sleutelattribuut(en), overige attributen)
- eventuele vreemde sleutels worden onderstreept met een gebroken lijn (voorkeur) of weergegeven tussen <>
- Conventies/regels:
- Entiteits-integriteitsregel
- Referentiele integriteitsregel
- Geen twee rijen zijn identiek
- Iedere kolom heeft een unieke naam
- De volgorde van de kolommen is niet van belang en de volgorde van de rijen ook niet
- Een gegeven in een kolom moet atomair zijn
- Domein regels
- Afleidingsregels
- Algemene regels
Update en delete regels
ON UPDATE/DELETE RESTRICTED: update/delete wordt niet toegestaan
ON UPDATE/DELETE CASCADES: update/delete wordt in deze tabel ook doorgevoerd
ON UPDATE/DELETE NULLIFY (of SET NULL): bij update/delete van kolommen, worden deze in deze tabel op “NULL” gezet.
Analyse en modellering
Normaliseren:
- Vaststellen 1 NF: meerwaardige attributen (vector) of samengesteld meerwaardige attributen (repeating group) zijn niet toegestaan
- Vaststellen 2 NF: Indien er sprake is van een samengestelde primaire sleutel mag geen enkel attribuut afhankelijk zijn van een deel van de sleutel in plaats van de gehele sleutel
- Vaststellen 3 NF: Alle attributen moeten volledig afhankelijk zijn van de sleutel en mogen niet functioneel afhankelijk zijn van een ander attribuut uit de relatie. M.a.w. transitieve afhankelijkheden zijn niet toegestaan
- BCNF: het aantal kandidaatssleutels is gelijk aan het aantal determinanten. (als 1/tm 3 goed zijn uitgevoerd, volgt BCNF automatisch, hiermee kan dus gecontroleerd worden of het goed gegaan is )
Transformatie van het informatiemodel naar het relationele model (blz 172):
- De regels:
- Elk entiteittype uit het ERD is een relatie in het relationele model
- Elk attribuuttype uit het ERD is een attribuut in de relatie
- Elke N:M relatie ujit het ERD is een relatie in het relationele model
- Bij een 1:N of N:1 relatie wordt een vreemde sleutel toegevoegd aan de relatie
Modellering gedrag op specificatie en realisatie niveau(ON .. IF... THEN...) blz 177 en verder)
- Syntax:
- ON > event
- pre/post change attribute (alleen voor wijziging van een single attribute);
- pre/post update/insert/delete tuple/query/commit
- menu option
- IF > condition
- statusvalidatie
- vergelijking
- THEN > action
- waardetoekenning variabele
- procedure/process/query/commit
- controle
ON...IF...THEN regels op specificatieniveau: in tekst
ON...IF...THEN regels op realisatieniveau: in SQL (met name het THEN gedeelte)
Hoofdstuk 5: Structured Query Language (SQL)
Data Definition Language (DDL)
CREATE TABLE tabelnaam
(kolomnaam1 gegevenstype (NOT NULL),
kolomnaam2 gegevenstype,
PRIMARY KEY (kolomnaam[,kolomnaam]),
FOREIGN KEY (kolomnaam) REFERENCES tabelnaam
ON DELETE {CASCADES | RESTRICTED | NULLIFYING}
ON UPDATE {CASCADES | RESTRICTED | NULLIFYING})
Veel gebruikte constraints:
- CHECK: alleen de genoemde warden kunnen ingevoerd worden.
Bijvoorbeeld:
Code VARCHAR(^) NOT NULL, CHECK(CODE IN(‘AERMTF’,’DJTOBP’,’CJREP’), - UNIQUE: wordt gebruikt bij een alternatieve sleutel waarbij de waarden uniek moeten blijven.
Bijvoorbeeld:
naam VARCHAR(50) UNIQUE,
- Gegevenstypen:
- INTEGER
- SMALLINT
- DATE
- TIME
- CHAR(n)
- VARCHAR(n)
- DECIMAL(x,y)
DROP TABLE tabelnaam1, [tabelnaam2]…
ALTER TABLE tabelnaam alter_specifications
Voorbeelden alter_specifications:
RENAME kolomnaam_oud kolomnaam_nieuw,
ADD kolomnaam gegevenstype,
MODIFY kolomnaam gegevenstype,
INDEX creëren om zoekvolgorde aan te maken of zoeksnelheid te verhogen.
CREATE [UNIQUE] INDEX indexnaam ON tabelnaam
(kolomnaam_1 [ASC|DESC])
UNIQUE zorgt ervoor dat in de index geen dubbele waarden worden opgenomen.
Een VIEW is een virtuele tabel die is samengesteld uit de base-tables en is bedoeld om de gebruiker informatie te verschaffen uit een subset van de database. Hierdoor kan je bepaalde informatie afschermen voor (groepen) gebruikers, of de complexiteit van de gepresenteerde data vereenvoudigen en makkelijker verwerkbaar maken.
CREATE VIEW naamview [kolomnaam_1, kolomnaam_2]
AS query
DE VIEW verwijderen:
DROP VIEW naamview
Data Control Language (DCL)
Rechten toekennen:
GRANT {SELECT | INSERT | DELETE | UPDATE kolomnaam
INDEX | ALTER | ALL} ON tabelnaam TO {PUBLIC | gebruikersnaam}
[WITH GRANT OPTION]
Rechten intrekken:
REVOKE {SELECT | INSERT | DELETE | UPDATE kolomnaam
INDEX | ALTER | ALL} ON tabelnaam TO {PUBLIC | gebruikersnaam}
[WITH REVOKE OPTION]
Data Manipulation Language (DML)
Basisquery:
SELECT [* | kolomnaam1,kolomnaam2,..] FROM tabelnaam
[WHERE...]
- Achter de WHERE-clause kan gebruik gemaakt worden van:
- Vergelijkings-operatoren (=, <, =<, >, >=, <>);
- Boolean operatoren (AND, OR, NOT)
- BETWEEN-operator (grenzen inclusief)
- IN-operator
- LIKE-operator
- NULL-operator
(voorbeelden op blz 200-201)
Gebruik van de JOIN (betreft een koppeling tussen twee tabellen aan de hand van de primaire en vreemde sleutel).
- De volgende aanpak kan worden gebruikt om een query met een zogenaamde JOIN op te stellen:
Bepaal de gewenste outputkolommen en vermeld deze bij de SELECT. - Bepaal welke tabellen je nodig hebt om de benodigde gegevens te kunnen presenteren en vermeldt deze tabellen achter de FROM.
- Bepaal hoe de benodigde tabellen aan elkaar gekoppeld kunnen worden via een zogenaamde join en vermeldt dit achter de WHERE.
- Bepaald de voorwaarden waaraan voldoen moet worden (de eigenschappen die je wil toetsen) en vermeldt deze na de join uit stap 3 achter AND.
Het gebruik van aliassen – als je een tabel meerdere keren in een query wil gebruiken:
Bijvoorbeeld: Geef een overzicht van de zorgaanbieders die in dezelfde stad wonen:
SELECT l1.levnr, l2.levnr
FROM zorgaanbieder l1, zorgaanbieder l2
WHERE l1.levplaats = l2.levplaats
AND l1.levnr < l2.levnr (zorgt ervoor dat identieke nummers worden uitgesloten)
- Het gebruik van functies:
- COUNT(*): telt het aantal rijen van een table
- COUNT(kolomnaam): telt het aantal rijen die voor de gespecificeerde kolom een verschillende (geldige) waarde hebben.
- SUM(kolomnaam): bepaald het totaal van de (NOT NULL) waarden in de betreffende kolom (alleen voor velden met numerieke waarden)
- AVG(kolomnaam): bepaalt het gemiddelde van de waarden in de betreffende kolom (alleen voor velden met numerieke waarden) Voor het ongewogen gemiddelde gebruik je AVG (DISTINCT kolomnaam)
- MAX(kolomnaam): bepaalt de hoogste waarde in de betreffende kolom (alleen voor velden met numerieke waarden)
- MIN(kolomnaam): bepaalt de laagste waarde in de betreffende kolom (alleen voor velden met numerieke waarden)\
GROUP BY: als aanvulling op de functies zorgt GROUP BY voor het samenvoegen van dezelfde waarden binnen een bepaalde kolom tot een groep. Deze groep wordt gevormd door rijen die voor een opgegeven kolom dezelfde waarde hebben. Voorwaarde is dat bij de SELECT opdracht alleen functies en de namen van de achter GROUP BY genoemde kolommen mogen worden opgenomen. De uitkomst geeft één rij per groep.
HAVING: Als het gewenst is om op eigenschappen te toetsen ten aanzien van de uitkomst van een functie, dan mag dat niet via de WHERE-clause, maar moet dit via de HAVING-clause. Met behulp van het HAVING statement kunnen de functies nog verder worden uitgebreid en is het mogelijk om eigenschappen te toetsen binnen een bepaalde groep. (door te combineren met GROUP BY)
- Subquery:
- de selectcomponent van de subquery mag maar 1 kolomexpressie bevatten, waarbij het datatype moet overeenkomen met het datatype van de voorwaarde van de query (met uitzondering van EXISTS)
- binnen de subquery mag geen ORDER BY worden gebruikt.
De uitkomst van de subquery is bepalend voor het gebruik van operatoren:
- Indien de uitkomst van de query een tabel is kan [NOT] IN gebruikt worden
- Indien de uitkomst van de query één numerieke waarde is kunnen vergelijkings-operatoren worden gebruikt;
- Indien niet de uitkomst maar het resultaat van belang is kan [NOT] EXISTS worden gebruikt.
(Voor voorbeelden zie blz 206-207)
Voor het gebruik van de subquery gelden de volgende voorwaarden:
EXISTS: is een logisch operator die de waarden waar/niet waar kan aannemen welke worden gebaseerd op de aan- of afwezigheid van uitvoer bij een subquery. EXISTS wordt vaak gebruikt in combinatie met NOT. Het is toegestaan om * achter de SELECT te gebruiken,omdat de variabelen die je selecteerd niet relevant zijn voor de uitkomst. Na EXISTS mag je geen verzamelfunctie (AVG, SUM etc) gebruiken.
Gecorreleerde subquery: in de subquery wordt verwezen naar een kolom uit de buitenste query. Sommige gecorreleerde subqueries kun je ook d.m.v. een JOIN oplossen, maar soms is het qua performance beter om een gecorreleerde subquery te gebruiken.
Groeps-groeps vergelijkingen (zie blz 210-211):
De gecorreleerde subquery dient altijd te worden in situaties waarbij sprake is van vergelijkingen tussen objecten (verzamelingen) waarbij de vraagstelling geldt:
- Net zoveel/evenveel
- Meer dan
- Minstens
De gecorreleerde subquery heeft dan het volgende formaat:
SELECT… WHERE NOT EXISTS
(SELECT …. WHERE NOT IN….
(SELECT ………….))
Blz 212:
INSERT INTO tabelnaam [kolomnaam_1, kolomnaam_2]
VALUES (waarde_1, waarde_2)
Of soms kun je in plaats van VALUES ook een query gebruiken:
INSERT INTO tabelnaam
Blz 212:
DELETE FROM tabelnaam
[WHERE clause]
Blz 213:
UPDATE tabelnaam
SET kolomnaam_1 = uitdrukking_1/waarde[,kolomnaam_2 = uitdrukking_2]
[WHERE clause]