Um Facts später auch einfach hinzufügen zu können, habe ich die Datenbank jetzt grundlegend geändert. Neben der Tabelle für die Kunden "customers" und der Tabelle für die Ratings "ratings", gibt es jetzt eine Tabelle "facts" in der die Antworten stehen. D.h. Für jeden 'fact' zu einem 'rating' gibt es einen Eintrag mit den Daten zu welchem 'rating' der 'fact' gehört, zu welchem 'fact_type' und wie der Wert/die Antwort ist.
Datenbank
Und da habe ich auch schon das erste Problem... Ist der Wert des facts ('answer') immer eine Zahl, damit man damit rechnen kann? Ich habs jetzt erstmal als VARCHAR eingetragen, aber würde gerne hören, was ihr dazu sagt.
Um welchen 'fact' es sich handelt, wird wie gesagt mit der Referenz zur Tabelle "fact_types" gespeichert. Dort steht dann ein Name (zB "Berechnetes Eigenkapital") sowie die Fragestellung, die beim Eintragen von Fakten erscheinen soll. Außerdem habe ich ein Feld "question_type" vorgesehen, wo dann der Datentyp der Antwort festgelegt ist, falls also doch nicht jeder Wert als Zahl darstellbar ist.
Nun ist halt die Frage, was für Werte haben die Facts, kann man alle als Zahlen abbilden? Beim Eintragen des Facts reicht aber vermutlich nicht immer nur ein Textfeld, sondern es gibt ja auch Ja/Nein-Fragen, die dann über Radiobuttons eingegeben werden!? Gibt es vielleicht sogar Facts, wo man Auswahlmöglichkeiten hat? Wie würde man dies dann realisieren? Brauche ich noch weitere Tabellen für solche Typen um die Antwortmöglichkeiten einzutragen?
Nebenbei habe ich jetzt schonmal eine Kategorisierung vorgesehen, weil Phillip meinte es wäre gut, wenn man die Facts in Gruppen aufteilen kann. Also jeder 'fact_type' gehört zu einer Kategorie, die wiederum eine Unterkategorie von einer anderen Kategorie sein kann. Zur Zeit würde dort nur "hardfacts" und "softfacts" als Kategorien eingetragen sein. Aber das ganze kann man auch erstmal weglassen.
Btw: Kann man in der Tabelle "facts" nicht die id weglassen und als primary key das Tupel (rating_id, fact_type_id) nehmen? Vermutlich ist die Handhabung dann etwas schwieriger, oder? Bzw geht das bei mysql überhaupt? Nebensächlichkeit, aber würde mich mal interessieren.