MySQL für Fortgeschrittene

K

koli.bri

Hallo.

Ich denke, den Einstieg in MySQL hab ich hinter mir.
Jetzt möchte ich mich mal an die richtig harten Sachen gewöhnen.

Für meine Homepage hab ich folgende Struktur:

Tabelle Kapitel
ID
name, inhalt, etc...

Tabelle Kategorien
ID
PID -> Verknüpfung zum Kapitel
name, inhalt, etc....

Tabelle Texte
ID
PID -> V erknüpfung zur Kategorie
name, inhalt, etc...

Kommentare
ID
PID - Verknüpfung zum Text
name, inhalt, etc....


Die Verknüpfungen laufen bisher nur über die PHP-Scripte.
Jetzt meine ich aber auch zu wissen, dass man das auch Datenbankseitig machen kann.
Der Vorteil ist die Verhinderrung von Fehlern und eventuell auch ein geringerer Programmieraufwand.
Jetzt komm ich eher aus der AS/400-Welt, bzw werde dort gerade eingearbeitet, und dort gibt es auch Triggerprogramme. Wenn beispielsweise eine Sachbearbeiternummer in einer Datei auf null gesetzt wird, kann man für diesen Fall ein Programm anhängen, was dann ausgeführt wird.

Das wär ja auch ne Tolle sache.

Wenn überhaupt, wo finde ich Informationen zu dem Thema in Verbindung mit MySQL?
Oder hab ich mich verhört, und das gibt es gar nicht?

gruß
Lukas
 
ja die Doku ist ziemlich umfassend und auch sehr anschaulich, die OneOeight da erwähnt! Sollte jeder kennen, der mit mysql arbeiten will. Trigger kennt mysql leider erst ab mysql5 !
 
Trigger gibet es in mySQL erst ab Version 5.

Und die Verknüpfungen in der Datenbank laufen
1. nur mit InnoDB-Tabellen und
2. ersparen Dir keinen Programmieraufwand, verhindern aber fehlerhafte Relationen.
 
Code:
SELECT k.name, kat.name
FROM    kapitel as k
INNER   JOIN kategorien as kat on k.ID = kat.PID
WHERE  kat.name = 'Blub'

Mit diesem Statement bekommst du alle kapitelnamen und kategorienamen zur kategorie blub
 
Umfassend ist sie, ja.
aber da taucht für mich kleinen Geist das Problem der Übersicht auf.
Ich bin da sehr SelfHTML-Geschädigt.
Dennoch danke, ich vergesse immer wieder direkt bei den Machern vorbeizuschauen... schande über mich...

Na, auf jeden Fall hab ich jetzt wieder was zu lesen...

gruß
Lukas
 
Also zu denken das die AS/400 bzw. hier die DB2 zu vergleichen ist mit MySQL, das solltest Du gleich wieder vergessen (komme ja selbst aus der AS/400-Welt). MySQL ist lange nicht so "mächtig" wie DB2 und diese internen Verknüpfungen gibt's so auch nicht.

Bei MySQL muss man einfach vieles per Hand machen. Also Löschungen etc. werden nicht auf verknüpfte Sätze vererbt etc. Das muss der Programmierer (leider) per Hand machen.
 
Klar, die ganzen genialen Sachen wie Logische Dateien, DDS-Beschreibungen etc kann ich mit MySQL vergessen.
Aber ich denke, so ein paar Sachen sind gar nicht mal so unterschiedlich, zumal die AS/400 ja auch SQL kann.
Wollte die auch weniger direkt vergleichen, sondern halt nur zur Information mitgeben, was ich an anderen Datenbanknsystemen noch kenne. :)

Aber danke für die Hilfen, so schnell wird keine Frage mehr zu SQL, MySQL und dergleichen kommen, hab jetzt nen Dicken Schinken drüber zu lesen...


gruß
Lukas
 
master_p schrieb:
Bei MySQL muss man einfach vieles per Hand machen. Also Löschungen etc. werden nicht auf verknüpfte Sätze vererbt etc. Das muss der Programmierer (leider) per Hand machen.
MySQL5 unterstütz genau das mit dem Tabellentyp InnoDB..
Bei MySQL hat sich sehr viel getan in letzter Zeit!

Gruss,
Goran
 
einen kleinen Hinweis noch, du solltest umbedingt deine ID's umbennen. So kommt man später sehr schnell durcheinander..

Durchgesetzt haben sich solche Formen:

tabellenname_id
id_tabellenname


ist zwar etwas mehr schreibarbeit, aber wenn du die ID's auch irgendwo anders verwendest, wirst du es später beim debuggen wesentlich einfacher haben.
 
master_p schrieb:
MySQL ist lange nicht so "mächtig" wie DB2 und diese internen Verknüpfungen gibt's so auch nicht.

Also mySQL ist zwar nicht der Weisheit letzter Schluss, aber es wird wohl seinen Grund haben, dass SAP mySQL als DBMS nutzt.
Jedenfalls unterstützt mySQL inzwischen so schöne Dinge wie:
Trigger,
stored procedures
intern gespeicherte und optimierte Abfragen
und über den Tabellentyp innoDB auch Relationen
etc.

master_p schrieb:
Bei MySQL muss man einfach vieles per Hand machen. Also Löschungen etc. werden nicht auf verknüpfte Sätze vererbt etc. Das muss der Programmierer (leider) per Hand machen.

Wie oben erwähnt, unterstützt mySQL Relationen, also auch Statements wie On DELTE, ON UPDATE etc. mit der dann die realtional verknüpften Datensätze gelöscht werden.
 
Zurück
Oben Unten