Bei Freundesystem Freunde in Mysql Datenbank Speichern?
Ich bin gerade dabei ein Freundesystem zu programmieren und um Bungeecord und Bukkit zu verbinden habe ich gedacht ich speicher einfach die Freunde in einer MysQL datenbank. Jetzt aber die frage Wie kann ich die freunde speichern am besten in einer Spalte das ich die uuid vom Spieler Speicher und in der 2. Spalte die der Freunde. Oder gibt es eine andere Lösung (Ich will Bungeecord und Bukkit wegen der Freundesliste bzw Gui verbinden).
4 Antworten
Bei dem erstellen eines Datenbankprojektes gibt es einiges beachten. Zum ersten solltest Du Dir genau überlegen welche Entitäten du speichern willst. Es gibt Normalformen die Du Dir mal ansehen solltest. Es gibt 3 Normalformen die für dich ausschlaggebend sind.
1. Normalform
Jedes Attribut eines Datensatzes muss Atomar sein.
Beispiel: Schreibe nicht PLZ, Ort Und Straße in ein Attribut.
2. Normalform
Entspricht nur wenn es die erste Normalform einhält.
Es dürfen sich keine Daten wiederholen.
Stelle dir vor du hast eine Tabelle von Musiktiteln mit samt Band usw.
Lied: Band:
Thunderstruck AC / DC
Hells Bells AC / DC
T.N.T AC / DC
Highway to Hell AC / DC
____________________________________
AC / DC wiederholt sich zu oft und ist so mit unnötig.
Ideal wäre es eine eigene Band Tabelle anzulegen. Weil dort jede Band nur einmal drin steht. Somit hast du keine Wiederholungen.
https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
Soweit ich mich mit Minecraft auskenne gibt es den Minecraft Username und die UUID. Die UUID kann übrigens über den Namen über bestimmte Web APIs über ein GET Abgefragt werden. Auch umgekehrt.
Soweit ich das auch verstanden habe, willst du das ein MC-User mehrere User als Freunde haben kann.
Vielleicht so: Siehe Bild.
Du musst übrigens in der Friend Tabelle USER_ID und FRIEND_ID zu einem zusammengesetzen Primärschlüssel machen. Dadurch ist durch das DBMS sichergestellt, dass ein User einen Freund nur einmal haben kann und nich mehrmals.
LG SeriousLaw

Übrigens:
Auch dürfen USER_ID und FRIEND_ID in der FriendTabelle nicht die selben
sein, sonst hast du dich selbst als Freund. Aber das muss in die
Programmlogik (Validierung).
1. Tabelle mit allen userdaten zb id, name,email...
2. Tabelle mit allen freundschaften und freundschaftsdaten wenn notwendig also id,srcuid, dstuid
Ich würde in der einen Spalte VARCHAR für die UUID nehmen, und in der zweiten TEXT und dort dann ein JSON-Format mit den Freunden.
LG :)
Da musst du einfach mal googeln, man kann mit Java JSONS Parsen und durch Iterieren also kann man bestimmt auch welche erstellen.
Ich habe die Freunde einfach so gespeicht: "Freund1.Freund2,Freund3" und diese dann mit der "String[] friends = IRGENDEINSTRING.split(",");" Codezeile wieder in einzelne Freunde umgewandelt sozusagen
LG Nico
P.S. Ich hoffe du weiß was ich meine ;| bin nicht so gut im erklären ;)
Und wie geht das mit dem JSON Format?