1 / 25

Internetapplicaties

Internetapplicaties. Deel 8: Relationele Databases. Doelstelling. Leren werken met een ‘echte’ database server Eenvoudige SQL-commando’s leren gebruiken Achtergrondkennis opdoen om uiteindelijk JSP, Java en relationele databases te kunnen combineren. Boeken/tutorials:.

grant
Download Presentation

Internetapplicaties

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Internetapplicaties Deel 8: Relationele Databases Internetapplicaties - VIII Relationele Databases

  2. Doelstelling • Leren werken met een ‘echte’ database server • Eenvoudige SQL-commando’s leren gebruiken • Achtergrondkennis opdoen om uiteindelijk JSP, Java en relationele databases te kunnen combineren. Internetapplicaties - VIII Relationele Databases

  3. Boeken/tutorials: • Beginning JSP Web Development, Wrox • Vooral hfdst. 15 Internetapplicaties - VIII Relationele Databases

  4. Databases • Het kunnen opslaan van gegevens als het programma of de sessie afgelopen zijn, noemt men persistentie. • Voor beperkte persistentie kunnen we volstaan met eenvoudige file-I/O. • In andere gevallen hebben we een echt DBMS nodig. Internetapplicaties - VIII Relationele Databases

  5. Soorten Databases Er zijn verschillende types van databases. • Hiërarchische database • Gegevens worden bewaard in een boomstructuur (strikte afhankelijkheden) • Moeilijk om gegevens volgens bepaalde criteria terug te vinden. • Oudste type • De zeer recente XML-databases kunnen gezien worden als hiërarchisch, maar met links. • Relationele databases (ORACLE, Sybase, MS SQL Server, MySql,… zijn Relationele DataBase Management Systemen) • Gegevens worden bewaard in 2-dim. tabellen die records bevatten. • Tabellen zijn gelinkt via speciale sleutelvelden. • Links gaan in één richting. • Er is een stevige wiskundige onderbouw. • Populairste type voor nieuwe ontwikkelingen (hoewel al 30 jaar oud) Internetapplicaties - VIII Relationele Databases

  6. Soorten databases (vervolg) • OO databases (GemStone, ObjectStore, Versant zijn OODBMS) • Rol van records wordt +/- gespeeld door objecten. • Rol van tabellen wordt +/- gespeeld door klassen. • Links kunnen bidirectioneel zijn (sneller want vaak geen zoek-algoritme nodig om gegevens samen te stellen). • Een overtuigend theoretisch kader ontbreekt vooralsnog. • Zijn nog niet echt doorgebroken. Internetapplicaties - VIII Relationele Databases

  7. relationele database server • = programma op de servermachine die 1 of meer relationele databases bevat. • Client-applicaties (die meestal op clientmachines draaien) kunnen bij de database server een connectie naar 1 van de zijn databases aanvragen. • Via deze connectie kunnen de client-applicaties aan de database server vragen om gegevens op te vragen en te manipuleren. • Vaak wordt hiervoor ook RDBMS (relational database management system) gebruikt als naam, maar deze naam kan ook gebruikt worden voor Access, FoxPro e.d. die minder geschikt zijn om op de servermachine te draaien. Internetapplicaties - VIII Relationele Databases

  8. Installatie en configuratie van de MySql relationele database server • Download de productie-versie van MySQL vanuit www.mysql.com (4.0.17) • Unzip naar uw c:\mysql directory. • Installeer MySQL als service: • Open een command-console (Start/Run/cmd) • Ga naar de c:\mysql\bin directory en tik daar mysqld-nt --install • Start de winmysqladmin.exe tool. Geef nog geen paswoord in (cancel). Met de rechtermuisknop op het stoplicht rechtsonder klikken, laat toe om de database server te starten, stoppen en de administratietool te tonen (show me). • In de my.ini setup tab, moet je mysqld-max kiezen (om transacties te laten ondersteunen). Internetapplicaties - VIII Relationele Databases

  9. De command line tool mysql.exe • Nog binnen de gewone command console, in c:\mysql\bin kun je een lijst van de databases krijgen met mysqlshow • mysql heeft een eigen command line tool, waarmee database-operaties kunnen worden uitgevoerd van op de server: Tik mysql> • Er verschijnt een eigen ‘prompt’: mysql> Internetapplicaties - VIII Relationele Databases

  10. Resultaat in de command console Internetapplicaties - VIII Relationele Databases

  11. Resultaat in winmysqladmin.exe Internetapplicaties - VIII Relationele Databases

  12. Database Security • Bij MS besturingssystemen, krijgen alle lokale gebruikers by default volledige toegang tot alle databases. Dit willen we niet. • Eerst bekijken we wat er nu in de tabel mysql.user zit. mysql> select host, user from mysql.user; +-----------+------+ | host | user | +-----------+------+ | % | | | % | root | | localhost | | | localhost | root | +-----------+------+ Internetapplicaties - VIII Relationele Databases

  13. Database Security (vervolg) • In de tabel user van de database mysql, moeten we eerst het record met Host=‘localhost’ en User=‘’ verwijderen. Want die maakt dat iedereen overal aan kan. We bekijken het resultaat en gaan uit de tool. mysql> delete from mysql.user where host=‘localhost’ and user = ‘’: mysql> select host, user from mysql.user; +-----------+------+ | host | user | +-----------+------+ | % | | | % | root | | localhost | root | +-----------+------+ mysql> quit Internetapplicaties - VIII Relationele Databases

  14. Passwoord zetten • We geven user root nu een paswoord: C:\mysql\bin> mysqladmin reload C:\mysql\bin> mysqladmin –u root password birm • We kijken nu of we de mysql server kunnen afzetten: C:\mysql\bin> mysqladmin –-user=root –-password=birm shutdown • Om effect te hebben moeten we nu eerst rebooten Internetapplicaties - VIII Relationele Databases

  15. Connecteren met paswoord C:\mysql\bin> mysql –u root –p Enter password: birm Disconnecteren gebeurt zoals voorheen: mysql> quit Als er iets misging met de paswoorden, kun je nu nog mysql verwijderen en opnieuw beginnen. Dat gaat zo: Internetapplicaties - VIII Relationele Databases

  16. MySQL volledig verwijderen • Via c:\mysqm\bin\winmysqladmin kun je (rechtermuisknop op stoplicht) de service al stoppen en verwijderen • In settings/Add Remove Programs • mySQL desinstalleren • Vervolgens de c:\mysql directory manueel verwijderen • Vervolgens c:\my.ini verwijderen Als de service toch hardnekkig blijft draaien en bestaan: • In settings/administrative tools/services: • mySQL service STOPPEN • Nu de service uit de registry halen: • Start/Run/regedit • Klik op HKEY_LOCAL_MACHINE • Zoek op mysqld-nt • Verwijder de map mysql uit de map services • Nu opnieuw opstarten Internetapplicaties - VIII Relationele Databases

  17. SQL commando create • Aanmaak database met als naam birmtest (om te verwijderen: drop ipv create): mysql>create database birmtest; • Maak van birmtest de default database voor nu: mysql>use birmtest • Maak een nieuwe tabel Klant aan: mysql> create table Klant ( -> klant_id INTEGER NOT NULL PRIMARY KEY, -> naam CHAR(40), -> voornaam CHAR(40), -> zip CHAR(4), -> stad CHAR(40) ); Internetapplicaties - VIII Relationele Databases

  18. Opmerkingen • klant_id INTEGER NOT NULL PRIMARY KEY -> betekent dat we een veld klant_id willen maken van het type INTEGER. -> NOT NULL betekent dat klant_id voor elk record moet bestaan (niet NULL mag zijn) -> PRIMARY KEY betekent o.a. dat het veld klant_id een unieke sleutel is voor zijn record. klant_id zal altijd precies 1 record bepalen. • naam CHAR(40) -> betekent dat we en veld naam willen maken van het type CHAR van maximum 40 karakters lang. • Er zijn nog vele andere types, maar daar komen we later op terug. Internetapplicaties - VIII Relationele Databases

  19. SQL commando insert • Invoegen van een klantrecord: mysql>insert into Klant values (1, 'Peeters','Filip','1000','Brussel'); Opm: in principe moet je de veldnamen expliciet vermelden, omdat theoretisch, de veldnamen geen volgorde hebben. • Invoegen van bestaande primary key mag niet: mysql>insert into Klant values (1, 'Claes','Willy','2000','Antwerpen'); ERROR 1062: Duplicate entry '1' for key 1 • Nu met unieke klant_id: mysql>insert into Klant values (2, 'Claes','Willy','2000','Antwerpen'); Query OK, 1 row affected (0.00 sec) Internetapplicaties - VIII Relationele Databases

  20. SQL commando select • Select hadden we al gezien bij het bekijken van user en host in de user-tabel. mysql> select * from klant; +----------+---------+----------+------+-----------+ | klant_id | naam | voornaam | zip | stad | +----------+---------+----------+------+-----------+ | 1 | Peeters | Filip | 1000 | Brussel | | 2 | Claes | Willy | 2000 | Antwerpen | +----------+---------+----------+------+-----------+ 2 rows in set (0.00 sec) Internetapplicaties - VIII Relationele Databases

  21. SQL commando update • Update gebuiken we om bestaande records te wijzigen. mysql> update Klant set naam = 'Claeys' where klant_id = 2; Query OK, 1 row affected (0.06 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from klant; +----------+---------+----------+------+-----------+ | klant_id | naam | voornaam | zip | stad | +----------+---------+----------+------+-----------+ | 1 | Peeters | Filip | 1000 | Brussel | | 2 | Claeys | Willy | 2000 | Antwerpen | +----------+---------+----------+------+-----------+ Internetapplicaties - VIII Relationele Databases

  22. SQL commando delete • Delete gebuiken we om bestaande records te verwijderen. mysql> delete from Klant where naam = 'Claeys'; Query OK, 1 row affected (0.05 sec) mysql> select * from klant; +----------+---------+----------+------+---------+ | klant_id | naam | voornaam | zip | stad | +----------+---------+----------+------+---------+ | 1 | Peeters | Filip | 1000 | Brussel | +----------+---------+----------+------+---------+ 1 row in set (0.00 sec) Internetapplicaties - VIII Relationele Databases

  23. Meerdere tabellen • We voegen het 2e record opnieuw toe: mysql> insert into Klant values (2, 'Claes','Willy','2000','Antwerpen'); mysql> select * from Klant; +----------+---------+----------+------+-----------+ | klant_id | naam | voornaam | zip | stad | +----------+---------+----------+------+-----------+ | 1 | Peeters | Filip | 1000 | Brussel | | 2 | Claes | Willy | 2000 | Antwerpen | +----------+---------+----------+------+-----------+ • We creëren een tabel Bestelling die gelinkt zal worden met Klant: mysql> create table Bestelling ( best_id INTEGER NOT NULL PRIMARY KEY, klant_id INTEGER, besteld DATE); Internetapplicaties - VIII Relationele Databases

  24. Meerdere tabellen… • In Bestelling voegen we 3 records toe. mysql> insert into Bestelling values (1000,2,'2004-01-13'); mysql> insert into Bestelling values (2000,2,'2004-01-14'); mysql> insert into Bestelling values (3000,1,'2005-01-01'); Als we de gegevens van een klant met bijbehorende bestellingen willen zien dan moeten we deze link zelf aangeven: Internetapplicaties - VIII Relationele Databases

  25. …joinconditie nodig mysql> select klant.*, bestelling.best_id, bestelling.besteld from klant, bestel ling where klant.klant_id = bestelling.klant_id; +----------+---------+----------+------+-----------+---------+------------+ | klant_id | naam | voornaam | zip | stad | best_id | besteld | +----------+---------+----------+------+-----------+---------+------------+ | 2 | Claes | Willy | 2000 | Antwerpen | 1000 | 2004-01-13 | | 2 | Claes | Willy | 2000 | Antwerpen | 2000 | 2004-01-14 | | 1 | Peeters | Filip | 1000 | Brussel | 3000 | 2005-01-01 | +----------+---------+----------+------+-----------+---------+------------+ mysql> select klant.*, bestelling.best_id, bestelling.besteld from klant, bestel ling ; +----------+---------+----------+------+-----------+---------+------------+ | klant_id | naam | voornaam | zip | stad | best_id | besteld | +----------+---------+----------+------+-----------+---------+------------+ | 1 | Peeters | Filip | 1000 | Brussel | 1000 | 2004-01-13 | | 2 | Claes | Willy | 2000 | Antwerpen | 1000 | 2004-01-13 | | 1 | Peeters | Filip | 1000 | Brussel | 2000 | 2004-01-14 | | 2 | Claes | Willy | 2000 | Antwerpen | 2000 | 2004-01-14 | | 1 | Peeters | Filip | 1000 | Brussel | 3000 | 2005-01-01 | | 2 | Claes | Willy | 2000 | Antwerpen | 3000 | 2005-01-01 | +----------+---------+----------+------+-----------+---------+------------+ Internetapplicaties - VIII Relationele Databases

More Related