Datenbankmodelierung, eure Meinung

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

  • Datenbankmodelierung, eure Meinung

    Hello!

    Ich bin dabei eine Seite für einen Radiosender neu zu gestalten. Der Webmaster und ich diskutieren im Moment welches Modell geeignet wäre: Eine Tabelle für alle Akteure oder die Akteure zu gruppieren und pro Gruppe eine Tabelle (je nachdem welche Infos über die Personen gespeichert werden sollen).
    (ich realisiere das Projekt im Rahmen meines Studiums, deshalb ist die Vorabanalyse mit datenbankmodellierung (uml) sehr wichtig. )


    Folgende Akteure gibt es:

    Member, hat die Möglichkeit News auf die Seite zu setzen, muss sich vorher anmelden (login, pwd, mail)

    Organisator von Konzerten, kann zusätzlich Konzertdaten eintragen. Anmeldung (zusätzlich adresse, logo, website etc)

    Radiosprecher, hat eine Seite für seine Sendung, die er gestalten kann. Anmeldung (zusätzlich Sendung, Infos etc.)

    Admin, kümmert sich um eine bestimmte Rubrik der Seite, kann Konto für Radiosprecher eröffnen oder eine neue Sendung eintragen. Anmeldung

    SuperAdmin, kann zusätzlich Konto für Admin eröffnen und Rechte verteilen (eine Rubrik pro Admin)

    Was die Rechteverteilung angeht, sind beide Datenbankmodelle praktisch.
    Mein letztes Projekt (Redaktionssystem, also auch verschiedene Rechte für verschiedene Akteure) habe ich mit einer grossen Tabelle für die Akteure realisiert.

    Was habt ihr für Erfahrungen gemacht, bzw was sind eure Vorlieben?

    viele Grüsse
    eve*

  • #2
    ist wohl eher ein BS ... *VERSCHIEB*
    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


    • #3
      Für ein CMS, welches wahrscheinlich nicht mehr um Usergruppen & Rechte erweitert wird, würde ich einfach eine Tabelle mit den Rechten machen und dort dann eine Spalte für ein Recht.

      | id | group_title | haveownpage |
      -------------------------------------------
      | 1 | Adminestratoren | 0


      usw.


      Bei einer vollkommen dynamischen Seite würde ich dann eine Tabelle mit den Rechten machen.


      | id | group_id | name | title | value |
      ----------------------------------------------
      | 1 | 1 | haveownpage | Kann der User eine eigene Seite haben | 0


      So in etwa..
      PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

      Kommentar


      • #4
        Bei dynamischen Rechteverwaltung neige ich dazu "Vererbung" mit einzubauen.

        Du hast also eine Tabellen für die Benutergruppen welche eine parent_id beinhaltet, eine für die möglichen Rechte, und ein um die zwei voran genannten zu verbinden (m zu n Beziehung).

        Dann legst du die Gruppe members als BaumWurzel an (also mit parent_id 0) und weist dieser ihre Rechte zu.

        Dann die Gruppe Organisator mit der id von Member als parent_id.
        Nun brauchst du Organisator nur die zusätzlichen Rechte zu zuweisen, da die von Member automatisch
        (durch die parent_id) auch zu Organisator gehören. (Eine entsprechende implementierung vorausgesetzt )


        Bye!

        Kommentar


        • #5
          Salut!

          Also eine Tabelle mit Rechten werde ich dann wohl anlegen.

          @dayman Allerdings habe ich deine Erläuterungen glaub ich nicht ganz verstanden.
          Es gäbe dann eine Tabelle
          gruppe
          rechte
          member
          organisator

          es besteht eine Beziehung zwischen 'member' und 'gruppe'
          'gruppe' steht in Beziehung zu 'rechte ' und darüber werden die Rechte vergeben

          oder ist member ein datenbankeintrag in 'gruppe'...
          falls du nochmal Zeit hast, wäre eine erneute Erläuterung nett

          viele Grüsse,

          eve*

          Kommentar


          • #6
            Mhn, so wie ich es verstanden hab, hat er 3 Tabellen:


            User (also alle Benutzer, welche eine ID von einer Gruppe haben)
            Gruppe (welche auch Sub-Gruppen haben können)
            Rechte (welche mit den Gruppen verankert sind)



            Floriam
            PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

            Kommentar


            • #7
              Genau wie Floriam das ganze noch mal zusammen gefasst hat...


              Bye!

              Kommentar


              • #8
                ein user gehört also immer nur keiner oder genau einer gruppe an?


                ich würde dafür plädieren:
                tabelle user
                tabelle gruppe
                tabelle user_gruppe
                tabelle rechte
                tabelle user_rechte
                tabelle user_gruppe

                so kannst du einen user beliebig vielen gruppen zuordnen und auch trotzdem einem user einer gruppe ein spezielles recht zuweisen


                für die abfrage würde ich aber eine weitere tabelle nehmen:
                user_rechte_query mit den spalten user_id und right_id (bzw. einem kurznamen für das recht (MAY_POST, MAY_EDIT, ...))

                in dieser tabelle sind dann alle rechte eines users, auch die, die er aufgrund seiner gruppenzugehörigkeit(en) besitzt, enthalten

                ist zwar nicht so schön normalisiert, sollte aber schneller abzufragen sein, als ein join über die ganzen tabellen von oben

                dasich die rechte eines users im normalfall ja nur selten ändern, hast du die komplexe abfrage nur dann, wenn du im admin-menü die userrechte änderst, aktualisierst user_rechte_uery und die welt ist wieder in ordnung
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  ein user gehört also immer nur keiner oder genau einer gruppe an?
                  Ja genau... ich gehe davon aus, das man durch die "Vererbung" auch nur eine brauch...


                  Bye!

                  Kommentar


                  • #10
                    forum
                    - php
                    - html
                    - mysql
                    - ot
                    - admin- und moderatorenbereich

                    du bist mod und erbst also alle rechte der gruppe user?
                    und ein admin erbt alle deine recht und hat eben noch die adminrechte?

                    user dürfen: beiträge erstellen, ändern, beantworten
                    moderatoren dürfen: alle userrechte und beiträge verschieben
                    admins dürfen: alle modrechte und beiträge löschen

                    jetzt geh du mal hin und entziehe aus welche gründen auch immer (beispiele dazu gibt's einige hier...) normalen benutzern das recht ihre beiträge zu ändern
                    angenommen, ein user postet irgendwas ganz furchtbar böses, wie soll ein mod oder ein admin dann bitte den inhalt bearbeiten?
                    rein durch vererbung geht das nicht
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Stimmt...

                      Man könnte die Gruppe des Users ändern
                      Bisher hatte ich diese Anforderung nicht...

                      Wie wäre es dann mit einer zusätzliche Tabelle die User und Rechte verbindet, quasi eine Art Negtivliste darstellt.
                      Also wenn ich möchte das der Benutzer XY nicht mehr Beiträge erstellen darf so erzeuge ich einen ähnlichen datensatz wie

                      Benutzer | Recht
                      ______________________
                      XY | Beiträge ändern

                      Allerdings könnte die ziemlich lang werden


                      Bye!

                      Kommentar


                      • #12
                        Salut zusammen!

                        Bin immer noch am Basteln... und werde mal sehen, was ich von euren Vorschlägen so einbinden kann.
                        Vielen Dank auf jeden Fall

                        mfg eve*

                        Kommentar


                        • #13
                          hm...
                          eigentlich bin ich noch nicht ganz zufrieden mit meinem ergebnis...
                          (habe mit euren Tipps rumgebastelt, und bin dann doch hier hängen geblieben....)

                          table

                          user (id, id_groupe etc...)
                          groupe (id, id_rights etc)
                          rights (id, id_seite etc.)

                          Eine Gruppe hat immer die gleichen Rechte (zum Beispiel die Organisatoren eines Konzertes).

                          Dann gibt es bestimmte Gruppen, deren Rechte sich ändern können.

                          Die Rechte sollen dynamisch generiert werden. Wenn ich eine neue Sendung erstelle, dann weise ich einem oder zwei Moderator(en) das Recht zu, diese Sendung zu verändern.

                          Es gibt dann also eine neue Gruppe von Moderatoren die ein bestimmtes neues Recht haben.


                          was meint ihr da zu?

                          mfg eve*

                          Kommentar


                          • #14
                            Ausser das man groupe => group(s) schreibt finde ich es gut.


                            Bye!

                            Kommentar


                            • #15
                              Hello!

                              Gut, danke für das Feedback, ich mache heute einige Tests mit der dynamischen Erstellung von Rechten...

                              Ausser das man groupe => group(s) schreibt finde ich es gut.
                              lol, da ich in Frankreich lebe und das Projekt für einen französischen Kunden ist, schreibe ich die Begriffe auf Französisch (also groupe), vergesse halt manchmal die Begriffe einzu "d englischen" für die deutschen Foren
                              Selbst an der Uni wird "empfohlen", dass wir die Kommentare im Quelltext auf Französisch schreiben sollen. Bei meiner Ausbildung in Deutschland musste das auf Englisch geschehen! lol, die Franzosen halt

                              mfg eve*

                              Kommentar

                              Lädt...
                              X