Announcement

Collapse
No announcement yet.

Terminplan (richtiger Aufbau)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Terminplan (richtiger Aufbau)

    Hallo Leute,

    ich habe leider nicht viel Erfahrung mit Datenbanken. Ich habe nun eine Frage ob der Ansatz wie die Datenbank aufgebaut richtig ist. Ich kann/will leider nicht das richtige Problem stellen, darum habe ich mir ein analoges Problem ausgedacht, dessen Beantwortung mir genauso weiterhilft.

    Es geht um ein Terminplan für eine Fortbildung oder sowas. Es gibt Veranstaltungen mit mehreren sich periodisch wiederholenden Terminen die in diesem Terminplan untergebracht werden sollen. In den Wochentagsterminen sind jeweils bestimmte Lehrveranstaltungen (hier schwarz). Zu beachten ist allerdings das diese schwarzen Lehrveranstaltungen individuell für jeden User sind. Es gibt also keinen Lehrplan. Einzelunterricht sozusagen.



    Nun habe ich eine Datenbank mit:
    • Seminarteilnehmer (beinhaltet Teilnehmerinfos und einmalige UserID)
    • Fortbildung (beinhaltet Referenz auf UserID und einmalige FortbildungsID)
    • Wochentag(beinhaltet Referenz auf FortbildungsID und einmalige WochentagsID)
    • Sitzung(beeinhaltet Referenz auf WochentagsID und einmalige SitzungsID)

    Natürlich gilt bei jedem Datensatz das er individuelle Zusatzinfos beinhaltet und nicht nur eine Referenz.

    Es gibt also zB. für jede Sitzung die jeglicher User zu jeglichem Wochentag in jeglicher Veranstaltung macht eine Eintrag in der Datenbank.

    Hier nochmal die Referenzen:


    Nun meine Frage: Ist die Datenbank so richtig aufgebaut? Kann ich eine Datenbank mit riesiger Größe für jede individuelle Lehrveranstaltung machen? Mir fällt leider kein anderer Weg ein.

    Vielen Dank für die Mühe beim Lesen. Hoffe jemand kann mir helfen.

  • #2
    Wofür richtig aufgebaut???
    um herauszufinden welcher Teilnehmer an welcher Fortbildung teil nimmt? -> ja
    um herauszufinden welcher Teilnehmer an welcher Sitzung teil nimmt? -> nein

    Comment


    • #3
      entschuldige...

      Ich werde den Benutzer kennen und seine verschiedenen Fortbildungen anzeigen lassen. Er wählt dann aus welche Fortbildung er genauer sehen möchte. Nun hat er eine Wochen-/Monatsübersicht und kann sich dann den Tag auswählen. Dort stehen dann die Module die er belegen möchte. Sprich mein Weg sähe so aus:
      PHP Code:
      // UserID bekannt durch Anmelden/Einloggen/Eingabe. Frage nun nach Fortbildungen.
      SELECT FROM `fortbildungenWHERE `refUserID` = $UserID;
      // Habe nun die FortbildungsID, frage nun alle Wochentage ab und lasse den USer danach auswählen
      SELECT FROM `WochentageWHERE `refFortbildungsID` = $fortbildungsID;
      // Habe nun die WochentagsID, frage nun alle Module ab des Tages
      SELECT FROM `SitzungenWHERE `refWochentagsID` = $WochentagsID
      ich brauche also 3 Schritte um ein Modul anzuzeigen. Der Programmfluss erlaubt auch so eine Vorgehensweise. Ist das also vernünftig aufgebaut oder geht es einfacher? Immerhin müsste er bei der letzten Datenbank aus vllt. 100.000den Einträgen einen finden der refWochentagsID entsprechend der Vorgabe hat.

      Ach ja, um das nochmal zu betonen: Jeder Teilnehmer hat seine eigenen Fortbildungen und Module eingetragen und nicht aus einem Katalog von Fortbildungen gesucht. Die Software ist also für die Teilnehmer zur Verwaltung und nicht für die Einrichtung zum Verwalten der Teilnehmer.
      Kardinalitäten also entsprechend:
      Teilnehmer 1 <--> n Fortbildungen 1 <--> n Wochentage 1 <--> n Module
      Zuletzt editiert von Osiriz; 27.01.2011, 15:54.

      Comment


      • #4
        Ich finde die Aufteilung okay. Wegen der Menge in der letzten Tabelle braucht man sich auch keine Sorgen machen: einen Index auf die refWochentagsID gelegt und der Server braucht bei 1 Milliarde Datensätze in einem sortierten binären Indexbaum maximal 30 Zugriffe um die Adresse eines xbeliebigen Datensatzes zu ermitteln. Ohne Index hingegen müsste der Server jedesmal die einzelnen Datensätze solange der Reihe nach durchlesen, bis er die ID gefunden hat - und das dauert dann ewig.

        bye,
        Helmut

        Comment


        • #5
          super danke

          Comment

          Working...
          X