1 / 40

MySQL

MySQL. relationale Datenbanken. SQL : Sprache fuer relationale Datenbanken . jede Information nur einmal gepeichert Dazu macht man mehrere Tabellen, die alle ueber Schluessel miteinander verknuepft sind.

deon
Télécharger la présentation

MySQL

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

More Related