php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.07.2011, 01:37  
Erfahrener Benutzer
 
Benutzerbild von DrDreistein
 
Registriert seit: 23.03.2011
Beiträge: 134
PHP-Kenntnisse:
Anfänger
DrDreistein befindet sich auf einem aufstrebenden Ast
Standard

Meinst du sowas wie:

Code:
Feedback-Formulare Table

ID    Titel                 etc.
1     Erstes Formular
2     Zweites Formular

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

Fragen Table

ID    formID   Title                                         Antworttyp
25     1        Wie geht es dir?                               radio
28     1        Welche zutaten wollen sie auf ihre pizza       check

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

Antworten Table

fragenID  Title
25        Gut
25        Schlecht
25        Totalabgefucktschlechtdasichsterbenwill
Hat jetzt lang gedauert das zu schreiben^^

EDIT:

Entsprechende Query würde dann so aussehen:

Code:
SELECT
	`ID`, `formID`, `Titel`, `Antworttyp`
FROM
	Fragen
WHERE
	`formID` = ?
JOIN 
	Antworten
ON
	Fragen.ID = Antworten.fragenID
__________________
Ein Rudel agressiver Wölfe nennt man auch Wolfgang.
Alles, was das PHP-Herz begehrt - Staticfloat

Geändert von DrDreistein (23.07.2011 um 01:53 Uhr).
DrDreistein ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.07.2011, 22:30  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

ist doch nicht so schwer sich das mal anzugucken:

http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

wenn du dich noch so wenig mit datenbanken auseinandergesetzt hast, ist wohl wirklich egal ob du postgre oder mysql verwendest
notyyy ist offline   Mit Zitat antworten
Alt 24.07.2011, 00:27  
Erfahrener Benutzer
 
Benutzerbild von DrDreistein
 
Registriert seit: 23.03.2011
Beiträge: 134
PHP-Kenntnisse:
Anfänger
DrDreistein befindet sich auf einem aufstrebenden Ast
Standard

Das ist doch genau die 1. Normalform

Es gibt eine Tabelle wo die einzelnen Formulareigenschaften wie Name, Erstellungsdatum, Änderungsdatum etc. gespeichert werden. Diese besitzt eine Spalte ID. Auf das wird Auto Increment gesetzt, so gibts für jedes Feedback-formular eine eindeutige ID.

Die Fragen werden in einer Eigenen Tabelle gespeichert. Diese besitzt eine Spalte formID. Durch dieses Feld wird beschrieben auf welches Formular, aus der Tabelle mit den Formulareigenschaften, sich die Frage bezieht. Daneben gibts eine Spalte die die Frage enthält und eine Spalte wo der Antworttyp gespeichert wird. Kann man gegebenfalls auch als int abspeichern damit es nicht so viel Speicher verbraucht (1 für Textarea, 2 für Checkbox etc.)

Dann gibt es noch eine dritte Tabelle wo die Antworten gespeichert sind. Die haben eine Spalte wo die ID der Frage gespeichert wird und eine Spalte mit der Antwort.

Was ist da jetzt so falsch daran?
__________________
Ein Rudel agressiver Wölfe nennt man auch Wolfgang.
Alles, was das PHP-Herz begehrt - Staticfloat
DrDreistein ist offline   Mit Zitat antworten
Alt 30.07.2011, 12:06  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Eine Lektüreempfehlung: http://v.hdm-stuttgart.de/~riekert/l...kelz/chap4.htm

Bevor Du Dir Gedanken über die Formulare machst und sogar schon solche Dinge wie Checkbox oder Radiofeld, mußt Du die ganze Aufgabe in logische Einheiten zerlegen.
Schema:
Es gibt Fragen
Zu jeder Frage gibt es immer genau eine Antwort

Und damit sind wir schon bei einem entscheidenden Punkt. Wenn es zu jeder Frage immer genau eine Antwort gibt, dann gehören die zusammen in eine Tabelle. Sollte es jedoch auf eine Frage auch mehrere Antworten geben können, dan brauchst Du 2 Tabellen.
So etwas nennt man ein Datenmodell. Nachdem das Datenmodell steht und ausgiebig geprüft wurde, dann erst schaltest Du überhaupt den Computer ein. Bis dahin brauchst Du Bleistift, Papier und Verstand. Ganz altmodisch.
achtelpetit ist gerade online   Mit Zitat antworten
Alt 30.07.2011, 16:49  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von achtelpetit Beitrag anzeigen
Wenn es zu jeder Frage immer genau eine Antwort gibt, dann gehören die zusammen in eine Tabelle.
Sehe ich anders. Ein und dieselbe Antwort kann auch für eine andere Frage gültig sein, und dann hast du wieder redundante Daten, wenn du Frage/Antwort zusammenziehst.

Alle Ja/Nein Fragen zählen hierzu, aber auch andere:

Welche Farbe hat der Himmel?
-> Blau
Welche Farbe hat der Ozean?
-> Blau
Wie ist dein Zustand am Wochenende?
-> Blau

