Ankündigung

Einklappen
Keine Ankündigung bisher.

MYSQL Beziehungen

Einklappen

Neue Werbung 2019

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

  • MYSQL Beziehungen

    Hallo,

    ich komme momentan irgendwie nicht weiter.

    Ist das ERM Modell richtig? Sind dort auch N:M Beziehungen drin? Wenn ja, wäre das schlimm, bzw. kann man das ändern?



    Tabelle Benutzer, sind halt die Benutzer drin
    Tabelle Gruppe, sind die Gruppen drin, welches mein System benötigt
    Tabelle Mitgliedschaft, werden alle Benutzer und Gruppe zusammengefasst, z.B. Benutzer A hat Zugriff auf Gruppe A und B

    z.B.

    Mitgliedschaft:
    1 A A lesen
    2 A B schreiben

    Ist das so richtig oder gibst no ne andere Lösung?

    Vielen Dank

    Gruß


  • #2
    Zitat von gipsy111 Beitrag anzeigen
    Sind dort auch N:M Beziehungen drin?
    Ja.

    Zitat von gipsy111 Beitrag anzeigen
    Ist das ERM Modell richtig? Wenn ja, wäre das schlimm, bzw. kann man das ändern?
    Wie schlimm? Meinst du die Welt explodiert? Es ist nichtmal klar was du am Ende haben willst. Du kannst das ändern so viel du willst.

    Zitat von gipsy111 Beitrag anzeigen
    Ist das so richtig oder gibst no ne andere Lösung?
    Lösung die ein Problem sucht?
    You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

    Kommentar


    • #3
      Zitat von chorn Beitrag anzeigen
      Meinst du die Welt explodiert?
      Nein natürlich nicht ... ich mein ist es generell falsch, m:n beziehungen zu erstellen?

      Zitat von chorn Beitrag anzeigen
      Es ist nichtmal klar was du am Ende haben willst. Du kannst das ändern so viel du willst.
      Soll wie wie eine Userverwaltung werden. Es gibt Bereiche, wo standardmäßig keiner Zugriff hat, nur wenn einer in der Gruppe ist.
      Verständlich?

      Zitat von chorn Beitrag anzeigen
      Lösung die ein Problem sucht?
      Ja, kann man es so lösen, dass man nur 1:n beziehungen hat oder braucht man das nicht unbedingt??

      Vielen Dank.

      Kommentar


      • #4
        Wenn du n:m brauchst, verwende es, was das bedeutet ist klar definiert, "falsch" ist daran technisch nichts, "falsch" hängt von deinem Konzept ab, du kannst es nur falsch benutzen.

        Google/Wiki > "Normalisierung" zeigt dir was du damit machen kannst und was das heisst. Wenn du dein Ziel mit dem Konstrukt erreichen kannst geht das so, ja.
        You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

        Kommentar


        • #5
          Das Modell sieht in Bezug auf die Normalisierung korrekt aus. Die Frage ist in der Tat, welche Anforderungen das Modell später erfüllen soll.

          Die Beziehung zwischen Benutzer und Gruppe ist praktisch eine N:M-Beziehung. Die Beziehung zwischen Mitgliedschaft und Benutzer sowie Mitgliedschaft und Gruppe ist jeweils eine 1:n-Beziehung.

          Kommentar


          • #6
            Konkretes Beispiel, wenn deine unterstrichenen Werte die Schlüssel darstellen:

            Wenn Benutzer A in Gruppe A dann darf er lesen
            Wenn Benutzer A in Gruppe B dann darf er schreiben

            Wenn Paul Benutzer ist darf er lesen
            Wenn Paul Admin ist darf er schreiben
            You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

            Kommentar


            • #7
              @chorn
              Vielen Dank!

              Zitat von xm22 Beitrag anzeigen
              Die Beziehung zwischen Mitgliedschaft und Benutzer sowie Mitgliedschaft und Gruppe ist jeweils eine 1:n-Beziehung.
              Okay, das wollte ich ja auch. bwz. das wollte ich hören. Irgendwie bin ich auf dem Schlauch gestanden.

              Vielen Dank!

              Kommentar


              • #8
                Zitat von chorn Beitrag anzeigen
                Konkretes Beispiel, wenn deine unterstrichenen Werte die Schlüssel darstellen:

                Wenn Benutzer A in Gruppe A dann darf er lesen
                Wenn Benutzer A in Gruppe B dann darf er schreiben

                Wenn Paul Benutzer ist darf er lesen
                Wenn Paul Admin ist darf er schreiben
                Das funktioniert aber nur solange, bis eine Unterscheidung zwischen Funktions- und Sichbarkeitsberechtigungen notwendig ist.

                Die Frage zu dieser Aufgabenstellung würde dann lauten:

                Zitat von dr.e.
                Darf Benutzer A den Content B sehen und falls ja, was darf er mit diesem anstellen?
                Konkret wird so ein Konzept dann benötigt, wenn du verschiedene Bereiche der Anwendung gegeneinander abgrenzen, aber innerhalb des sichtbaren Bereichs eines Benutzers muss nochmal unterscheidbar sein, welche Rolle er einnimmt. Ein Senior-Redakteur sollte z.B. Inhalte publizieren können, ein Junior-Redakteur nicht. Beide sehen den Inhalt, haben aber unterschiedliche Funktions-Berechtigungen.
                Viele Grüße,
                Dr.E.

                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                1. Think about software design before you start to write code!
                2. Discuss and review it together with experts!
                3. Choose good tools (-> Adventure PHP Framework (APF))!
                4. Write clean and reusable software only!
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                Kommentar


                • #9
                  Hallo,

                  ja danke für die Info.

                  Ich haben nur zwei Zugriffsarten:

                  1. Lesen und Anzeigen.
                  2. Schreiben (Lesen) und Anzeigen.

                  Wenn er in keiner Gruppe ist, dann wird nix angezeigt!

                  Das sollte eigentlich dann funktionieren.

                  Gruß

                  Gipsy

                  Kommentar


                  • #10
                    Hallo,

                    ich habe nochmal eine Frage.

                    Ich möchte jetzt mit INNER JOIN arbeiten.

                    Das "normale" INNER JOIN ohne Verschachtelung funktioniert.

                    Jetzt möchte ich eine Verschachtelung einbauen, weil ich drei Tabellen abfragen muss.

                    Also wenn ich es mit der WHERE Klausel mache, dann sieht das so aus!

                    Code:
                    SELECT mitgliedschaft.benutzer_id,
                           benutzer_kennung,
                           benutzer_name,
                           benutzer_email,
                           benutzer_regdatum,
                           benutzer_ersteller,
                           mitgliedschaft.mitgliedschaft_zugriff,
                           gruppe.gruppe_name
                      FROM 
                        mitgliedschaft, gruppe, benutzer
                      WHERE
                        mitgliedschaft.benutzer_id = benutzer.benutzer_id AND
                        mitgliedschaft.gruppe_id = gruppe.gruppe_id
                    Wie löse ich das mit INNER JOIN?

                    Vielen Dank!

                    OK habs

                    SELECT mitgliedschaft.benutzer_id,
                    benutzer_kennung,
                    benutzer_name,
                    benutzer_email,
                    benutzer_regdatum,
                    benutzer_ersteller,
                    mitgliedschaft.mitgliedschaft_zugriff,
                    gruppe.gruppe_name
                    FROM mitgliedschaft
                    INNER JOIN benutzer
                    ON mitgliedschaft.benutzer_id = benutzer.benutzer_id
                    INNER JOIN gruppe ON mitgliedschaft.gruppe_id = gruppe.gruppe_id

                    Kommentar

                    Lädt...
                    X