ich hatte erst eine große tabelle in der alle spiele und alle spieler drinstehen, jedoch hab ich dann wie gesagt in 80% der felder ne 0.
Beides zusammen in *einer* Tabelle? Dann ist das wenig verwunderlich - aufsplitten.
und ja, ich würde am liebsten auch gerne ints einsetzen und keine varchars, jedoch hab ich leider auch ergebnisse die jenseits der 100.000 liegen und da scheint mysql nix passendes zu haben.
Hint: Der normale Integer wird in MySQL standardmäßig auf `INT(11)` gesetzt. 11, das ist die Zahl der Stellen. Von `BIGINT` gar nicht zu reden.
bei meinem entwurf hab ich auch keine einzige zeile mit 0 , da ich ja pro spieler(tabelle) dynamisch spalten anmache, sobald der spieler bei einem bestimmten ergebnis ein resultat erzielt hat
Fühl' dich dafür von mir auf'n Kopp gehauen
bigint hab ich auch schon probiert, wenn ich dann aber einen wert jenseits der 65536 eingebe bekomm ich in mysql nen error ???
Dann stimmt da bei dir was nicht. `BIGINT` geht von -9223372036854775808 bis 9223372036854775807.
Direkt zum Schema: Zwei Tabellen, `ergebnisse` und `spieler` (hier ist Englisch ein weiteres Mal besser: `players` trifft es durch das Mehrzahl-"s" genauer zur Abgrenzung eines einzelnen "Spieler"s). Beiden verpasst du direkt eine ID und setzt die als Primärschlüssel.
Je nachdem in welcher Beziehung die Ergebnisse zu den Spielern stehen, verwendest du eine entsprechende Relation und einen oder zwei Fremdschlüssel und ggf. eine Zwischentabelle. Betrifft bspw. ein Ergebnis nur einen einzigen Spieler, erhält die `ergebnisse`-Tabelle ein Attribut `player_id` als Fremdschlüssel.
Für jedes vorhandene Ergebnis machst du dann einen `INSERT` in die Tabelle. Ist der Spieler noch nicht angelegt, machst du vorher ein `INSERT` in die Spieler-Tabelle.