Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
MySQL PowerPoint Presentation

MySQL

138 Views Download Presentation
Download Presentation

MySQL

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

  1. MySQL

  2. relationale Datenbanken • SQL : Sprache fuer relationale Datenbanken. • jede Information nur einmal gepeichert • Dazu macht man mehrere Tabellen, die alle ueber Schluessel miteinander verknuepft sind. • Bsp. Projektpartner, Versuchsteilnehmer, ganze Schulklasssen, etc.Bei Versuch z.B. nur Id-Nr. der Schlusklasse eintragen. Daraus auf Schüler-Id und daraus auf e-mail Liste schliessen.

  3. Normalisierung • Ein Datenbankkonzept, das alle Bedinungen fuer Konsistenz erfuellt, nennt man normalisiert. • In der Literatur sind Konzepte zur Normalisierung fuer Datenbankentwuerfe zu finden.

  4. Benutzerrechte • Rechte auf verschiedenen Stufen: • Servers, Datenbank, Tabelle, Kolonnen • verschiedene Rechte z.B.: • Datensatz suchen, einfuegen, loschen, ändern • SQL-Befehl grant.

  5. Client • Ansteuerung der DB über Client, der SQL-Befehle übergibt • Bsp: • update nanoworld.partners set vorname = 'Dino' • where login = 'dino'; • select ident, vorname, nachname, login, emailfrom nanoworld.partners where mailinglist = 'y';

  6. Beispiel • create table Personen( id int not null primary key auto_increment, vorname varchar(30), nachname varchar(30), mailinglist enum('y','n'),... PLZ smallint );

  7. Zope - MySQL • Z MySQL Database Connection einfuegen • Datenbase Conection String: database[@host[:port]] [user [password [unix_socket]]] • In unserem Fall:personen@localhost homepage homepassw /tmp/mysql.sock

  8. Z SQL Methoden • Die DB steuert man mit Z SQL Methoden an: • SQL-Befehl darf dtml-tags enthalten • Parameter können verlangt werden • Rückgabe: Liste von Objekten, die als Attribute die gefragten Feldnamen enthält. • Zugriff: über <dtml-in sql_Methoden_Name><dtml-var Feldname>

  9. Interface für Partner • Datenbank: nanoworld.partners

  10. Ablauf: Verzeichnis anmeldung:

  11. anmeldung.index_html

  12. anmeldung/formular

  13. anmeldung/report

  14. /anmeldung/index_html • <FORM NAME="email" METHOD="POST" onReset="history.back()" ACTION="formular"> • Bitte geben sie Ihre e-mail Adresse an: • <INPUT TYPE=TEXT NAME="email" SIZE=30 MAXLENGTH=30> • <INPUT TYPE="submit" VALUE="Submit"> • <INPUT TYPE="reset" VALUE="Abbrechen">

  15. anmeldung/formularUberprüfung • <dtml-if Cemail> • <dtml-call "REQUEST.set('fehler','Sie sind bei uns schon angemeldet.')"> • </dtml-if>

  16. CemailZ SQL Methode

  17. anmeldung/formularFormular • <FORM NAME="formular" METHOD="POST" onReset="history.back()" action="report"> • Anrede: • <input type="text" name="anrede" value="" size=20 maxlength=20> • …. • <INPUT TYPE="hidden" NAME="email" VALUE="<dtml-var "_.string.lower(email)">" > • ….

  18. anmeldung/report • Diverser Überprufungen • Willkommen • <dtml-var "REQUEST.get('anrede')"> • <dtml-var"REQUEST.get('nachname')"><br> • <dtml-call Insert_Person_MySQL> • <dtml-call benachrichtigen>

  19. Insert_Person_MySQL • Insert into partners • (vorname, nachname, login, passwort, email, mailinglist,strasse,nr,ort,plz,land,position,sprache,anrede ) • values ( • <dtml-sqlvar vorname type="string" optional>, • <dtml-sqlvar nachname type="string" optional>, • … )

  20. benachrichtigen • <dtml-sendmail mailhost="an_guggi"> • To: martin.guggisberg@unibas.ch • From: nanopartners.anmeldung • Subject: Partner hat sich angemeldet • Angemeldet hat sich • <dtml-in Abfrage> • <dtml-var Field> <dtml-var expr="_.getitem(Field)"> • </dtml-in> • </dtml-sendmail>

  21. login/index_html

  22. /login/report

  23. auswahl

  24. Bearbeiten

  25. Abmelden

  26. Abgmeldet

  27. anmeldung/index_html

  28. anmeldung/formular

  29. anmeldung/report

  30. Ablauf

  31. login/index_html • <form action="report" method="post"> • Login:<input type="text" name="login"><br> • Passwort:<input type="password" name="passwort"><br> • <INPUT TYPE="submit" NAME="submit" VALUE="Submit"> • <INPUT TYPE="submit" NAME="submit" VALUE="Passwort vergessen"> • </form>

  32. login/report • <dtml-in Ueberpruefen size=1> • <dtml-in "Personendaten(ident=ident)"> • Login erfolgreich.<br> • Willkommen • <dtml-var anrede> <dtml-var nachname> • <form action="../auswahl" onReset="history.back()"> • ...

  33. /bearbeiten/bearbeitenParameter: ident • <dtml-in Personendaten> • <dtml-in Abfrage> • <dtml-var "_.string.capitalize(Field)“> • <dtml-if "Type[0]=='v'"> • <INPUT TYPE=TEXT NAME="<dtml-var Field>" VALUE="<dtml-var expr="_.getitem(Field,1)">" SIZE=<dtml-var "Type[8:_.string.find(Type,')')]"> MAXLENGTH=<dtml-var "Type[8:_.string.find(Type,')')]"> >

  34. Personendaten • Parameter: ident • Select * from nanoworld.partners • where • ident=<dtml-sqlvar ident type="int">

  35. Abfrage • show columns from nanoworld.partners

  36. bestaetige_bearbeiten • div. Überprüfungen • Aenderungen gespeichert: • <form action="../auswahl"> • <input type="submit" value="OK"> • <input type="hidden" value="<dtml-var ident>" name="ident"> • </form><br> • <dtml-call Update_Person_MySQL>

  37. abmeldung/abmelden • Wollen Sie sich sicher abmelden? • <form action="abgemeldet“ • onReset="history.back()"> • <input type="submit" value="OK"> • <input type="reset" value="Abbrechen"> • <INPUT TYPE="hidden" NAME="ident" VALUE="<dtml-var ident>" > • </form>

  38. abgemeldet • Auf Wiedersehen!<br> • Sie wurden abgemeldet. • <form action="../anmeldung"> • <input type="submit" value="OK"> • </form><br> • <dtml-call Abmelden>

  39. Abmelden • Parameter: ident • delete from nanoworld.partners • where • ident=<dtml-sqlvar ident type="int">