Naps: Stundenplan speichern, Aufbau

Hi,

ich müsste mehrere Stundenpläne in einer DB speichern und bin grad am überlegen wie ich das am besten mach.

Ich würde es so machen:

id tag stunde fach
0 Montag 1 Deutsch
1 Montag 2 Mathe
2 Montag 3 Physik

Bin ich da komplett am falschen weg und würde man das besser speichern können?

LG Naps

  1. Grüße,
    ich hätte stunde und tag schon mal zusammengeführt - jede stunde der woche ist eindeutig und es sind gerade mal 40 max.
    fächer würde ich auch in 2e tabelle auslagern und per joint nachliefern um ggf zusatzinfos wie lehrernamen oder raumnummer nach bedarf nachliefern zu können und diese Änderungen nicht mehrfach durchführen zu müssen.

    wozu brauchst du es wenn ich fragen darf? bestimmtes Zweck oder vorgabe?
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
    1. Grüße,
      ich hätte stunde und tag schon mal zusammengeführt - jede stunde der woche ist eindeutig und es sind gerade mal 40 max.
      fächer würde ich auch in 2e tabelle auslagern und per joint nachliefern um ggf zusatzinfos wie lehrernamen oder raumnummer nach bedarf nachliefern zu können und diese Änderungen nicht mehrfach durchführen zu müssen.

      wozu brauchst du es wenn ich fragen darf? bestimmtes Zweck oder vorgabe?

      Vorgabe. Ziel ist es den neuesten Stundenplan immer online zu haben.

      1. Lieber Naps,

        Vorgabe. Ziel ist es den neuesten Stundenplan immer online zu haben.

        mein Schulwebseiten-CMS (PGcms) kann das mit XML. Dabei sind mehrere Stundenpläne möglich (ein aktueller und einer, der erst übermorgen in Kraft tritt) - und das für alle Klassen. Kannst es Dir ja anschauen.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Lieber Naps,

          Vorgabe. Ziel ist es den neuesten Stundenplan immer online zu haben.

          mein Schulwebseiten-CMS (PGcms) kann das mit XML. Dabei sind mehrere Stundenpläne möglich (ein aktueller und einer, der erst übermorgen in Kraft tritt) - und das für alle Klassen. Kannst es Dir ja anschauen.

          Danke werd ich mir mal anschaun...

          lg Naps

  2. Om nah hoo pez nyeetz, Naps!

    Ich würde es so machen:

    id tag stunde fach
    0 Montag 1 Deutsch
    1 Montag 2 Mathe
    2 Montag 3 Physik

    um Redundanzen zu vermeiden, sollte man sich zunächst ein Entity (eine Entitätsmenge, je nach Sprachgebrauch) "Fach" erstellen. Dazu möglicherweise dasselbe mit "Raum", "Klasse" und "Lehrer" und je nach Bedarf "Unterrichtsstunde" entweder als "mo-01" bis "sa-10" oder die Wochentage und Unterrichtsstunden getrennt, wenn man zum Beispiel die DB später dazu nutzen möchte, in Erfahrung zu bringen, welcher Unterricht häufig in der 3. Stunde ist.

    Ein grafischer Datenbankentwurf (Entity-Relationship-Modell) sollte ganz am Anfang stehen.

    Matthias

    --
    Wer ein Problem beschreiben kann, hat es schon halb gelöst.                                             (Julian Huxley) http://www.billiger-im-urlaub.de/kreis_sw.gif
    1. um Redundanzen zu vermeiden, sollte man sich zunächst ein Entity (eine Entitätsmenge, je nach Sprachgebrauch) "Fach" erstellen. Dazu möglicherweise dasselbe mit "Raum", "Klasse" und "Lehrer" und je nach Bedarf "Unterrichtsstunde" entweder als "mo-01" bis "sa-10" oder die Wochentage und Unterrichtsstunden getrennt, wenn man zum Beispiel die DB später dazu nutzen möchte, in Erfahrung zu bringen, welcher Unterricht häufig in der 3. Stunde ist.

      Ein grafischer Datenbankentwurf (Entity-Relationship-Modell) sollte ganz am Anfang stehen.

      Soll ich hier "Entity" als Tabelle verstehen?

      LG Naps

      1. Grüße,

        Soll ich hier "Entity" als Tabelle verstehen?

        nein, als zusammenhängender "informationsding"

        zB als nutzloses beispiel:

        oberbegriff schule, dazu gehören räume, räume haben als eigenschaft fächer, diese haben als eigenschaft zeit, lehrer.

        somit hast du eine hierarchie - idee ist, dass du das so in blöcke aufteilst, dass jedes block an sich (fach mti eigenschaften) nur einmal gespeichert wird, selbst wenn es zB in unterschiedlichen räumen stattfinden kann.

        MFG
        bleicher

        --
        __________________________-

        FirefoxMyth
        1. Grüße,

          Soll ich hier "Entity" als Tabelle verstehen?

          nein, als zusammenhängender "informationsding"

          zB als nutzloses beispiel:

          oberbegriff schule, dazu gehören räume, räume haben als eigenschaft fächer, diese haben als eigenschaft zeit, lehrer.

          somit hast du eine hierarchie - idee ist, dass du das so in blöcke aufteilst, dass jedes block an sich (fach mti eigenschaften) nur einmal gespeichert wird, selbst wenn es zB in unterschiedlichen räumen stattfinden kann.

          Aso, ok

          In dem Fall:

          Schule
                            |
                          Räume
                            |
                          Fächer
                            |
                           | |
                          |   |
                        Zeit Lehrer

          Ich versteh nur nicht so ganz wie ich das auf eine DB übertragen kann.

          1. Grüße,

            Schule
                              |
                            Räume
                              |
                            Fächer
                              |
                             | |
                            |   |
                          Zeit Lehrer

            Ich versteh nur nicht so ganz wie ich das auf eine DB übertragen kann.

            für speziell diese beispiel:
            tabelle schule enthält einträge mit raumnummern, an diese per raumID sind fächer der tabelle fächer gekoppelt, diese erst enthält zeit und lehrernamen.

            natürich unsinnig, aber ich hoffe du verstehst den ansatz - statt 1 zu 1 versuchst du eine n zu n speicherung - so muss ein n mal vorkommendes elemnt nur 1 mal gespeichert werden.
            MFG
            bleicher

            --
            __________________________-

            FirefoxMyth
      2. Om nah hoo pez nyeetz, Naps!

        Soll ich hier "Entity" als Tabelle verstehen?

        nein.

        ERM in der Wikipedia

        Entity in der Wikipedia

        ein Tutorial, pdf, etwas größer, nur überflogen.

        Matthias

        --
        Wer ein Problem beschreiben kann, hat es schon halb gelöst.                                             (Julian Huxley) http://www.billiger-im-urlaub.de/kreis_sw.gif
        1. Om nah hoo pez nyeetz, Naps!

          Soll ich hier "Entity" als Tabelle verstehen?

          nein.

          ERM in der Wikipedia

          Entity in der Wikipedia

          ein Tutorial, pdf, etwas größer, nur überflogen.

          Danke, werd mich mal ein bisschen einlesen.

          1. Om nah hoo pez nyeetz, Naps!

            Danke, werd mich mal ein bisschen einlesen.

            Fang mit dem PDF an. Dort ist relativ gut erklärt, was eine Datenbank überhaupt ist.

            Ich sage meinen Schülern "Eine Datenbank ist mehrere Tabellen, die miteinander in Beziehung stehen" in der Hoffnung, dass sie durch das grammatisch Falsche frei nach "Ich bin zwei Tanks" wenigstens für eine Weile den Unterschied zwischen einer (excel-)Tabelle und einer Datenbank verinnerlichen.

            Matthias

            --
            Wer ein Problem beschreiben kann, hat es schon halb gelöst.                                             (Julian Huxley) http://www.billiger-im-urlaub.de/kreis_sw.gif
            1. Om nah hoo pez nyeetz, Naps!

              Danke, werd mich mal ein bisschen einlesen.

              Fang mit dem PDF an. Dort ist relativ gut erklärt, was eine Datenbank überhaupt ist.

              Ich sage meinen Schülern "Eine Datenbank ist mehrere Tabellen, die miteinander in Beziehung stehen" in der Hoffnung, dass sie durch das grammatisch Falsche frei nach "Ich bin zwei Tanks" wenigstens für eine Weile den Unterschied zwischen einer (excel-)Tabelle und einer Datenbank verinnerlichen.

              Ich denke dass ich das soweit versteh bzw. hoffe es...

              Mein Ansatz nach dem wäre dann sowas:

              --------------------------------
              |Stunde|Fach|Klasse|Lehrer|Raum|
              --------------------------------
              | mo-1 |  1 |   1  |   1  |  2 |
              | mo-2 |  5 |   1  |   2  |  3 |
              | mo-3 |  3 |   1  |   3  |  1 |

              Tabelle FACH              Tabelle LEHRER          Tabelle KLASSE
              -------------             -------------           -------------
              |ID|Fach    |             |ID|Lehrer  |           |ID|Klasse  |
              -------------             -------------           -------------
              | 1|Mathe   |             | 1|Lehrer1 |           | 1|   1A   |
              | 2|Deutsch |             | 2|Lehrer2 |           | 2|   1B   |
              | 3|Englisch|             | 3|Lehrer3 |           | 3|   2A   |
              | 4|Turnen  |                                     | 4|   2B   |

              Tabelle RAUM
              -------------
              |ID|Raum    |
              -------------
              | 1|   123  |
              | 2|   132  |
              | 3|   532  |
              | 4|   634  |

              In diesem Fall hätte die Klasse 1A am Montag in der ersten Stunde Mathe mit dem Lehrer1 in Raum 132.

              Ich denke nur das hier das Problem sein wird dass ich dann wieder z.B.: mo-1 in der ersten Tabelle haben werde weil ja die 4 Klassen alle eine erste Stunde am Montag haben...

              1. Om nah hoo pez nyeetz, Naps!

                Mein Ansatz nach dem wäre dann sowas:

                Sieht gut aus.

                Ich denke nur das hier das Problem sein wird dass ich dann wieder z.B.: mo-1 in der ersten Tabelle haben werde weil ja die 4 Klassen alle eine erste Stunde am Montag haben...

                Tabelle Plan

                ID |Stunde|Fach|Klasse|Lehrer|Raum|

                1  | 1    |  1 |   1  |   1  |  2 |  2  | 1    |  5 |   2  |   2  |  3 |  3  | 3    |  3 |   1  |   3  |  1 |

                und eine Tabelle für die U-Stunden

                Tabelle U-Stunden

                ID | Zeit | Anfang | Ende | ggf. weitere Attribute

                1  | mo-1 | 8:00   | 8:45 ...  11 | di-1 |

                Matthias

                --
                Wer ein Problem beschreiben kann, hat es schon halb gelöst.                                             (Julian Huxley) http://www.billiger-im-urlaub.de/kreis_sw.gif
  3. So,

    ich hab mich jetzt mal ein bisschen mit JOIN beschäftigt und dabei das hier "rausbekommen":

    SELECT c.fach, d.lehrer, zeit
    FROM
      stundenplan-plan a
    JOIN
      stundenplan-stunde b
    JOIN
      stundenplan-fach c
    JOIN
      stundenplan-lehrer d
    WHERE
      klasse = '8'
    AND
      jahrgang = '2'
    AND
      a.stunde = b.ID
    AND
      a.fach = c.ID
    AND
      a.lehrer = d.ID

    Ist die Abfrage zu kompliziert aufgebaut? Was kann man da vielleicht besser machen.

    Ein kleines Problem hab ich auch noch und zwar:
    Ich muss ja den Stundenplan für eine bestimmte Klasse und einen bestimmten Jahrgang raussuchen.
    D.h. ich hab 2 Variablen $klasse und $jahrgang.

    In der Abfrage oben hab ich jetzt für die Klasse "8" genommen weil die 8 der Klasse mit der ID 8 aus der Tabelle "klasse" entspricht.

    z.B.:

    Ich will den Stundenplan der klasse 4b aus dem Jahr 2010/2011

    In der Tabelle Klasse entspricht die 4b der ID 8 und der Jahrgang 2010/2011 in der Tabelle Jahrgang der ID 2.

    Wie kann ich das jetzt oben ändern? Jetzt hab ichs ja statisch.

    Danke schonmal.
    MfG Naps