Ankündigung

Einklappen
Keine Ankündigung bisher.

Umsetzen UML Klassen - Datenbank(mySQL)

Einklappen

Neue Werbung 2019

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

  • Umsetzen UML Klassen - Datenbank(mySQL)

    Hallo leute,

    ich habe eine frage, wie kann man die folgende Klassen im MySQL Datenbank umsetzen?
    siehe bild.


    Danke für Hilfe!
    Angehängte Dateien

  • #2
    Eine Tabelle pro Klasse.

    Generalisierungsbeziehungen kannst du durch 1:1-Relationen modellieren. Oder du verzichtest auf eine Tabelle für HumanResource und packst die Attribute in die Tabellen der abgeleiteten Klassen.

    BTW: Klassennamen sind meistens im Singular formuliert (außer es handelt sich um eine Containerklasse).
    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

    Kommentar


    • #3
      Wie ist denn die Assoziation Human Resource <-> Mitglied zu verstehen? "Mitglied" sehe ich anhand des Kompositums als "Mitglied eines Teams", was verbindet also z.B. einen Mitarbeiter mit mehreren Teammitgliedern?

      Ich frage nur weil das eventuell etwas unglücklich modelliert ist und es anders auch einfacher als DB umzusetzen wäre. Ansonsten schließe ich mich mimomamu an, Miitarbeiter und Team sind auf jeden Fall zwei unterschiedliche Tabellen, ob HumanResource als Tabelle nötig ist hängt auch davon ab, was o.g. Assoziation darstellt.
      [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
      [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

      Kommentar


      • #4
        Okay Danke für eure Beiträge.

        @fab was verbindet einen Mitarbeiter mit mehreren Teammitgliedern?
        ich denke, sie können eventuell ein Team zusammengehören... so verstehe ich das.

        Im DB habe ich so angelegt :
        - eine Tabelle für Mitglieder.
        - eine Tabelle für HumanResource - siehe Bild
        Ich habe Mitarbeiter und Team in einer Tabelle gepackt!! ist das richtig so?

        Danke
        Angehängte Dateien

        Kommentar


        • #5
          Zitat von 3logy Beitrag anzeigen
          @fab was verbindet einen Mitarbeiter mit mehreren Teammitgliedern?
          ich denke, sie können eventuell ein Team zusammengehören... so verstehe ich das.
          Dann sollte es in deinem UML-Diagram eine Assoziation zwischen Mitarbeiter und Team geben.

          Zitat von 3logy Beitrag anzeigen
          Ich habe Mitarbeiter und Team in einer Tabelle gepackt!! ist das richtig so?
          Kann man machen, da ja beide von Human Resource erben. Halte ich aber meistens für suboptimal, da du dann in der Tabelle sowohl die Attribute von Mitarbeiter als auch die von Teams abbilden musst, bei jedem Objekt aber immer ein Teil mit NULL belegt ist (weil es eben zur anderen Klasse gehört).
          Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

          Kommentar


          • #6
            Zitat von 3logy Beitrag anzeigen
            Okay Danke für eure Beiträge.

            @fab was verbindet einen Mitarbeiter mit mehreren Teammitgliedern?
            ich denke, sie können eventuell ein Team zusammengehören... so verstehe ich das.
            Das wäre allerdings eine (abgeleitete) Assoziation "in Team mit" zwischen Mitarbeiter und Mitglied, zusätzlich zu einer umgekehrten Assoziation von Mitglied zu Mitarbeiter, die dem abstrakten Mitglied eine konkrete Person zuordnet. Oder können bei dir Teams aus weiteren Teams bestehen? Dann würde das Modell einigermaßen Sinn ergeben.

            Je nachdem, was "Mitglied" bei dir überhaupt für Attribute hat, könnte die Klasse allerdings sogar gestrichen werden, aus meiner Sicht wäre "Mitglied" nämlich lediglich die Assoziation zwischen Mitarbeiter und Team
            [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
            [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

            Kommentar


            • #7
              Zitat von fab Beitrag anzeigen
              Das wäre allerdings eine (abgeleitete) Assoziation "in Team mit" zwischen Mitarbeiter und Mitglied, zusätzlich zu einer umgekehrten Assoziation von Mitglied zu Mitarbeiter, die dem abstrakten Mitglied eine konkrete Person zuordnet. Oder können bei dir Teams aus weiteren Teams bestehen? Dann würde das Modell einigermaßen Sinn ergeben.

              Je nachdem, was "Mitglied" bei dir überhaupt für Attribute hat, könnte die Klasse allerdings sogar gestrichen werden, aus meiner Sicht wäre "Mitglied" nämlich lediglich die Assoziation zwischen Mitarbeiter und Team
              Ja das stimmt bei mir bestehen Teams aus weiteren Teams!! Deswegen ist meine Meinung nach, die Klasse "Mitglied" berechtigt, da kann man die Mitarbeiter-Team und Team-Team verbindungen nachvollziehen. Wie ich es auf bild gezeigt habe.

              Kommentar


              • #8
                Zitat von 3logy Beitrag anzeigen
                ... bei mir bestehen Teams aus weiteren Teams!...
                Composite-Pattern.
                Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

                Kommentar


                • #9
                  Gut, das war das was ich wissen wollte, war für mich nicht direkt ersichtlich.

                  Ich würde trotzdem eine Tabelle für Mitarbeiter und eine für Team erstellen und dann vielleicht so etwas:

                  Mitglied:
                  id|team_id|...

                  Mitarbeiter_als_Mitglied:
                  mitarbeiter_id|mitglied_id

                  Team_als_Mitglied
                  team_id|mitglied_id

                  Composite-Pattern.
                  Klar aber gibt es das auch für relationale Datenbanken?
                  [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                  [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                  Kommentar


                  • #10
                    Zitat von fab Beitrag anzeigen
                    Gut, das war das was ich wissen wollte, war für mich nicht direkt ersichtlich.

                    Ich würde trotzdem eine Tabelle für Mitarbeiter und eine für Team erstellen und dann vielleicht so etwas:

                    Mitglied:
                    id|team_id|...

                    Mitarbeiter_als_Mitglied:
                    mitarbeiter_id|mitglied_id

                    Team_als_Mitglied
                    team_id|mitglied_id
                    Kannst du mir bitte erklären warum du so viele Tabellen brauchst?
                    Ist es so optimal und normalisiert? ich meine, man könnte doch Mitarbeiter_als_mitglied und Team_als_mitglied zusammenpacken...oder?

                    "Composite-Pattern" ist das sowas wie das "Ordner-datei" struktur?

                    Kommentar


                    • #11
                      Ja. Die beiden Tabellen realisieren jeweils eine n:m Relation, zwei sind das weil ja Mitarbeiter und Team unterschiedliche Tabellen sind.
                      Die Tabelle "Mitglied" kommt hinzu weil Mitglied ja eine eigene Entität sein soll, wenn darin keine weiteren Informationen stehen, kannst du dir die Tabelle natürlich schenken, damit sind wir wieder bei:
                      Je nachdem, was "Mitglied" bei dir überhaupt für Attribute hat, könnte die Klasse allerdings sogar gestrichen werden, aus meiner Sicht wäre "Mitglied" nämlich lediglich die Assoziation zwischen Mitarbeiter und Team
                      [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                      [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                      Kommentar


                      • #12
                        Zitat von fab Beitrag anzeigen
                        Ja. Die beiden Tabellen realisieren jeweils eine n:m Relation, zwei sind das weil ja Mitarbeiter und Team unterschiedliche Tabellen sind.
                        Mitarbeiter und Team sind zwar auf der Uml Entwurf 2 unterschiedliche Tabellen, aber wäre es nicht optimaler dann als ein einzige Tabelle das ganze zu betrachten? als "Human Ressource" Tabelle mit Diskriminatoren ?
                        "Mitglied" hat Attributen.

                        Kommentar


                        • #13
                          Ich ging bisher davon aus dass Mitarbeiter und Team hinreichend unterschiedlich sind dass die Variante mit zwei Tabellen optimaler ist, sonst haben deine Datensätze jede Menge "Lücken". Aber diese Abwägung liegt letztendlich bei dir.
                          [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                          [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                          Kommentar


                          • #14
                            Können diese "Lücken" in die Datensätze irgendwie die Performanz oder die Zuverlässigkeit irgendwie beeinträchtigen?

                            Kommentar


                            • #15
                              Du hast auf jeden Fall Speicher-Overhead, gerade bei Spalten mit fester Speichergröße wie INT. Auch bedeutet es für die DB zusätzlichen Aufwand, wenn du nur Mitarbeiter oder nur Teams abfragen willst.
                              Merkliche Auswirkungen auf die Performanz hast du vermutlich erst bei sehr großen Datenmengen, es wird aber IMHO schwieriger, die Daten konsistent zu halten.
                              [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
                              [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

                              Kommentar

                              Lädt...
                              X