internetapplicaties n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Internetapplicaties PowerPoint Presentation
Download Presentation
Internetapplicaties

Loading in 2 Seconds...

play fullscreen
1 / 25

Internetapplicaties - PowerPoint PPT Presentation


  • 105 Views
  • Uploaded on

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:.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Internetapplicaties' - grant


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
internetapplicaties

Internetapplicaties

Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele Databases

doelstelling
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

boeken tutorials
Boeken/tutorials:
  • Beginning JSP Web Development, Wrox
    • Vooral hfdst. 15

Internetapplicaties - VIII Relationele Databases

databases
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

soorten databases
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

soorten databases vervolg
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

relationele database server
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

installatie en configuratie van de mysql relationele database server
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

de command line tool mysql exe
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

resultaat in de command console
Resultaat in de command console

Internetapplicaties - VIII Relationele Databases

resultaat in winmysqladmin exe
Resultaat in winmysqladmin.exe

Internetapplicaties - VIII Relationele Databases

database security
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

database security vervolg
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

passwoord zetten
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

connecteren met paswoord
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

mysql volledig verwijderen
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

sql commando create
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

opmerkingen
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

sql commando insert
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

sql commando select
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

sql commando update
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

sql commando delete
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

meerdere tabellen
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

meerdere tabellen1
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

joinconditie nodig
…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