Hallo!
Ich habe eigentlich kein unlösbares Problem, es geht mehr um die Performance und – naja – das Gefühl.
Ich finde MySQL in Kombination mit PHP ist sehr leicht zu benutzen, wenn man nur das Basiswissen in MySQL hat (also INSERT, UPDATE, REPLACE, DELETE und "wie installiere ich PHPmyAdmin").
Das liegt daran, dass man auf Umwegen vieles, was in MySQL geht, in PHP tun kann (zum Beispiel die Anzahl der Datensätze, die eine where-Klausel erfüllen zählen COUNT(*) oder count()).
Das ist aber oft nervig und schlägt sich vermutlich auch in der Performance nieder.
Nun habe ich also folgende Frage:
Der relevante Teil meiner Datenbank sieht so aus:
Tabelle "Vokabeln":
id | nutzer | sprache | vokabelspezifische Felder
Tabelle "Sprachen":
nutzer | sprache | sprachenspezifische Felder
Die Sprachen sind allgemeiner als die Vokabeln.
Nun ist es folgendermaßen:
Die Sprachen sollen nur die Vokabeln widerspiegeln.
Damit meine ich, dass es eine Sprache nur gibt, wenn es auch Vokabeln dieser Sprache gibt. Wenn alle Vokabeln einer Sprache gelöscht werden, soll es auch die Sprache nicht mehr geben.
Ich kann diesen Umstand umständlich mit PHP verwirklichen, indem ich bei jeder Vokabellöschung/-veränderung überprüfe, ob es die letzte war oder die erste und wenn dem so ist, die Tabelle "Sprachen" verändere.
Das nervt aber sehr.
Ich denke, es geht auch mit MySQL, vermutlich sogar recht komfortabel, aber ich weiß nicht genau, ob ich schon bei der Tabellenstruktur ansetzen muss, oder bei den Anfragen.
Ich hab mir meine Kenntnisse Stück für Stück angeeignet und deswegen bergen Dokumentationen, die es von Anfang an aufrollen viele redundante Informationen für mich. Vielleicht hätte ich anders an MySQL rangehen sollen, aber es ist wohl zu spät.
Ich arbeite mit MySQL 5.0.
Vielen Dank für hilfreiche Hinweise,
Ruben