php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 17-02-2010, 13:56
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard Umfrage Datenbank Design

Hallo Leute,
hab eine Frage zu dem DB design.
Möchte einen Umfrage Formular erstellen.
Ca. 7 Fragen. Hier sind einige Beispiele.
Frage 1
Wie finden Sie unsere Seite:
Sehr Gut
Gut
Mittelmäßig
Schlecht.

Frage 2
Sind Sie mit unserem Support zufrieden.
Sehr Gut
Gut
Mittelmäßig
Schlecht.

Meine Frage:
Was ist besser in dem Fall eine Tabelle mit
ID Frage1, Frage2, Frage3, Frage4 etc..
Oder
Für jede Frage eine Tabelle zu erstellen?

Vielen Dank im Voraus.
Mit Zitat antworten
  #2 (permalink)  
Alt 17-02-2010, 14:00
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Fragetabelle, Antworttabelle, Benutzertabelle.
Mit Zitat antworten
  #3 (permalink)  
Alt 17-02-2010, 14:51
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard

Hallo unset,
danke für die Antwort, leider raffe ich es nicht ganz wie es am besten ist.

hab jetzt eine tabelle nach dem muster erstellt. ( Designt)

wäre das die richtige Richtung ?

Code:
CREATE TABLE `fragen` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`id_benutzer` INTEGER NOT NULL ,
`frage1` VARCHAR(100) NOT NULL ,
`frage2` VARCHAR NOT NULL ,
`frage3` VARCHAR(100) NOT NULL ,
`frage4` VARCHAR(100) NOT NULL ,
`frage5` VARCHAR(100) NOT NULL ,
PRIMARY KEY (`id`)
) COMMENT 'hier kommen die Fragen hin';

CREATE TABLE `antworten` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`id_benutzer` INTEGER NOT NULL ,
`antwort1` INTEGER NOT NULL ,
`antwort2` INTEGER NOT NULL ,
`antwort3` VARCHAR(200) NOT NULL ,
`antwort4` VARCHAR(200) NOT NULL ,
`antwort5` INTEGER NOT NULL ,
PRIMARY KEY (`id`)
);

CREATE TABLE `benutzer` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`ip_adresse` INTEGER NOT NULL ,
PRIMARY KEY (`id`)
) COMMENT 'die benutzter werden einfach anonym eingetragen';
Mit Zitat antworten
  #4 (permalink)  
Alt 17-02-2010, 15:06
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Nein, die einzelnen Fragen und Antworten sind keine Spalten, sondern Zeilen, also Datensätze.

Beispiel:

frage
-----
id
name

antwort
--------
id
name

benutzer
---------
id
name
email
...

fragebogen
------------
benutzer_fkey
frage_fkey
antwort_fkey
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (17-02-2010 um 15:08 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 17-02-2010, 15:06
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Du hast eine Tabelle, in der du die Fragen vorhältst

id frage

Du hast eine Tabelle, in der du die Antworten vorhältst

id frage_id antwort

Du hast eine Tabelle, in der du die Benutzer vorhältst

id user_token

Du hast eine Tabelle, in der du die Benutzer-Antworten vorhälst

user_id frage_id antwort_id
Mit Zitat antworten
  #6 (permalink)  
Alt 17-02-2010, 15:36
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard

ok habe das jetzt von einem von Euch probiert umzusetzen.

Könnte jemand nachschauen ob es die richtige richtung ist ?
hab so was in der schule mal gehabt ( in postgreSQL ) leider alles wieder vergessen.
da war auch einiges mit dem Fremdschluessel.
ob ich das hier auch machen muss ? oder brauche ich es hier nicht ?

Das abfrage Formular wird unter mysql laufen. #

Danke im Voraus.

Code:
CREATE TABLE `fragen` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`frage` VARCHAR NOT NULL ,
PRIMARY KEY (`id`)
);

CREATE TABLE `antworten` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`fragen_id` INTEGER NOT NULL ,
`sehrgut` INTEGER NOT NULL ,
`gut` INTEGER NOT NULL ,
`mitte` INTEGER NOT NULL ,
`schlecht` INTEGER NOT NULL ,
PRIMARY KEY (`id`)
);

CREATE TABLE `benutzer` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`neip_adresse` INTEGER NOT NULL ,
PRIMARY KEY (`id`)
);

CREATE TABLE `benutzer_antoworten` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`benutzer_id` INTEGER NOT NULL ,
`fragen_id` INTEGER NOT NULL ,
`antworten_id` INTEGER NOT NULL ,
PRIMARY KEY (`id`)
);
Mit Zitat antworten
  #7 (permalink)  
Alt 17-02-2010, 15:37
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Nochmal: Nein!

Die Antworten sollen Datensätze sein. Mit einem einzelnen Feld für jede Antwort kommst du nicht weiter.

Zum Thema Fremdschlüssel: Ja, brauchst du. Die Tabelle "benutzer_antoworten" [sic!] besteht fast nur daraus.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 17-02-2010, 16:12
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard

hallo Amica,

leider verstehe ich nicht wie du das meinst ?
kannst du mir das näher erklären ?

