NzuM Beziehung Updaten
Ich habe 3 Tabellen Film, Schauspieler, FiSc.
Die Tabellen Schauspieler und Film stehen über FiSc in einer n:m Beziehung.
Ich lasse nun per PHP zu einem Film alle Schauspieler ausgeben.
Nun möchte ich auch bearbeiten können, welcher Schauspieler in einem Film mitgespielt hat.
Wie kann ich es erreichen, dass entweder ein Datensatz hinzugefügt, upgedatet oder gelöscht wird?
Die einfachste Lösung wäre ja alle Verbindungen zu einem Film zu löschen und dann nachher neueinzutragen, aber das muss doch auch eleganter gehen?
Die Tabellen Schauspieler und Film stehen über FiSc in einer n:m Beziehung.
Ich lasse nun per PHP zu einem Film alle Schauspieler ausgeben.
Nun möchte ich auch bearbeiten können, welcher Schauspieler in einem Film mitgespielt hat.
Wie kann ich es erreichen, dass entweder ein Datensatz hinzugefügt, upgedatet oder gelöscht wird?
Die einfachste Lösung wäre ja alle Verbindungen zu einem Film zu löschen und dann nachher neueinzutragen, aber das muss doch auch eleganter gehen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 119926
Url: https://administrator.de/contentid/119926
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
6 Kommentare
Neuester Kommentar
Moin djfflow,
hast Du denn auch ein konkretes Datenbankblech drunter oder arbeitest Du eher abstrakt?
Und wo ich grad beim Nachfragen bin:
a)
b) wo genau ist Dein Problem jetzt?
Wenn Du einen vorhandenen Film ausgewählt hast (den mit der ID 77 zum Beispiel), dann kannst Du doch aus der Zuordnungstabelle FiSc alle SchauspielerInnen selektieren, die bereits diesem Film zugeordnet sind.
Aus den vorhandene kannst Du selektiv "löschen"; aus den noch nicht diesem Film zugeordneten kannst du neue hinzufügen.
Und du kannst auch "ändern" (einen vorhandenen Schaupieler löschen und statt dessen einen anderen hinzufügen)
Wo genau ist jetzt Dein Problem?
Ich meine, so etwas machen Delmenhorster ohne Datenbank...
Grüße
Biber
hast Du denn auch ein konkretes Datenbankblech drunter oder arbeitest Du eher abstrakt?
Und wo ich grad beim Nachfragen bin:
a)
Die einfachste Lösung wäre ja alle Verbindungen zu einem Film zu löschen und dann nachher neu einzutragen
Ist das ein Hella-von-Sinnen-Zitat oder bist Du allein zu dieser Einsicht gekommen?b) wo genau ist Dein Problem jetzt?
Wenn Du einen vorhandenen Film ausgewählt hast (den mit der ID 77 zum Beispiel), dann kannst Du doch aus der Zuordnungstabelle FiSc alle SchauspielerInnen selektieren, die bereits diesem Film zugeordnet sind.
Aus den vorhandene kannst Du selektiv "löschen"; aus den noch nicht diesem Film zugeordneten kannst du neue hinzufügen.
Und du kannst auch "ändern" (einen vorhandenen Schaupieler löschen und statt dessen einen anderen hinzufügen)
Wo genau ist jetzt Dein Problem?
Ich meine, so etwas machen Delmenhorster ohne Datenbank...
Grüße
Biber
Moin djfflow,
danke für die Antwort.
Ja, mit "Datenbankblech" meinte ich mySQL in Deinem Fall.
Wenn ich Dich richtig verstehe, möchtest Du die Programmlogik "Ist für die Zuordnung bzw. Abwahl SchauspielerX -zu-Film-Y ein INSERT, ein Update oder ein Delete nötig?" gar nicht erst auf PHP-Seite implementieren, sondern willst es gleich der DB aufdrücken?
Lässt sich auch machen, allerdings dann über eine Triggerlösung.
Dann kannst Du z.B. alle 4 Sätze, die in Deinem multiplen Select am Ende markiert sind als INSERT an die DB schicken.
Und vorher alle vorhandenen Sätze Fi-Sc zu diesem Film löschen. (Jetzt versteh ich erst, was Du mit diesem ersten Satz gestern gemeint haben könntest.)
Ich halte dieses Vorgehen nicht für besonders elegant und auch nicht performant, aber machbar ist es.
Dann wäre jetzt erstmal eine Suche "mySQL+Trigger" Deinerseits nötig, damit Du Dir dieses Vorgehen vorstellen kannst.
Und abschätzen kannst, was wohl schneller zusammenzuschreddern ist - die Trigger oder die unterschiedliche Fallbehandlung Insert/Delete auf PHP-Appz-Seite.
Grüße
Biber
danke für die Antwort.
Ja, mit "Datenbankblech" meinte ich mySQL in Deinem Fall.
Wenn ich Dich richtig verstehe, möchtest Du die Programmlogik "Ist für die Zuordnung bzw. Abwahl SchauspielerX -zu-Film-Y ein INSERT, ein Update oder ein Delete nötig?" gar nicht erst auf PHP-Seite implementieren, sondern willst es gleich der DB aufdrücken?
Lässt sich auch machen, allerdings dann über eine Triggerlösung.
Dann kannst Du z.B. alle 4 Sätze, die in Deinem multiplen Select am Ende markiert sind als INSERT an die DB schicken.
Und vorher alle vorhandenen Sätze Fi-Sc zu diesem Film löschen. (Jetzt versteh ich erst, was Du mit diesem ersten Satz gestern gemeint haben könntest.)
Ich halte dieses Vorgehen nicht für besonders elegant und auch nicht performant, aber machbar ist es.
Dann wäre jetzt erstmal eine Suche "mySQL+Trigger" Deinerseits nötig, damit Du Dir dieses Vorgehen vorstellen kannst.
Und abschätzen kannst, was wohl schneller zusammenzuschreddern ist - die Trigger oder die unterschiedliche Fallbehandlung Insert/Delete auf PHP-Appz-Seite.
Grüße
Biber
Moin djfflow,
nein, da hätte ich keine bessere Idee. Würde ich genauso angehen.
Ist ja aus meiner Sicht auch wirklich "Programmlogik" und von daher natürlich am besten
Grüße
Biber
nein, da hätte ich keine bessere Idee. Würde ich genauso angehen.
Ist ja aus meiner Sicht auch wirklich "Programmlogik" und von daher natürlich am besten
- in einer Programmiersprache statt einer Datenmanipulationssprache zu lösen (PHP statt SQL)
- und zweitens besser im Hauptspeicher lösbar als auf der Festplatte ("mach eine fallunterscheidung" statt "lösche alle Sätze, lege dann alle neu an")
Grüße
Biber