Fragen und Antworten gehören in eigene Tabellen. Für die Zuordnung wird eine dritte Tabelle verwendet. Falls es eine Art MultipleChoice Test ist, wo 4 Antworten vorgegeben werden, aber nur 1 richtig ist, gehört diese Zuordnung wieder in eine eigene Tabelle.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 30.07.2011, 17:05  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Ein und dieselbe Antwort kann auch für eine andere Frage gültig sein, und dann hast du wieder redundante Daten, wenn du Frage/Antwort zusammenziehst.
Da hast Du völlig recht; und eben weil man so etwas zunächst analysieren muß, braucht man zunächst Bleistift, Papier und Verstand.
achtelpetit ist gerade online   Mit Zitat antworten
Alt 03.08.2011, 01:24  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 300
PHP-Kenntnisse:
Fortgeschritten
Asterixus sorgt für eine eindrucksvolle AtmosphäreAsterixus sorgt für eine eindrucksvolle Atmosphäre
Asterixus eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Sehe ich anders. Ein und dieselbe Antwort kann auch für eine andere Frage gültig sein, und dann hast du wieder redundante Daten, wenn du Frage/Antwort zusammenziehst.

Alle Ja/Nein Fragen zählen hierzu, aber auch andere:

Welche Farbe hat der Himmel?
-> Blau
Welche Farbe hat der Ozean?
-> Blau
Wie ist dein Zustand am Wochenende?
-> Blau

Fragen und Antworten gehören in eigene Tabellen. Für die Zuordnung wird eine dritte Tabelle verwendet. Falls es eine Art MultipleChoice Test ist, wo 4 Antworten vorgegeben werden, aber nur 1 richtig ist, gehört diese Zuordnung wieder in eine eigene Tabelle.
Da solche Fälle verhältnismäßig selten auftreten sollten, würde ich sagen, dass eine Denormalisierung hier nicht verkehrt ist.
Asterixus ist offline   Mit Zitat antworten
Alt 07.08.2011, 00:22  
Neuer Benutzer
 
Registriert seit: 05.08.2011
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
mmovchin befindet sich auf einem aufstrebenden Ast
Standard

Ich würde sagen es hat viel mit dem Einsatz zu tun. Hast du ein hochauslastendes Script mit vielen Datenbankabfragen vor?
mmovchin ist offline   Mit Zitat antworten
Alt 10.08.2011, 22:57  
Erfahrener Benutzer
 
Benutzerbild von DrDreistein
 
Registriert seit: 23.03.2011
Beiträge: 134
PHP-Kenntnisse:
Anfänger
DrDreistein befindet sich auf einem aufstrebenden Ast
Standard

Naja, wenn man ein Formular erstellt oder editiert, denke ich kann man es verkraften, wenns mal etwas länger dauert, da das dann eben doch nicht so oft passiert. Beim auslesen der Daten wirds eher nicht so vorteilhaft weils eben viel öfter aufgerufen wird bzw. ziemlich oft auf einmal, da das "Feedback" eben meist in einer Schulstunde abgegeben wird.
__________________
Ein Rudel agressiver Wölfe nennt man auch Wolfgang.
Alles, was das PHP-Herz begehrt - Staticfloat
DrDreistein ist offline   Mit Zitat antworten
Alt 11.08.2011, 08:42  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Leg' doch einfach mal fest, was die DB leisten soll. Ich bin sicher, daß hier sich genug Fachwissen versammelt, um Dich dann bei deiner Entscheidung zu beraten.
Wahrscheinlich ist es ohnehin wurscht welche DB eingesetzt wird. Die Unterschiede zwischen den Systemen werden erst wichtig, wenn es um sehr große Datenmengen oder sehr spezielle Anforderungen geht. Ein paar Hunderttausend Datensätze sind keine sehr große Datenmenge.
achtelpetit ist gerade online   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
Mysql funktioniert nicht (Erweiterung nicht erkannt!?) pfump Server, Hosting und Workstations 10 17.03.2012 11:07
Biete PHP + (MySQL || PostgreSQL) + ggbf. Ext JS als Ingenieur sysr Beruflich 0 07.02.2011 17:18
MySQL Datentransfer (Dateigroesse 4MB) via Shell Zugang oder einfacher promoterlv Datenbanken 1 14.11.2010 22:12
[Erledigt] PHP bekommt keine Verbindung zu MySQL SaKe Datenbanken 15 20.09.2010 14:45
Mysql fehler bei externen Zugriff SteiniKeule Datenbanken 4 18.06.2010 12:54
PDO MySQL abfrage funktioniert nicht Bloodydead PHP Tipps 2010 8 18.06.2010 11:08
Erkenntnisse aus der MySQL -> Oracle migration Donald Datenbanken 9 13.04.2010 14:24
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
XML-Datenbank oder MYSQL kleinhans Datenbanken 8 20.06.2006 15:50
MySQL oder PostgreSQL? Welche Version? schiff Datenbanken 0 07.03.2006 14:20
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
CMS (MySQL) auch auf PostgreSQL lauffähig machen PHP-Fortgeschrittene 1 04.11.2004 13:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql 2 postgresql

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