SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 18.07.2008, 12:18:37
tombola tombola ist offline
Anfänger
 
Registriert seit: Jul 2008
Alter: 42
Beiträge: 10
Datenbank Schema - bin Anfänger

Hallo,

ich habe mir mal gedanken zu einem datenbank schema gemacht.

ich möchte eine klein liga abbilden.

also user, teams und deren gespielte spiele festhalten.
ist das so wie es im screen ist richtig normalisiert?

wie erstelle ich mir jetzt die die rnaking tabelle? eine neue tabelle erzeugen? oder aus dne bestehendne via joins zusammenfrickeln?
Miniaturansicht angehängter Grafiken
tabellendesign.JPG  
Mit Zitat antworten
  #2  
Alt 18.07.2008, 13: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 13:52:43 Uhr)
Mit Zitat antworten
  #3  
Alt 18.07.2008, 14:11:54
tombola tombola ist offline
Anfänger
 
Registriert seit: Jul 2008
Alter: 42
Beiträge: 10
AW: Datenbank Schema - bin Anfänger

Vielen Dank für Deine super ausführliche Antwort. Ich werde mir Deine Verbesserungen jetzt zur Brust nehmen und mein Schema verbessern.

Zu Deiner Frage: MYSQL Workbench ;)

EDIT: Muss ich bei einer assoziativen Tabelle einen primary key festlegen? Laut normalisierung ja... aber macht das da überhaupt Sinn?

Zitat:
Zitat von ascer Beitrag anzeigen
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

Geändert von tombola (18.07.2008 um 14:13:29 Uhr)
Mit Zitat antworten
  #4  
Alt 18.07.2008, 15:42:17
tombola tombola ist offline
Anfänger
 
Registriert seit: Jul 2008
Alter: 42
Beiträge: 10
AW: Datenbank Schema - bin Anfänger

so habs mal verbessert.

bitte um wietere konstrktive kritik :)
Angehängte Dateien
Dateityp: pdf tabellendesign.pdf (67,2 KB, 129x aufgerufen)
Mit Zitat antworten
  #5  
Alt 18.07.2008, 16:01:06
tombola tombola ist offline
Anfänger
 
Registriert seit: Jul 2008
Alter: 42
Beiträge: 10
AW: Datenbank Schema - bin Anfänger

beim beutzen meines sql scripts tritt folgender Fehler auf:

you have an error in your sql syntax: check the manual to your mysql server version for the right syntax to use near ') , CONSTRIANT 'teams_team_id_fk1' FOREIGN KEY ('team_id_a')
REFER' at line 9

das scirpt ist anbei, allerdings steht da .doc statt .sql da cih sonst ciht hätte hochladen können.
Angehängte Dateien
Dateityp: doc querys.doc (4,5 KB, 103x aufgerufen)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datum in Datenbank Schreiben Sleepy MySQLi/PDO/(MySQL) 8 18.12.2007 23:28:32
Probleme mit Datum aus Datenbank auslesen Zippo1979 MySQLi/PDO/(MySQL) 6 18.12.2006 14:27:27
Auslesen und beschreiben einer MySQL Datenbank linux23 MySQLi/PDO/(MySQL) 8 10.12.2006 16:13:22
eine Frage von einem Anfänger an die Profis jtbkn MySQLi/PDO/(MySQL) 4 11.04.2006 20:44:27
Text & Variable aus Datenbank auslesen und ausgeben Don Stefano PHP Grundlagen 6 29.09.2005 00:47:18


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:48:27 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt