php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.10.2011, 15:54  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard [Erledigt] DB-Design für kleines Quiz gut so?

Hallo!

Folgendes DB-Design für ein kleines Sportquiz. Der User soll per Multiple Choice immer nur einen Tipp je Frage abgeben können. Aber: Es könnten aber mehr Antworten richtig sein - zB welcher Spieler schiesst die meisten Tore - können ja mal leicht welche gleich viel haben.

Mir gehts nun darum ob dieses DB-Design im Sinne der Normalisierung und Flexibiltät so gut ist oder würdet ihr was anders machen? (ich freu mich schon auf die ganzen JOINS die hier dann nötig sind für die ganzen Abfragen ). Ich habe zumindest keine "einfachere" Variante gefunden die immer noch sauber wäre.

Die ids sind dann natürlich Autoincrement Werte, ich habe diese unten der Übersichtlichkeit so angegeben, damit ich nicht überall lauter 1 en drinnen stehen hab. Würde es als/mit InnoDB und ForeignKeys dann umsetzen.


Code:
Tab Fragen
-------------------------------
id  | Fragen
-------------------------------
1001  Wer gewinnt den Cup?
1002  Gibt es Flitzer?
1003  Wie viele Tore gibt es?
1004  Wer hat die meisten Tore?


Tab Antworten
-------------------------------
id  | Antwort
-------------------------------
3001  Ja
3002  Nein
3003  FC Schiesser
3004  SV Torjäger
3005  SV Superkicker
3006  1 - 10
3007  11 - 20
3008  21 - 30


Tab Mögliche Antworten zur Frage:
-------------------------------
id  | Frage | Antwort(en) 
-------------------------------
7001   1001    3003
7002   1001    3004
7003   1001    3005
7004   1002    3001
7004   1002    3002


Tab Richtige Antwort + Punkte dafür
---------------------------------------
id  | Frage | RichtigeAntwort | Punkte 
---------------------------------------
5001   1001    3004               5
5002   1002    3002               5
5003   1003    3007               5
5004   1004    3003               5
5005   1004    3005               7


Tab Tipps
-------------------------------
id  | user_id | frage  | tipp
-------------------------------
9001  hans      1001     3004
9002  hans      1002     3001
9003  franz     1001     3005
9004  robert    1001     3003

Danke für Feedback - auch gerne negatives!

[edit]

Ich habe das gestern mal durchgespielt..

Nachdem es noch andere (hier nicht erwähnte) Spalten gibt deren Werte ich auch öfters brauche (wie zB hat jede Wette eine "Liga" (zB Bundesliga, EL, CL, ...) und dann noch eine "Runde" (zB Gruppe A, Halbfinale, Finale...)) würde ich mich da zu Tode normalisieren, weil das wären ja dann alleine zwei zusätzliche Tabellen nur für Liga und Runde und dann noch die fünf von oben...

Irgendwie ist das zu viel, da wird das sinnvolle Abfragen von div. Auswertungen, Punkteberechnungen, Statistik etc.. dann schon sehr mühsam.

Eine endgültige Lösung hab ich noch nicht, muss ich noch überdenken.

LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (21.10.2011 um 09:25 Uhr).
hausl ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.10.2011, 09:37  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.856
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Nunja, tot-normalisieren würde ich das nicht, ist natürlich fraglich ob ( und ob vielleicht irgendwann ) sich die Gegebenheit der Fragestellung ändert ( ob die Fragen dann relativ zu den Ligen, zur Gruppe oder was weiß ich gestellt werden ). Andernfalls sollte doch nur die getippte Antworte in relation zur Liga / Gruppe stehen, ob ich dafür jetzt unbedingt noch ein table anlegen würde, denke ich nicht, eher das table für die abgegebenen Tipps erweitern.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 24.10.2011, 10:00  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Ich hab diese letzte Erweiterung derzeit mal un-normalisiert umgesetzt. Wenn es später auf Grund einer anderen Änderung nötig wäre dann muss ich halt erneut schauen.. nachdem es aber eh nur ein mehr oder weniger Hobby Projekt im "erweiterten privaten Kreis" ist, ist es nicht so tragisch..

