Aco: Daten einer Tabelle in eine andere übertragen

Beitrag lesen

Hallo zusammen,

ich soll einen routing algorithmus in php programmieren und die routingtabellen in einer datenbank abspeichern.

zur zeit habe ich fünf router (in fünf tabellen), es können jedoch weitere hinzugefügt, bzw. weggenommen werden.

mein aktueller datensatz:

router_a

target|costs|gateway
---------------------
B     |2    |B
D     |1    |D
E     |1    |E

router_b

target|costs|gateway
---------------------
A     |2    |A
C     |1    |C
D     |1    |D

router_c

target|costs|gateway
---------------------
B     |1    |B

router_d

target|costs|gateway
---------------------
A     |1    |A
B     |1    |B
E     |1    |E

router_e

target|costs|gateway
---------------------
A     |1    |A
D     |1    |D

so sehen die tabellen nach dem ersten schritt aus. alle haben drei spalten mit denselben spaltennamen. die informationen  werden über ein html-eingabeformular übermittelt.

nun sollen die router allerdings ihre tabellen, wo im moment nur benachbarte router drin stehen, miteinander austauschen. konkret bedeutet das z.b. für router_a, nachdem er die tabelle von router_b erhalten hat:

router_a

target|costs|gateway
---------------------
B     |2    |B       \ D     |1    |D       -> alte einträge
E     |1    |E       /
A     |4    |B       -> dieser eintrag müsste wegfallen, da redundant
C     |3    |B
D     |3    |B       -> dieser müsste ebenfalls weg
       |     +--------> als gateway wird überall router_b eingetragen
       +--------------> costs von router_a mit router_b addieren

die neuen informationen sollen nicht einfach mit der alten tabelle verknüpft werden, sondern in die bestehende tabelle reingeschrieben werden. alle doppelten einträge sollen gelöscht werden, bzw. einträge mit niedrigsten costs sollen behalten werden.
wenn ich z.b. router_a nach router_b, costs 2 eingebe, dann soll der umgekehrte eintrag auch sofort in die tabelle von router_b geschrieben werden.

das ist mein erstes "größeres" projekt mit mysql-datenbanken. mein wissen ist noch sehr beschränkt, ich hoffe deshalb, dass ihr mir weiterhelfen könnt!

vielen dank im voraus!