Hänschen Klein: MySQL - Hilfe bei Tabellenplanung

Hallo,

ich brauch eure Hilfe bei der Planung.

Was ich will:
Betriebszeiten von bspw. Lampen speichern und daraus dann die verbrauchte Leistung berechnen. Diese Leistung kann sich ändern, wenn z.B. am Tag X eine 60W Glübirne durch eine 4W LED ausgetauscht wurde.

Die Betriebszeit wird tagesweise in Minuten gespeichert. Wird an einem Tag bspw. mittags das Leuchtmittel ausgetauscht, wird für den gesamten Tag die neue Leistung verwendet. (ist nur für eine annähernde Berechnung gedacht)

Meine Idee bisher waren 2 Tabellen:
Tabelle Laufzeiten: ID, date, LZ_Lampe1, LZ_Lampe2, etc.
Tabelle Leistungen: ID, nameLampe, gueltig_ab, gueltig_bis, leistung

Nur bin ich daran gescheitert, wie ich Feld name aus Tabelle2 als Abfrage für die Spaltennamen aus Tabelle1 verwenden kann.

Wie kann ich die Tabellen/die Abfrage so aufbauen, dass ich die Daten vernünftig verknüpfen kann?

Aloha,
Hänschen Klein

  1. Hallo Hänschen Klein,

    so ganz habe ich leider nicht verstanden, was genau Du vorhast.

    Aber käme vielleicht eine Struktur wie die folgende in Frage:
    Tabelle Birnen: BirnenId, BirnenName, Leistung, ...
    Tabelle Lampen: LampenId, LampenName, ...
    Tabelle Laufzeiten: LaufzeitId, BirnenId, LampenId, LaufzeitVon, LaufzeitBis, ...

    Gruß, Dennis

    1. Hallo Dennis,

      du hast es nicht ganz erfasst, aber die Aufteilung in 3 Tabellen geht denke ich in die richtige Richtung, danke!

      Aloha,
      Hänschen Klein

      1. Hallo Hänschen Klein,

        du hast es nicht ganz erfasst, aber die Aufteilung in 3 Tabellen geht denke ich in die richtige Richtung, danke!

        es könnten auch vier Tabellen angebracht sein. Oder mehr. Oder weniger. Wenn Du das, was Du vorhast (also das gewünschte Ergebnis), nochmal ausführlicher beschreibst, können die Leute hier im Forum Dir sicher besser helfen. Hoffe ich auf jeden Fall.

        Wie wär's z.B. mit vier Tabellen?
        Tabelle Birnen: BirnenId, BirnenName, Leistung, ...
        Tabelle Lampen: LampenId, LampenName, ...
        Tabelle BirneInLampe: BirneInLampeId, BirnenId, LampenId, BirneIstInLampeAbDatum, BirneIstInLampeBisDatum, ... // Von wann bis wann ist Birne X in Lampe Y
        Tabelle Laufzeit: LaufzeitId, BirneInLampeId, Datum, LampeIstAnDiesemTagAnInMinuten, ... // Wie viele Minuten leuchtete Birne X in Lampe Y an Tag Z

        Wie gesagt, zumindest ich kann aus Deinem ersten Post nicht wirklich schließen, was Du eigentlich haben möchtest.

        Gruß, Dennis

        1. Kleine Korrektur:

          Tabelle Laufzeit: LaufzeitId, BirneInLampeId, Datum, LampeIstAnDiesemTagAnInMinuten, ... // Wie viele Minuten leuchtete Birne X in Lampe Y an Tag Z

          Sollte die (von mir geratene) Struktur aus dem vorherigen Posting in die gewünschte Richtung gehen, ist im Zitat aus diesem Post "BirneInLampeId" durch "LampenId" zu ersetzen (unter der Annahme, dass es darum geht, wie viele Minuten Lampe X an Tag Y "brannte"). Die Informationen sind sonst mehrfach vorhanden. Das Stichwort hierzu ist "Normalisierung", also - grob gesagt - das Bestreben, jede Information nur einmal in der Datenbank abzulegen.

          Gruß, Dennis

        2. Hallo,

          Wie gesagt, zumindest ich kann aus Deinem ersten Post nicht wirklich schließen, was Du eigentlich haben möchtest.

          Ich habe Datensätze Laufzeit in Minuten pro Tag pro Lampe. Weiters die Leistung der jeweiligen Lampe, ggf. mit von/bis Datum falls sie gewechselt wurde.

          Nun will ich die daten in einer Datenbank speichern, sodass ich pro Lampe die verbrauchten kWh auslesen kann.

          Wenn eine Lampe bspw. 400 min am Tag leuchtet und ich will den Verbrauch der letzten 14 Tage und die 60W Glühbirne wurde vor einer Woche durch eine 4W LED ausgetauscht, dann will ich für die ersten 7 Tage Laufzeit * 60W und für die letzten 7 Tage Laufzeit * 4W = Gesamtleistung der letzten 14 Tage.

          Um das so aus der DB auslesen zu können, mach ich mir momentan Gedanken, wie ich die Daten am sinnvollsten vorhalte.

          Aloha,
          Hänschen Klein

          1. Hey Hänschen Klein,

            Ich habe Datensätze Laufzeit in Minuten pro Tag pro Lampe. Weiters die Leistung der jeweiligen Lampe, ggf. mit von/bis Datum falls sie gewechselt wurde.
            [...]
            Um das so aus der DB auslesen zu können, mach ich mir momentan Gedanken, wie ich die Daten am sinnvollsten vorhalte.

            top, dann habe ich das ja einigermaßen richtig verstanden. Die Hinweise aus meinem Post und der Ergänzung sollten Dir (grob) weiterhelfen, was die Datenhaltung angeht.

            Tabelle "Lampe": Eigenschaften (z.B. Name) der Lampe
            Tabelle "Birne": Eigenschaften (z.B. Leistung) der Birne
            Tabelle "Birne2Lampe": Welche Birne ist von welchem Datum bis zu welchem in der Lampe
            Tabelle "Laufzeit": Welche Lampe war an welchem Datum wie lange an

            Sollte ich falsch liegen, sag einfach Bescheid. Und solltest Du weitere Fragen, finden wir bestimmt eine Lösung.

            Gruß, Dennis

  2. hi,

    Du kriegst alles in eine Tabelle,
    Spalte 1: Objekt-ID
    Spalte 2: Attributname
    Spalte 3: Value

    Willst Du verschachtelte Hierarchien (Bäume), brauchst Du eine
    Spalte 4: Parent

    Ich habs noch nicht ganz fertig, aber aufm Papier isses schon.

    Viele Grüße!

    1. Du kriegst alles in eine Tabelle,
      Spalte 1: Objekt-ID
      Spalte 2: Attributname
      Spalte 3: Value

      Und somit die Funktion des DBMS selbst noch mal nachbauen?
      Klingt nach mehr Aufwand als nötig, und effektiver wird die ganze Sache dadurch auch nicht.

      MfG
      bubble

      --
      If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
    2. Hallo zusammen,

      kann man im neuen Forum nicht vielleicht einen neuen Themenbereich "hotti" hinzufügen? Ich habe jetzt echt lange überlegt, in welchen Themenbereich meine Antwort passt, aber irgendwie passt die nur in den Themenbereich "hotti" :-)

      Du kriegst alles in eine Tabelle,
      Spalte 1: Objekt-ID
      Spalte 2: Attributname
      Spalte 3: Value

      @hotti: Ergänzend zu bubbles Antwort: Klar kannst Du das in einer Tabelle unterbringen. Wenn Du unbedingt möchtest, kannst Du das auch ganz ohne DBS machen.
      Aber, wie bubble schon sagte, was ist der Vorteil daran?

      Der Threadersteller hatte doch eine berechtigte Frage. Und hat sich klugerweise, _bevor_ er einfach anfängt zu programmieren, Gedanken zu einer sinnvollen Tabellenstruktur gemacht, um nicht erst später erkennen zu müssen: Was hab ich mir damals eigentlich dabei gedacht?

      Und mit Aussagen wie der Deinen verwirrst Du nur. Mal ganz davon abgesehen, dass Dein Ansatz zwar möglich, aus meiner Sicht aber völlig sinnlos ist, wenn ich nicht gerade ein DBS selbst erstellen will. Und wenn ich das wollte, dann würde ich ein DBS von Grund auf entwickeln und nicht ein DBS verwenden, mit dessen ich ein "neues" DBS simuliere, um dann mit dem "neuen" DBS Dinge machen zu können, die ich mit dem "Ur-DBS" schon vorher und viel besser machen konnte.

      Gruß, Dennis

      1. Hallo,

        Hallo zusammen,

        kann man im neuen Forum nicht vielleicht einen neuen Themenbereich "hotti" hinzufügen? Ich habe jetzt echt lange überlegt, in welchen Themenbereich meine Antwort passt, aber irgendwie passt die nur in den Themenbereich "hotti" :-)

        Dafür (Aber zur Not gäbe es ja noch den Bereich Menschelei)

        Ich hab mich schon bei so einigen Beiträgen von hotti gefragt was da so für Drogen im Spiel sind und ob er das wirklich ernst meint (nach längerem Lesen der Beiträge erhärtet sich die Befürchtung leider immer mehr). Habe mir seinen Namen schon rot markieren lassen, damit ich beim Lesen eines Threads weiß, dass dieser mit Vorsicht zu genießen ist.

        Aber heute habe ich ausnahmsweise mal einen Beitrag von hotti gelsen der zum Teil tauglich war, so dass ich dreimal geschaut habe, ob da wirklich hotti drüber steht.

        Gruß, Dennis

        martachen

        1. Hallo martachen,

          Ich hab mich schon bei so einigen Beiträgen von hotti gefragt was da so für Drogen im Spiel sind und ob er das wirklich ernst meint (nach längerem Lesen der Beiträge erhärtet sich die Befürchtung leider immer mehr).

          das finde ich nicht nett. Beleidigungen oder das in-die-Nähe-von-Drogen-rücken sollte man unterlassen, egal ob hier im Forum oder sonst wo. Ich gebe Dir recht, dass manche Beiträge von hotti für die Allgemeinheit etwas schwer verständlich wirken.

          Aber, und da möchte ich hotti ausdrücklich in Schutz nehmen, hat er doch gute Gedanken, macht sich mit der Materie vertraut und bemüht sich zu Lernen. Das allerdings geht "häufig in die Hose", wie es viele hier (unter anderem ich) meinen, weil er zwar (meiner Meinung nach) die richtigen Gedanken hat, aber nicht die richtigen Schlussfolgerungen daraus zieht. Er möchte die Dinge verstehen, schießt (zugegebenermaßen) häufig über's Ziel hinaus und versucht, das Rad neu zu erfinden.

          Aber, und das möchte ich nochmal betonen: Es ist kein Grund, hotti "runterzumachen", auch wenn ich (meistens) anderer Meinung bin. Auch das Pseudonym "hotti" ist ein Mensch!
          Außerdem kenne ich hotti nicht persönlich.

          Und - da es scheinbar anders rübergekommen ist - muss ich sagen, dass mein Beitrag eher scherzhaft gemeint war, auch wenn natürlich auch in ihm "ein Fünkchen Wahrheit" steckt. Wahrscheinlich auch etwas mehr. Vielleicht beteiligt sich hotti ja noch an dieser Diskussion, ansonsten sollten wir es lassen, über Leute zu urteilen, wenn wir diese nicht kennen oder sie sich nicht äußern möchten (_sachliche_ Kritik ist davon natürlich immer ausgenommen).

          In diesem Sinne, Gruß,
          Dennis

          1. hi,

            Aber, und da möchte ich hotti ausdrücklich in Schutz nehmen, hat er doch gute Gedanken, macht sich mit der Materie vertraut und bemüht sich zu Lernen. Das allerdings geht "häufig in die Hose", wie es viele hier (unter anderem ich) meinen, weil er zwar (meiner Meinung nach) die richtigen Gedanken hat, aber nicht die richtigen Schlussfolgerungen daraus zieht.

            Soso, Du meinst, das zu wissen ;)

            Aber egal. Wir kochen alle nur mit Wasser und nicht jeder unter uns zieht immer die richtigen Schlussfolgerungen. Wobei hier noch zu definieren wäre, was 'die richtigen Schlussfolgerungen' eigentlich sind. Kontextbezogen, versteht sich ;)

            Fakt ist Eines: Hier im Forum werden Informationen ausgetauscht. Aus diesem Grunde bin ich hier und was für mich dabei rauskommt unterm Strich, sind nicht irgendwelche Schlussfolgerungen, sondern Dinge, die sich in der Praxis umsetzen lassen.

            SelfForum: Informativ
            -------------- Strich --------------
            Meine Site: Top

            Hotti

            1. hi,

              Aber, und da möchte ich hotti ausdrücklich in Schutz nehmen, hat er doch gute Gedanken, macht sich mit der Materie vertraut und bemüht sich zu Lernen. Das allerdings geht "häufig in die Hose", wie es viele hier (unter anderem ich) meinen, weil er zwar (meiner Meinung nach) die richtigen Gedanken hat, aber nicht die richtigen Schlussfolgerungen daraus zieht.

              Soso, Du meinst, das zu wissen ;)

              Hotti wäre nicht Hotti, wenn er dazu kein (hinkendes) Beispiel hätte:

              Kind: "Mama, ich kann kein Blut sehen!"
              Mama schlussfolgert.... und sagt: "Das ist nicht weiter schlimm."
              Kind: "Mama, ich bin blind!"

              Schönen Abend ;)

              --
              Warum zwei Feuerzeuge für eine Zigarre? Zwei finde ich besser.
              1. Hey hotti,

                Soso, Du meinst, das zu wissen ;)

                nein, ich weiß gar nichts, ich vermute nur ;-)

                Hotti wäre nicht Hotti, wenn er dazu kein (hinkendes) Beispiel hätte:

                Kind: "Mama, ich kann kein Blut sehen!"
                Mama schlussfolgert.... und sagt: "Das ist nicht weiter schlimm."
                Kind: "Mama, ich bin blind!"

                Schönes Beispiel :-)

                Gruß, Dennis

                1. Om nah hoo pez nyeetz, Der-Dennis!

                  Schönes Beispiel :-)

                  Das ist für mich schon zu makaber.

                  Matthias

                  --
                  1/z ist kein Blatt Papier.

                2. hi,

                  Hotti wäre nicht Hotti, wenn er dazu kein (hinkendes) Beispiel hätte:

                  Kind: "Mama, ich kann kein Blut sehen!"
                  Mama schlussfolgert.... und sagt: "Das ist nicht weiter schlimm."
                  Kind: "Mama, ich bin blind!"

                  Schönes Beispiel :-)

                  In Opposite: Eine falsche Schlussfolgerung muss nicht unbedingt auch zu einer Entscheidung führen, die sich später als fehlerhaft erweist. Beispiel aus der Biographie Manfred v. Ardenne:

                  Manfred und sein Kumpel hatten illegal eine Telefonleitung über die Straße gespannt.
                  Nebenher aus Jux und Dallerei und zum Zeitvertreib, schossen sie mit einem Luftgewehr in die Einkaufstaschen vorübergehender Passanten.

                  Eine Frau bemerkte dies und rief die Polizei. Der Polizist schaute nach oben und konstatierte, dass wohl von der Leitung ein Stückchen heruntergefallen sein müsste.

                  Die Telefonleitung wurde umgehend abgebaut und alle gingen glücklich nach Hause.

                  Horst

                  --
                  Wenn ein Huhn über ein gefundenes Fressen freudig gackert, heißt das noch lange nicht, dass es blind ist.