Einzelnen Beitrag anzeigen
  #2  
Alt 18.07.2008, 12:52:17
ascer ascer ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 137
AW: Datenbank Schema - bin Anfänger

Hi,


1. hab ich gleich mal eine Gegenfrage (*g*): Mit welchem Programm hast denn deine Planung erstellt?

2. Kann man das so machen, spricht nichts gegen, aber wo ist eigentlich bei "team_user" dein Primary Key??

3. würde ich bei matches das in teamid_a und teamid_b umbenennen, damit sofort klar ist das es sich hier nicht
um das team, also den namen, handelt sondern um die ID des entsprechenden teams

4. wenn du nicht mehr als gerundet 65000 user bzw teams hast reicht ein SMALLINT für deine Primary Keys und für
die user_ids bzw. team_ids vollkommen aus

5. überall wo du keine Vorzeichen brauchst, also nur positive Zahlen, wie z.B. bei den PrimaryKeys oder bei den team_ids
bzw. user_ids ( weil du wirst ja wohl kaum nen User mit der ID "-5" haben, oder?? ) benutzt du am besten "unsigned" als
zusätzliches Attribut für deine Spalte...
signed (standard) -> mit Vorzeichen, bei SMALLINT dann z.B. -32.000 bis 32.000 (gerundet)
unsigned -> ohne Vorzeichen, bei SMALLINT dann z.B. 0 bis 65.000 (gerundet)

6. Ja, das Ranking würde man jetzt NICHT in einer Tabelle machen sondern per PHP die Daten auslesen und dann sortieren...
Allerdings, wenn du jetzt sagen wir mal 200 Teams hast und die haben 5000 Matches gespielt, dann würde das wohl ein bisschen
dauern, jedes Mal die "Punktzahl" von jedem Team neu auszulesen, also wäre die schlauste Idee wohl wenn du dir in deiner Teamtabelle
noch eine Spalte mehr machst namens "punkte" oder "score" oder so und da speicherst du immer die Punktzahl des Teams ab.
Dazu kannst du dir dann ja auch ein PHP-Skript schreiben, welches beim eintragen eines neuen Matches auch gleich die neuen Punktzahlen
für die beiden Teams ausrechnet...

Hast du aber sagen wir mal sowieso nur 10-20 Teams und die spielen im Jahr vielleicht 100 Matches und auf deine Seite gehen täglich nur
10 Leute, dann kannst es auch so lassen und jedes Mal die Punktzahl einfach aus den Punkten der einzelnen Matches generieren...



Musst du wissen, neue Spalte für Punktzahl in der Teamtabelle ist die elegantere Lösung, die besonders gewählt werden sollte wenn es auf
Perfomance ankommt...und einfach die Punktzahl aus der Match-Tabelle "summieren" ist die schnellere Lösung ( vom Aufwand her ) aber eben
auch die deutlich langsamere (besonders bei vielen leuten die sich das angucken bzw. Vielen Teams/Matches)

Abgesehen davon würde ich vielleicht noch bei "User" auf "vorname" sowie "nachname" und bei "teams" auf "name" einen Index legen, falls man mal
tatsächlich irgendwann einige Einträge in der DB hat und du mal nach Vornamen, Nachnamen oder Teamnamen suchen willst...


gruß,
Ascer
__________________
-------------------------------------------------------
Alle Angaben sind wie immer ohne Gewähr ;)
Für Korrekturen bin ich -immer- offen

--------------------------------------

Wer ist der größere Tor?
Der Tor, oder der, der dem Tor folgt?

--------------------------------------

-> Mein PC <-
-------------------------------------------------------

Geändert von ascer (18.07.2008 um 12:52:43 Uhr)
Mit Zitat antworten