ERD-"Circles"

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

  • ERD-"Circles"

    Hallo zusammen

    Mein Lehrmeister hat zu einem meiner ERDs gesagt, "Circles" sollten vermieden werden, sie bringen sonst später Probleme mit sich. Und um folgenden Fall gehts:

    Eine Firma hat Kontakte, genauso ein KMU, beide haben Kontaktpersonen.
    Eine grössere Firma kann KMUs besitzen.
    ==> Problem, der "Circle" entsteht.

    Wie kann ich jetzt dieses Problem lösen? Was würdet ihr vorschlagen, welche Alternativen gibt es?

    Danke im Voraus für eure Hilfe

    Gruss
    Onyx

  • #2
    Was ist KMU?

    Kommentar


    • #3
      Abkürzung für Kleines oder Mittleres Unternehmen (v.a. in der Schweiz ein gängiger Ausdruck - sorry )

      Kommentar


      • #4
        OffTopic:
        ist ja toll, dass du gern Abkürzungen nützt, aber deutsche und englische durcheinander zu mischen ist nicht gerade sinvoll


        back2topic, wo siehst du Zirkelbezug?

        Kommentar


        • #5
          Zitat von Onyxagargaryll Beitrag anzeigen
          Eine Firma hat Kontakte, genauso ein KMU, beide haben Kontaktpersonen.
          Eine grössere Firma kann KMUs besitzen.
          ==> Problem, der "Circle" entsteht.
          @ASP
          Das meint er ....
          • Eine Firma hat Kontakte.
          • Eine KMU hat Kontakte.
          • Eine Firma hat KMU und die hat Kontakte.


          @Onyx
          Warum hat nicht einfach jede Firma entsprechende KMU's? Zumindest technisch.

          So gilt immer "Firma hat KMU hat Kontakt".

          Hat eine Firma real keinen KMU, so nutzt du die KMU dennoch als "Platzhalter".
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Das sind die Entitäten und Relationen, die ich herauslese:

            Firma --hat--> Kontakt
            Firma --hat--> Kontaktperson
            KMU --hat--> Kontakt
            KMU --hat--> Kontaktperson
            Firma --besitzt--> KMU

            Das sind alles Einbahnstrassen, da führt kein Weg zurück zum Ausgangspunkt. Wo soll da jetzt ein Kreis sein?

            Die von Abraxax angesprochene IS-A-Bezieung (ein KMU ist eine Firma) solltest du auf jeden Fall erstmal mit modellieren. Später kannst du die beiden Entitäten vielleicht zu einer zusammenführen. Dann ist es vielleicht nur noch ein Flag "isKMU", eine Spalte im DB-Design in der Tabelle Firma.

            Kommentar


            • #7
              Zitat von onemorenerd Beitrag anzeigen
              Wo soll da jetzt ein Kreis sein?

              Firma -> KMU -> Kontakt <- Firma
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Zitat von Abraxax Beitrag anzeigen
                Firma -> KMU -> Kontakt <- Firma
                Quatsch, jemand, der sowas macht, hat keine Ahnung von Data Modeling. Selbst wenn der Ansprechpartner von Mutter- und Tochtergesellschaft die gleiche Person wäre, warum weist du sie mit Zirkelbezug zu? Warum nicht einfach als unabhängigen Kontakt aufnehmen, denn es könnte sich doch auch ändern, z.B. Übernahme der Tochtergesellschaft durch eine andere Firma.

                Kommentar


                • #9
                  Widerspricht das nciht auch der Normalisierung?

                  Ich hätte jetzt spontan die Kontakte in einer separaten Liste abgelegt und jeden Datensatz mit nem PRIMARY KEY versheen und dann überall wo der Kontakt gebraucht wird ne Zuweisung auf die ID. -> Redundanz wird vermieden.
                  Liebe Grüße,
                  SteKoe!

                  PHP Tutorials
                  Peter Kropff | Quakenet | Schattenbaum.net

                  Kommentar


                  • #10
                    Nein, denn es ist zwar zufällig die gleiche Person, sie ist aber Angestellte in 2 verschiedenen Firmen. Es ist außerdem ein Sonderfall, von daher kannst du nicht von Redundanz sprechen. Nimm doch mal ein CRM Programm und erfasse eine Firma, welches Programm läßt dich denn Daten von bestehenden Ansprechpartnern von fremden, bereits aufgenommenen Firmen der gerade erfassten Firma zuweisen?

                    Kommentar


                    • #11
                      Zitat von Abraxax Beitrag anzeigen
                      Firma -> KMU -> Kontakt <- Firma
                      Das ist kein Zirkelbezug. Wenn man den Pfeilen folgt, kommt man von Firma über KMU zu Kontakt, aber der letzte Pfeil zeigt in die andere Richtung. Man kann also nicht von Kontakt zu Firma springen.

                      Als Klassen würde das etwa so aussehen:
                      class Firma
                      class KMU extends Firma
                      class Mitarbeiter {
                      function __construct(Firma $firma) {}
                      }
                      class Kontakt extends Mitarbeiter

                      Und als Relationen:
                      Firma(id, name, ...)
                      KMU(Firma.id, ...)
                      Mitarbeiter(id, Firma.id, name, ...)
                      Kontakt(id, Mitarbeiter.id, ...)

                      KMU ist eine Spezialisierung von Firma, Kontakt eine von Mitarbeiter. Falls KMU und Kontakt keine weiteren Eigenschaften haben, kann man zusammenfassen:
                      Firma(id, name, ..., isKMU)
                      Mitarbeiter(id, Firma.id, name, ..., isKontakt)

                      Kommentar


                      • #12
                        Wow Leute, mit so vielen Antworten habe ich nicht gerechnet ^^

                        Firma -> KMU -> Kontakt <- Firma
                        Damit hatte Abraxax recht, so wars gemeint. Ich habe das nochmals als Bild verdeutlicht.

                        Ob das ein Zirkelbezug ist oder nicht, vermag ich nicht zu beurteilen.
                        Mein ihr also, damit, so sei es in Ordnung und müsse nicht verändert werden? Oder wäre doch sowas wie
                        "Firma hat KMU hat Kontakt"
                        eine Lösung?

                        Danke für die Hilfe
                        Herzlichen Gruss
                        Onyx

                        EDIT: Die Logik wurde noch diskutiert; Es kann in meinem Fall durchaus sein, dass eine Person sagen wir zu 50% als Sekretärin bei der grossen Firma und 50% als Sekretärin bei der Tochterfirma arbeitet. Oder zumindest ist sie als Kontaktperson für Aussenstehende eingetragen, unabhängig davon, für wen sie arbeitet.
                        Angehängte Dateien
                        Zuletzt geändert von Onyxagargaryll; 22.05.2009, 08:48.

                        Kommentar


                        • #13
                          Hast du die ganze Diskussion auch gelesen? Wenn ja, warum fragst du noch?

                          Kommentar


                          • #14
                            Hallo asp2php

                            Wenn alle mit
                            Nein, denn es ist zwar zufällig die gleiche Person, sie ist aber Angestellte in 2 verschiedenen Firmen. Es ist außerdem ein Sonderfall, von daher kannst du nicht von Redundanz sprechen.
                            einverstanden sind, dann haben wirs, ja. Nur wurde der Thread während meiner Abwesenheit heiss diskutiert und oft falsch interpretiert, also habe ich vorerst angenommen, man habe aufgrund unklarer Informationen aufgehört zu diskutieren

                            Aber wenn das kein Zirkelbezug ist, dann ist ja alles bestens!

                            Danke für all die Antworten, Gruss
                            Onyx

                            Kommentar


                            • #15
                              Zitat von Onyxagargaryll Beitrag anzeigen
                              Es kann in meinem Fall durchaus sein, dass eine Person sagen wir zu 50% als Sekretärin bei der grossen Firma und 50% als Sekretärin bei der Tochterfirma arbeitet. Oder zumindest ist sie als Kontaktperson für Aussenstehende eingetragen, unabhängig davon, für wen sie arbeitet.
                              Hm, da würde ich Person als Entität modellieren. Mitarbeiter und Kontakt sind dann Spezialisierungen von Person, ggf. kann es dazwischen auch eine Abstraktion "Rolle" geben.

                              Wie kommst du eigentlich auf eine 1-zu-N-Beziehung zwischen Firma und KMU in deinem ERD?

                              Kommentar

                              Lädt...
                              X