aus meiner sicht ist die Tabelle so OK.

wass stimmt an dem Design nicht ? wo ist mein denkFehler ?

Vielen Dank im voraus
Mit Zitat antworten
  #9 (permalink)  
Alt 17-02-2010, 16:14
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Dann sag doch erstmal, was du nicht verstehst. Ich kann mich nur wiederholen: Die einzelnen Antworten müssen Datensätze (=Zeilen/Rows/Entities) sein, nicht Felder (=Spalten/Attribute).
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #10 (permalink)  
Alt 17-02-2010, 16:42
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard

meins du das so?
Code:
CREATE TABLE `antoworten_neu` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`id_fragen` INTEGER NOT NULL ,
`name` VARCHAR(30) NOT NULL ,
PRIMARY KEY (`id`)
);
in den Name schreibe ich später einfach rein ( sehrgut) oder (gut)
oder kann name auch integer sein 5=sehrgut, 4= gut, etc..

mir fällt nichs mehr ein.
Mit Zitat antworten
  #11 (permalink)  
Alt 17-02-2010, 16:57
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Apfelmus Beitrag anzeigen
meins du das so?
Ja, genau.

Zitat:
Zitat von Apfelmus Beitrag anzeigen
in den Name schreibe ich später einfach rein ( sehrgut) oder (gut)
Richtig.

Zitat:
Zitat von Apfelmus Beitrag anzeigen
oder kann name auch integer sein 5=sehrgut, 4= gut, etc..
Wenn du das willst, klar.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #12 (permalink)  
Alt 17-02-2010, 17:03
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard

Super danke für die Hilfe.
Mit Zitat antworten
  #13 (permalink)  
Alt 19-02-2010, 12:22
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard

ich habe leider noch eine Frage:

wozu muss ich die Tablle (benutzer_antoworten)
erstellen ?
ich meine kann ich die tabellen später nicht über join abfragen ?

den Sinn dieser tabelle (benutzer_antoworten) verstehe ich noch nichg ganz.

Vielen Dank im Voraus.

mein design sieht so aus:
Code:
CREATE TABLE IF NOT EXISTS `fragen` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `frage` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


CREATE TABLE IF NOT EXISTS `antworten` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `werte` varchar(250) DEFAULT NULL,
  `id_fragen` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `id_fragen` (`id_fragen`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



CREATE TABLE IF NOT EXISTS `benutzer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip_adresse` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



CREATE TABLE IF NOT EXISTS `benutzer_antoworten` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_benutzer` int(11) DEFAULT NULL,
  `id_antworten` int(11) DEFAULT NULL,
  `id_fragen` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `id_benutzer` (`id_benutzer`),
  KEY `id_antworten` (`id_antworten`),
  KEY `id_fragen` (`id_fragen`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;




ALTER TABLE `antworten`
  ADD CONSTRAINT `antworten_ibfk_1` FOREIGN KEY (`id_fragen`) REFERENCES `fragen` (`id`);


ALTER TABLE `benutzer_antoworten`
  ADD CONSTRAINT `benutzer_antoworten_ibfk_1` FOREIGN KEY (`id_benutzer`) REFERENCES `benutzer` (`id`),
  ADD CONSTRAINT `benutzer_antoworten_ibfk_2` FOREIGN KEY (`id_antworten`) REFERENCES `antworten` (`id`),
  ADD CONSTRAINT `benutzer_antoworten_ibfk_3` FOREIGN KEY (`id_fragen`) REFERENCES `fragen` (`id`);
Mit Zitat antworten
  #14 (permalink)  
Alt 19-02-2010, 12:40
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Die brauchst du unbedingt, sonst weißt du zwar, welche Fragen es gibt, welche Antworten es gibt und weche Benutzer es gibt, aber nicht, wer jetzt welche Frage wie beantwortet hat. Genau dafür ist die nämlich da und dort steht dann z. B. drin:

Code:
1, 1, 1, 1 (Benutzer 1 hat Frage 1 mit Antwort 1 beantwortet)
2, 1, 3, 2 (Benutzer 1 hat Frage 2 mit Antwort 3 beantwortet)
3, 2, 5, 2 (Benutzer 2 hat Frage 2 mit Antwort 5 beantwortet)
Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #15 (permalink)  
Alt 19-02-2010, 15:25
Apfelmus
 Registrierter Benutzer
Links : Onlinestatus : Apfelmus ist offline
Registriert seit: Aug 2009
Beiträge: 34
Apfelmus befindet sich auf einem aufstrebenden Ast
Standard

Hallo Amica,

vielen Dank für schnelle und einfache erklärung.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[MySQL 4.1] Datenbank Design/Struktur mokelmann SQL / Datenbanken 8 17-02-2008 21:15
Layout/Design Umfrage MMR User pages 12 09-01-2006 15:27
Umfrage mit Datenbank Newcomer SQL / Datenbanken 2 23-06-2003 10:05
Datenbank design ?? westberlin SQL / Datenbanken 1 16-05-2003 10:36
Umfrage mit Datenbank ohm PHP Developer Forum 4 13-12-2001 13:55

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:07 Uhr.