Nochwas.. ein Array serialisiert in der DB ablegen hat eigenltich keine Nachteile, oder?

Ich hab als nächsten Schritt zB folgenden Fall:

Mögliche Antworten: "Robert Mustermann;Hans Klein;Robert Huber; Max Tester"
Richtige Antworten: "Robert Mustermann;MaxTester"

Es soll nun Punkte für jeden geben der eine der richtigen Antwort abgeegben hat aber diese können je Antwort unterschieldich sein.

zB
Richtige Antworten: "Robert Mustermann[6];MaxTester[8]"

Und ich bin nun am überlegen ob ich das eben so in die "csv" Lösung reinfritzle mit "[..]" oder so oder das ganze gleich aufbreche und als Array darstelle und den dann serialisiert in die DB geben sollte.

LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (24.10.2011 um 10:39 Uhr).
hausl ist offline   Mit Zitat antworten
Alt 24.10.2011, 10:56  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.856
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Wieso willst du das speichern, das kannst du doch "relativ einfach" per select berechnen wenns gebraucht wird o_O
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 24.10.2011, 11:16  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Nein, weil ich die Daten eben nicht gem. ersten Post habe...

Ich habs derzeit so

Mögliche Antworten: "Robert Mustermann;Hans Klein;Robert Huber; Max Tester"
Richtige Antworten: "Robert Mustermann;MaxTester"

und soll nun das mit den Punkten für die jeweilige Antwort einbauen und hätte eben die ssv (Semikolon Seperated Values) oder die Array serialise Geschichte mal angedacht.

LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 24.10.2011, 11:26  
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 298
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Du hast doch eine Tabelle in der die richtigen Antworten stehen. Dort kannst du doch auch 2 richtige Antworten mit verschiedenen Punkten hinterlegen, oder nicht?
KarlEgon ist offline   Mit Zitat antworten
Alt 24.10.2011, 11:30  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Also wenn dann eher "Robert Mustermann|6;MaxTester|8". Ist einfacher wieder aufzubrechen.

Aber mit der eingangs geposteten Struktur wäre es halt noch viel einfacher
__________________
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 24.10.2011, 12:24  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Zitat:
Zitat von mquadrat Beitrag anzeigen
Aber mit der eingangs geposteten Struktur wäre es halt noch viel einfacher
Derzeit hab ich 2 Spalten, dann hätt ich 5 und müßte alle Auswertungen, Eingabe- /Ausgabe-Form Routinen Userseitig, Ergebnissverwaltung Adminseitig.. etc.. überarbeiten.. davon möcht ich ehrlich geasagt momentan Abstand halten.

Zitat:
Zitat von mquadrat Beitrag anzeigen
Also wenn dann eher "Robert Mustermann|6;MaxTester|8". Ist einfacher wieder aufzubrechen.
Was wäre mit einem serializden Array? Unterm Strich würd ich sowieso wieder ein Array draus machen.. alleine schon weil ich in_array() verwende um die eine abgegebene Antwort in den möglichen Antworten (= explode des Semikolon-Strings aus der DB) zu suchen, bevor ich da mit Strings herumschnibble.

GL
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (24.10.2011 um 12:30 Uhr).
hausl 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
Kleines Projekt sucht ein kleines CMS kenzuko Sonstige 3 19.07.2011 22:03
Eure Meinung zum Design einer Seite :) Jonny2010 Off-Topic Diskussionen 16 14.04.2011 22:03
Quiz programmieren bierregal Sonstige 1 18.03.2011 13:33
(Hosting-) Design zu verkaufen JLNNN Gewerblich 3 05.02.2011 18:10
Änderung Quiz und Design bierregal Sonstige 0 16.01.2011 13:07
Design Pattern Harry B. Software-Design 7 02.09.2008 20:49
Design und Code Trennen TeazY PHP Tipps 2008 29 21.05.2008 12:08
Design Beitragsarchiv 26 04.06.2005 20:56
[PHP] Design Schutz für ein Gästebuch I-Spy PHP Tipps 2005 5 01.01.2005 11:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
db design id, db ftage id 1004 technik

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:00 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