php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.07.2011, 11:19  
Neuer Benutzer
 
Registriert seit: 30.06.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
macringo befindet sich auf einem aufstrebenden Ast
Standard Optimale Tabellenstruktur

Wie folgt mal eine Einsteiger-Frage zur optimalen Tabellenstruktur. In einer Datenbank sind in einer Tabelle Schüler gespeichert, in einer anderen die Teilnahme an Sport-Veranstaltungen, sowie die erreichte Punktzahl in den einzelnen Disziplinen. Folgende Struktur:

Tabelle: schueler
id | name | klasse

Tabelle: veranstaltungen
veranstaltung | schueler | punkte_disziplin_1 | punkte_disziplin_2 | punkte_disziplin_3

(Hilfs)Tabelle: schueler_veranstaltungen
schueler_id | veranstaltungs_id


Frage 1: Tabellenstruktur soweit richtig/optimal?

Frage 2: Wie Frage ich nun am besten ab, welcher Schüler die meisten Punkte erreicht hat. Also "Name", "Klasse", "Veranstaltung", "Punkte". Wobei die Punkte, die Summe aus allen drei Disziplinen ist. In der Tabelle "veranstaltungen" ist ein Schüler mehrmals enthalten, da er an unterschiedlichen Veranstaltungen teilgenommen haben kann.

Gewünschtes Ergebnis:
Klaus Müller, 11b, Fussball-Turnier, 100 (Punkte)
Klaus Müller, 11b, Basketball-Turnier, 90 (Punkte)
Elke Schmidt, 10a, Basketball-Turnier, 40 (Punkte)
macringo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.07.2011, 11:28  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von macringo Beitrag anzeigen
Frage 1: Tabellenstruktur soweit richtig/optimal?
Die Frage ist in 99,9% aller Fälle zu verneinen, wenn „durchnummerierte“ Spaltennamen irgendwo auftauchen.

Zitat:
Frage 2: Wie Frage ich nun am besten ab, welcher Schüler die meisten Punkte erreicht hat. Also "Name", "Klasse", "Veranstaltung", "Punkte". Wobei die Punkte, die Summe aus allen drei Disziplinen ist.
Wenn dich eine Summe interessiert - dann bildest du die wohl am besten erst mal

Zitat:
In der Tabelle "veranstaltungen" ist ein Schüler mehrmals enthalten, da er an unterschiedlichen Veranstaltungen teilgenommen haben kann.
Und, willst du ihn dann auch mehrfach im Ergebnis haben, wenn er in mehreren Veranstaltungen der jeweils Beste war?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 04.07.2011, 11:33  
Neuer Benutzer
 
Registriert seit: 30.06.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
macringo befindet sich auf einem aufstrebenden Ast
Standard

Ja, am Ende soll in der Liste ein Schüler auch doppelt erscheinen, wenn er an mehreren Veranstaltungen teilgenommen hat.

"punkte_disziplin" durchnummeriert ist lediglich zur Vereinfachung der Frage. Das gehört zweifelsohne in eine extra Tabelle.
macringo ist offline   Mit Zitat antworten
Alt 04.07.2011, 12:09  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Etwas weiter ausnormalisiert

Code:
schuljahr
id | year_start | year_end
1 | 2011 | 2012

klasse
id | class | appendix | schuljahr_id
1 | 11 | b | 1

schueler
id | firstname | lastname

klasse_hat_schueler
id | klasse_id | schueler_id

veranstaltung
id | name | date

disziplin
id | name

veranstaltung_hat_disziplin
id | veranstaltung_id | disziplin_id

veranstaltung_hat_teilnehmer
id | veranstaltung_hat_disziplin_id | klasse_hat_schueler_id | punkte
Evtl. reicht es ja für deine Belange, wenn du zumindest die Disziplinen (eine Aufzählung) ausnormalisierst und in eine eigene Tabelle auslagerst. Übrigens ist mein Tabellenvorschlag auch noch nicht komplett ausnormalisiert, wenn du eine Disziplin auch noch einer Sportart zurechnen willst (Leichtathletik: 100m, 3000m; Schwimmen: Brustschwimmen 50m, Freistil 50m, ..).
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 04.07.2011, 12:13  
Neuer Benutzer
 
Registriert seit: 30.06.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
macringo befindet sich auf einem aufstrebenden Ast
Standard

Dankeschön. Jetzt fehlt mir nur noch ein Tipp, wie man am sinnvollsten die Abfrage gestaltet.
macringo ist offline   Mit Zitat antworten
Alt 04.07.2011, 12:49  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Das steht dann in veranstaltung_hat_teilnehmer, du musst nur nach Punkten sortieren und die Fremdschlüssel auflösen. Filtern (bspw. nach Jahrgang oder Veranstaltung) kannst du dann auch.

SELECT * FROM veranstaltung_hat_teilnehmer ORDER BY punkte DESC
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 04.07.2011, 14:53  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Also das würde ich persönlich etwas anders machen.

Code:
veranstaltung_hat_teilnehmer
id | veranstaltung_id | disziplin_id | schueler_id | punkte
Zwar nicht die reine Lehre, ist aber imho sehr viel leichter abzufragen zumal joins ja eine recht teure Angelegenheit sind.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 04.07.2011, 18:14  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ja, vermutlich etwas zu stark normalisiert. Kommt ja auch auf die Beduerfnisse an.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 04.07.2011, 19:53  
Erfahrener Benutzer
 
Benutzerbild von splasch
 
Registriert seit: 05.01.2009
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
splasch kann nur auf Besserung hoffen
Standard

Als Tablen type würd ich dir noch innodb empfehlen. Das erlaubt dir die Beziehungen gleich festzulegen. (casade unsw.)

Mfg Splasch
splasch ist offline   Mit Zitat antworten
Alt 04.07.2011, 20:58  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

OT: Ich hab mal eine Datenbank gesehen in der waren die Namen normalisiert. Sprich es gab Tabellen für Vor- und Nachnamen, die dann von der Personen-Tabelle referenziert wurden

Gleiches selbstverständlich für PLZ und Orte. Allein die Postadresse zu generieren war eine Tagesaufgabe
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
CSS Übermittlung für optimale Ladezeiten ? Exon HTML, Usability und Barrierefreiheit 5 10.05.2011 11:25
[Erledigt] Grundsatzfrage über Tabellenstruktur und SQL Statement Bravestar2010 Datenbanken 2 04.02.2011 11:49
[Erledigt] Optimale PC-Konfiguration Manko10 Off-Topic Diskussionen 102 04.03.2010 20:59
[Erledigt] Problem mit mySQL Datenbanken 7 27.09.2005 12:06
Suche optimale Lösung! Beitragsarchiv 5 03.08.2005 14:28
mysql dump einspielen (ohne phpmyadmin) PHP Tipps 2005-2 6 18.06.2005 21:50
[Erledigt] mysql tabellenstruktur? Datenbanken 3 07.08.2004 10:40
Ist Phase 5 der optimale PHP Editor (freeware?) PHP Tipps 2004 1 29.07.2004 09:22
Brauche eure meinung bei meiner SQL tabellenstruktur mAy^daY Datenbanken 4 10.07.2004 12:06
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
tabellenstruktur php, mysql tabellenstruktur optimal, tabellenstruktur für tabelle, phpmyadmin tabelle struktur sortieren, sportliche großveranstaltungen 2009 tabelle, tabellenaufbau php, optimale schülerzahlen, optimal tabellenstruktur fussball, sql tabellenstruktur fussball, zu stark normalisiert, schülerzahl in deutschland 2000/2011 tabelle, schüler bewerten tabelle mit smilies

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum