PsyCamari: insert_id mit autocommit(false); funktioniert nicht

Beitrag lesen

  • Lose Kopplung an die Datenbank,
  • Abstraktion der Datenhaltung persistenter Daten,
  • Verzicht auf das Transaktionskonzept,
  • nur ein Statement zum Einfügen einer neuen Nachricht in das Forum,
  • mehr Performance.

Ich habe mich jetzt mal gerade schlau gemacht was unter Loser Kopplung verstanden wird. Gehe ich recht in der Annahme, dass du damit meinst, dass meine drei Tabellen nicht mehr so "stark gekoppelt" sind, dass wenn Inhalt X in Tabelle A geändert wird auch Inhalt X in Tabelle B geändert werden muss?

Dann frage ich dich, wie das in meinem Beispiel zu bewerkstelligen ist. Wie gesagt habe ich 3 Tabellen, die die gesamten Daten des Forums beinhalten. Boards, Threads, Posts. Boards sieht ungefähr so aus:

id name threads posts
1       Testforum  5     8

Threads:

id name board author posts views timestamp
1       Testthread  1     137     2      10       xyz

Posts:

id text thread author timestamp
1        blabla    1      137      xyz

Die Beispieldaten sagen aus, dass Post ID 1 in Thread ID 1 vorliegt, von Autor # 137 erstellt wurde und dieser Testthread ID 1 im Forum ID 1 dem Testforum vorliegt. Diese DB-Struktur für das Forum fand ich ganz sinnvoll. Ok die threads Spalte im boards Forum und die posts Spalte im threads board hätte ich mir sparen können, da diese jeweils mit einem SELECT * FROM (Tabelle dadrunter) WHERE id = xy zu ermitteln sind.

Aber wie ist hier bitte lose Kopplung anzuwenden? Diese 3 Tabellen hängen nunmal zusammen, da ich die Daten logisch trennen wollte und sie deshalb in diese 3 Tabellen aufgeteilt habe. Wird ein neuer Thread angelegt, werden 3 Statements fällig:

a) im Board table für das betreffende Board threads += 1
b) im Threads table den thread einfügen
c) im Posts table den post hinzufügen

Ich sehe nicht, wo ich hier etwas lose koppeln kann. Wird etwas bei mir in Tabelle C geänder respektive gelöscht, muss ich auch A und B anpassen. So wie ich es derzeit habe funktioniert es ganz gut, also was wäre der Vorteil wenn ich es ändern würde (und vorallem: Wie?)?

Danke. :)