Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankmodell

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbankmodell

    Hallo Zusammen

    Ich arbeite an einem Kursverwaltungstool, basierend auf PHP und MySQL. Vereinfacht habe ich eine Tabelle mit der Art des Kurses, z.B. Englischkurs, in der ich grundsätzliche Daten für den Kurs, z.B. Lernziele speichere. Weiter gibt es eineTabelle mit einem tatsächlichen Kurs, das heisst einem Datum und Lehrer.
    Zu meinem Problem: Es ist nun mühsamerweise so, dass es verschiedene Kursarten gibt, das heisst konkret, dass es auch verschiedne Felder geben muss. Mein erster Lösungsansatz war, dass ich eine Tabelle mit Felder für alle Kurse mache, so dass dann halt bei gewissen Kursen einige Felder leer bleiben. Irgendwie gefällt mir diese Lösung mit den Leerfeldern aber nicht so recht. Wie löst man dieses Problem?

    Vielen Dank
    Benks

  • #2
    Kannst Du ein konkretes Beispiel für verschiedene Kursarten und und die daraus resultierenden unterschiedlichen Felder nennen?

    Kommentar


    • #3
      Sorry das meine Antwort solange gedauert hat..

      Also beispielsweise finden einige Kurse auch im Ausland statt. Da brauchts dann noch Infos wie Visapflicht, Verpflegung, Unterkunft. Daraus könnte man natürlich auch eine zusätzliche Tabelle machen, aber für die Verknüfung mit der normalen Kurstabelle brauchts ja dann trotzdem ein Feld mit einem Fremdschlüssel, welche normale Kurse dann nicht haben.

      Kommentar


      • #4
        Ich würde hier aus dem Stegreif einen Satz generischer Attribut-Objekte vorschlagen, die verknüft sein können oder eben nicht. Falls diese verknüft sind, agiert die Business-Schicht anders.

        Kommentar


        • #5
          Sorry aber ich habe das grad nicht verstanden. Was sind generische Attribute? Wie sieht das konkret aus?

          Kommentar


          • #6
            Hallo,

            im Objektmodell gesprochen bedeutet das, dass du einem Kurs eine beliebige Anzahl an Attribut-Objekten verknüpfst. Diese enthalten die gewünschten Attribute des Kurses. Datenbanktechnisch ist das recht einfach abbildbar: 1 Tabelle für das Kurs-Objekt, eine Tabelle für ein Attribut-Objekt und eine Verknüpfungstabelle zur Referenzierung der beiden.

            In deiner Anwendung kannst du dann die geschilderte Logik so abbilden, dass du abfragst, ob eine Beziehung zwischen einem Attribut und einem Kurs besteht oder nicht und entsprechend agieren.

            Kommentar


            • #7
              Ok, ich glaube ich habs einigermassen kapiert..

              In der Attributtabelle hats dann einfach zwei Felder, eines mit den Attributnamen und eins mit dem Wert des Attributs. In der Kurstabelle sind nur die Felder die bei allen Kursen gleich sind, die unterschiedlichen werden nach belieben hereingehängt. Klingt sinnvoll, aber braucht das nicht ziemlich Rechenleistung um die Tabelle dann zusammenzusetzen?

              Ich hatte noch eine andere Idee, was hälts du davon (nur für den Lerneffekt): Ich mache für jede Kursart eine Tabelle und mache in der Verknüpfungstabelle noch ein Feld, welche bestimmt um welche Tabelle es sich handelt.

              Kommentar


              • #8
                Ich hatte noch eine andere Idee, was hälts du davon (nur für den Lerneffekt): Ich mache für jede Kursart eine Tabelle und mache in der Verknüpfungstabelle noch ein Feld, welche bestimmt um welche Tabelle es sich handelt.
                Finde ich nicht gut, da du gleichartige Dinge mehrfach in der Datenbank vorhälst und nicht sauber gruppierst. Gutes Software-Design zeichnet sich u.A. dadurch aus, dass das DRY-Prinzip eingehalten ist (DRY: don't repeat yourself).

                Kommentar


                • #9
                  Ok, leuchtet ein. Danke für deine Hilfe!

                  Kommentar


                  • #10
                    Gerne!

                    Kommentar

                    Lädt...
                    X