Database theorie‎ > ‎

Mediatechnoloog Leerjaar 3 Periode 4

Einde van deze periode

Deze periode sluiten jullie af met een verslag van de verschillende opdrachten op deze pagina.

Van de opdrachten verwacht ik minimaal een korte beschrijving en de SQL statements / een SQL script dat doet wat er gevraagd wordt. Van de vragen verwacht ik minimaal dat je de vraag herhaald en voorziet van een antwoord. 

Lever je verslag in voor dinsdag 7 juni zodat ik nog tijd heb om jullie cijfers op tijd in te voeren.

Les 1:


Tijdens les 1 hebben we een aantal vragen over SQL beantwoord. 

Les 2:

Onderwerpen:

- Benoemen van velden en opvragen op naam
- de view

Opdracht 1 

Voer de volgende opdracht uit en schrijf alle SQL commando's achter elkaar gescheiden door ; voer het script uit, bv in phpmyadmin om te zien of het werkt.

- Verwijder de database "Organisatie"
- Maak een nieuwe database "Organisatie"
- Maak een tabel "Medewerker" met de velden:
ID (long integer, PK, automatisch genummerd)
Naam (tekst)
Afdeling (Tekst)
Salaris (money)
Manager (long integer, FK naar medewerker.id)

- Maak een record voor de directeur: (naam: "Jan", Afdeling "Directie", salaris: 8900)
- Maak een record voor een Sjef: (naam: "Piet", Afdeling "Verkoop", salaris: 3900, manager:1)
- Maak een record voor een Sjef: (naam: "Truus", Afdeling "Inkoop", salaris: 3900, manager:1)
- Maak een record voor een Sjef: (naam: "Klaas", Afdeling "Productie", salaris: 3900, manager:1)
- Maak een record voor een Verkoper: (naam: "Kees", Afdeling "Verkoop", salaris: 2900, manager:2)
- Maak een record voor een Inkoper: (naam: "Sjoerd", Afdeling "Inkoop", salaris: 1900, manager:3)
- Maak een record voor een Inkoper: (naam: "Nathalie", Afdeling "Inkoop", salaris: 1900, manager:3)
- Maak een record voor een Medewerker: (naam: "Mathilde", Afdeling "Produktie", salaris: 1900, manager:4)
- Maak een record voor een Medewerker: (naam: "Ellen", Afdeling "Produktie", salaris: 1900, manager:4)
- Maak een record voor een Medewerker: (naam: "Geert", Afdeling "Produktie", salaris: 1900, manager:4)
- Maak een record voor een Medewerker: (naam: "Emile", Afdeling "Produktie", salaris: 1900, manager:4)

- Maak een view "leiding" die voor alle medewerkers een overzicht toont met 
    de naam van de medewerker, 
    het aantal direct ondergeschikten .
    de afdeling van de medewerker
    de som van het salaris van deze afdeling

- Laat de view zien.

Les 3:

Vandaag behandelen we de UNION en we herhalen de JOIN en VIEW.


Opdracht 1: 

Maak een database met de volgende 2 tabellen.

Persoon
 Sofi
 Naam
 Straatnaam
 Huisnummer
 Postcode    
 Woonplaats
 Telefoon

Bedrijf
 BTW-nr
 Handelsnaam
 Postbusnr
 Postcode
 Woonplaats
 Hoofdnummer

Vul de database met valide gegevens van 3 personen en 2 bedrijven.

 
Een UNION is een query die twee of meer query's combineert tot 1 resultset.
De query's moeten allemaal het zelfde aantal velden opleveren en liefst van het zelfde type.
De eerste query bepaalt de veldnamen.

Opdracht 2:

Maak een view "Rechtspersoon" die een combinatie toont van bedrijven en personen.

Velden:
 "AS" Persoon Bedrijf 
 ID Sofi-nr BTW-nr
 Naam Naam  Handelsnaam
 Straat Straatnaam "Postbus"
 Nummer Huisnummer Postbusnummer
 Postcode Postcode Postcode
 Woonplaats Woonplaats Woonplaats

Opdracht 3:

Database systemen staan rechten toe op tabel niveau en niet op record, tuple of column niveau. Bedenk nog een voorbeeld van een situatie waarin je een entiteit zou willen opsplitsen en meerdere tabellen met gelijksoortige informatie die je vervolgens in een view weer samen laat komen.

Opdracht 4:

We hebben nu een manier geleerd om tabellen horizontaal te splitsen. Kun je ook een manier verzinnen om een tabel verticaal te splitsen? gebruik in je antwoord het volgende voorbeeld.

De afdeling P&O van een middelgroot bedrijft houdt gegevens bij over personeelsleden. Een deel van die gegevens wordt gedeeld met andere afdelingen. Bijvoorbeeld: Naam, Sofi, Afdeling , Manager, Kantoor en Telefoonnummer. Een ander deel van de gegevens is alleen bestemd voor de afdeling P&O zelf. bv: Salaris, Contracttype, Burgelijkestaat en rekeningnummer.

4a) Welke tabelindeling stel je voor? benoem sleutelvelden (primair en foreign) en datatype.

4b) Schrijf een "Create View" statement die een view maakt waarin de afdeling P&O alle gegevens kan terugvinden.

Les 4:

Volg de uitleg over stored procedures of lees: http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html

Probeer het volgende voorbeeld toe te voegen aan een bestaande database.

CREATE FUNCTION hello (s CHAR(20))
RETURNS CHAR(50)
RETURN CONCAT('Hello, ',s,'!');

Nu bestaat de functie hello. Je kunt deze zo aanroepen:

SELECT hello ('Europe');

Maar ook:

SELECT hello(naam) from persoon;

Bekijk het volgende voorbeeld van: http://www.devshed.com/c/a/MySQL/Examining-MySQL-50/3/


Opdracht1

beantwoord de volgende vragen:

- Waarom "delimiter | ;"
- Kun jij nu een functie maken die a.d.h.v. een bedrag aangeeft of het weinig (< 1500) normaal (> 1499 en < 2500) of hoog is?
- Kent Mysql ook een "switch case" om dit op te lossen? en zo ja hoe dan?



Comments