Announcement

Collapse
No announcement yet.

Normalisierung

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

  • Normalisierung

    Hallo miteinander,

    ich bin Neuling in sachen SQL und habe folgende Aufgabe zu bewältigen.
    ich muss ein paar daten normalisieren. jedoch stell ich mich darin etwas schwer an...

    hab auch schon diverse bücher mit beispielen gewälzt aber so richtig verstanden hab ich es leider nicht ...

    deswege frage ich euch um rat ...

    Verantwortlicher | Emfänger | Gruppe
    ......knarf............ | ...jakobs..| Verschiebekraft
    ...........................| ...grunte..| .......................
    ...........................|.... altri......|.....................
    --------------------------------------------------------------------------------------
    ......altri...............| ...knarf.....| Kugelmessen
    ...........................| ...marks....|....................
    ...........................| ...jakobs ..|.....................
    --------------------------------------------------------------------------------------
    ......altri ..............| ...knarf.....| Kraftmessen
    ...........................| ...grunte...|....................


    ich muss aus dem oben genannten beispiel eine normalisierung durchführen...

    um die tabelle mal in worte zufassen ..
    in der spalte verantwortlicher darf nur ein benutzer jeder gruppe zugeordnet sein .. jedoch kann in der spalte verantwortlicher der benutzer mehrfach vorkommen. in der spalte empfänger können mehrere benutzer vorkommen jedoch darf nicht der empfänger = verantwortlicher sein.
    die gruppe darf nur einmal vorkommen.
    jeder gruppe ist ein verantwortlicher zugeordnet und eine unbestimmte anzahl an empfängern.

    wie kann man das am besten normalisieren ?
    ich weiß, dass ich noch mehrere attribute hinzufügen muss.. aber so ganz komm ich hier nicht klar ..

    wer kann mir helfen !?!?

    vielen dank

    gruß arcon

  • #2
    Tabelle mit allen Mitarbeitern. Eine Tabelle mit Gruppen. Jeder Mitarbeiter gehört einer Gruppe an. Und die Tabelle Gruppe verweist wieder auf einen Mitarbeiter der der Verantworliche ist.

    Comment


    • #3
      hallo fanderlf

      danke erstmal für deine hilfe !

      das hatte ich mir bereits auch gedacht ...

      und zwar folgendermaßen:

      relation Mitarbeiter
      Index | Mitarbeiter
      1 .....| knarf
      2 .....| grunte
      3......| marks
      4 .....| jakobs
      5 .....| altri

      relation gruppe
      index | gruppe
      1 ......| verschiebekraft
      2.......| kugelmessen
      3.......| kraftmessen

      laut deiner aussage gehört jeder mitarbeiter einer gruppe an ..

      das stimmt aber so nicht .. da ich ja in dem obigen beispiel geschrieben hatte .. dass z.b. knarf als empfänger der gruppe kugelmessen und kraftmessen angehört .. und als verantwortlicher der gruppe verschiebekraft .. wohin gegen .. der mitarbeiter "marks" nur als empfänger fungiert .. und der gruppe kugelmessen zuzuordnen wäre ..
      d.h. wiederrum .. das deine aussage so nicht stimmt .. da ein mitarbeiter beliebig vielen gruppen zuzuordnen ist.

      wie könnte man das problem, was auch mein knackpunkt ist... lösen ?!?

      Comment


      • #4
        normalisierung

        um es mal mit beziehungen zu definieren ..

        hätte ich zwischen Verantwortlicher und gruppe eine 1:mc beziehung wohingegen ich zwischen empfänger und gruppe eine mc : 1 beziehung habe .. wäre das so richtig formuliert ?

        Comment


        • #5
          Na dann musst du noch eine Tabelle dazwischen bauen die die Benutzer auf die Gruppen mappt, da Du zwischen Benutzer und Gruppen eine m:n Beziehung hast. Und eine Gruppe hat genau einen Verantwortlichen und ein Mitarbeiter ist genau für keine oder eine Gruppe verantwortlichkeit 0-1:1

          Comment


          • #6
            das würde dann folgendermaßen lauten, wenn ich dich richtig verstanden habe ...

            relation Mitarbeiter
            Index | Mitarbeiter
            1 .....| knarf
            2 .....| grunte
            3......| marks
            4 .....| jakobs
            5 .....| altri

            relation gruppe
            index | gruppe
            1 ......| verschiebekraft
            2.......| kugelmessen
            3.......| kraftmessen


            relation Verantwortlicher_Gruppe
            Index | Mitarbeiter_ID | Gruppe_ID
            ....1....| ..... 1................| .... 1
            ....1....|...... 5................| .....2
            ....1....| ......5................| .....3

            relation empfänger_gruppe
            Index | Mitarbeiter_ID | Gruppe_ID
            ...1.....|.........2..............|.......1....... ..
            ...2.....|..........4.............|.........1..... ...
            ...3.....|...........5............|...........1... ...
            ...4.....|..........1.............|.....2......... ...
            ...5.....|............3...........|.......2....... ...
            ...6.....|..............4.........|.........2..... ...
            ...7.....|..........1.............|.....3......... ...
            ...8.....|............2...........|.......3....... ...


            wäre das so richtig ?

            Comment


            • #7
              Die Tabelle Verantwortlicher_Gruppe brauchst Du eigentlihc nicht unbedingt, wenn ein Verantwortlicher nur eine Gruppe haben kann und eine Gruppe nur einen Verantwortlichen. Dann kannst Du den FK auch in die Tabelle Gruppe packen.

              Empfänger_Gruppe passt

              Comment


              • #8
                ja .. ein verantwortlicher kann aber mehreren gruppen zugeordnet sein .. daher muss ich das ja machen .. oder ?

                Comment


                • #9
                  Nein Er kann doch auch in der Gruppentabelle öfters drin stehen. Solange eine Gruppe nur einen Verantwortlichen hat geht das so.

                  Code:
                  Mitarbeiter
                  ==========
                  Id Name
                  1  Florian
                  2  Max
                  3  Arcon
                  
                  Gruppe
                  ===========
                  Id Name Verantwortlicher
                  1  tip  2
                  2  top  3
                  3  tap  3
                  Hier ist Max für Gruppe 1 verantwortlich und Arcon für Gruppe 2 und 3

                  Zwischentabellen braucht man grundsätzlich nur für n:m Beziehungen

                  Comment


                  • #10
                    relation Mitarbeiter
                    Index (PK)| Mitarbeiter
                    1 .....| knarf
                    2 .....| grunte
                    3......| marks
                    4 .....| jakobs
                    5 .....| altri

                    relation gruppe
                    index(PK) | Mitarbeiter_ID(FK) | gruppe
                    1 ......| .........1.............|verschiebekraft
                    2.......| .........5.............| kugelmessen
                    3.......| .........5.............| kraftmessen


                    relation empfänger_gruppe
                    Index (PK)| Mitarbeiter_ID(FK) | Gruppe_ID(FK)
                    ...1.....|.........2..............|.......1....... ..
                    ...2.....|..........4.............|.........1..... ...
                    ...3.....|...........5............|...........1... ...
                    ...4.....|..........1.............|.....2......... ...
                    ...5.....|............3...........|.......2....... ...
                    ...6.....|..............4.........|.........2..... ...
                    ...7.....|..........1.............|.....3......... ...
                    ...8.....|............2...........|.......3....... ...

                    wäre das so richtig ? (auch mit dem richtigen setzen der PK und FK).. eigentlich schon oder ?

                    Comment


                    • #11
                      Ja so siehts gut aus, auch wenn ich jetzt nicht alle Daten auf Richtigkeit geprüft habe, aber das Schema passt

                      Comment

                      Working...
                      X