Wie füge ich Daten richtig in die Datenbank ein?

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Tabula_Rasa

Mitglied
12 Mai 2017
195
2
18
Hallo zusammen,

ich frage mich, wie man Daten richtig in die Datenbank einfügt, denn wenn ich eine Tabelle Person und Hobbys habe

Person

id INTEGER
name VARCHAR(30)
hobby_id INTEGER

Hobby

id INTEGER
name VARCHAR(30)

und eine Person mehrere Hobbys haben kann, habe ich für eine Person je nachdem wie viele Hobbys sie hat, mehrere Datensätze, zB.:

1, Christian, 3
1, Christian, 5

Wenn ich nun eine Array hätte, das die ID von verschiedenen Hobbys enthält
Code:
let hobbys = [3,5];
müsste ich dann separat zwei POST-Requests an den Server schicken in einer for loop?

Code:
for(let hobby of hobbys)
    this.service.post({id: 1, name: "Christian", hoby_id: hobby});
Falls ja, wenn ich die Daten per GET vom Server holen möchte, würde ich mehrere Datensätze der gleichen Person als JSON zurückgeliefert bekommen, aber eigentlich möchte ich nur die eine Person, die halt mehrere Hobbys besitzen kann.
Wenn ich in einer for loop die Daten ausgebe, würde ich mehrmals dieselbe Person ausgeben nur mit anderem Hobby, was auch nicht der Sinn sein kann.

Wie geht man generell da vor?
 

Tronjer

Moderator
Teammitglied
Moderator
8 Oktober 2010
5.184
468
83
Berlin
Eine Request-Chain im Frontend auszuführen, bei der das Ergebnis eines vorhergehenden Request notwendig für nachfolgende ist, sollte möglichst vermieden werden. Um das Ganze auf einen Request zu reduzieren, gibt es mehrere Ansätze.

- Die Abfrage von Person und Hobbys im Backend ausführen und das Ergebnis über einen REST Endpoint (URL) als JSON Object ausliefern.

- Falls sich die Eigenschaften der Hobbies nicht ändern, anstelle der Hobby IDs die kompletten Hobby Objects im Person Object einbetten.

- Sowohl Person als auch Hobbies über einen GraphQL Server ausliefern und die Queries im Frontend ausführen.


Möglichkeit 2 wäre die einfachste. Dafür bräuchtest du nicht mal ein eigenes Backend, sondern könntest auf einen Provider wie Firebase zurückgreifen.
 
  • Like
Reaktionen: Tabula_Rasa