Capior: (ACCESS: STRUKTUR)

Hallo zusammen,

kürzlich wurde ich beauftragt, die Website meiner Dorfpartei neu zu gestalten/programmieren. Nun möchte ich eine Seite erstellen, auf welcher alle Kommissionen mit ihren Mitgliedern aufgelistet werden.
Mein Problem: Da ich die ganze Liste in eine Datenbank packen will, um sie später einfach zu editieren, muss ich wissen, in welcher Struktur ich das anstellen soll.

So sieht's aus:

- x Kommissionen
 - x Mitglieder
 - Jedes Mitglied gehört einer Partei an (oder sonst parteilos)
 - Jedes Mitglied kann in mehreren Kommissionen tätig sein.
 - Jedes Mitglied kann PräsidentIn einer, aber nicht zweier+ Kommissionen sein.

Welche Struktur wähle ich da am Besten? 3 Tabellen (Personen, Parteien, Kommissionen)? Diese irgendwie verknüpfen? Wenn ja, wie? Wie sieht die Abfrage schlussendlich aus?

Ihr merkt, ich weiss nicht wirklich, wie ichs machen soll.

Danke, liebe Grüsse
  Capior

  1. Hi,
    was hat Access mit dieser Webseite zu tun??

    Welche Struktur wähle ich da am Besten? 3 Tabellen (Personen, Parteien, Kommissionen)? Diese irgendwie verknüpfen? Wenn ja, wie?

    Die Datenbank ist ja nur für 1 Partei, also fällt die Tabelle Parteien weg. Ich schlage vor: Mitglieder und Kommisionen. Die Verknüpfung machst du in den jeweiligen Abfragen durch joints.

    Weitere Tabellen die wiederkehrende Daten liefern könnten auch noch sinnvoll sein, wie Ort/PLZ, Berufe, Status etc, die z.B. bei der Registrierung eines Mitgliedes auf der Seite dazu dient dass die möglichen Optionen vorgegeben werden können. Ist aber nur sekundär.

    Andreas

    1. /edit/
      Es fehlt doch noch eine Tabelle, und zwar bildet die Tabelle Kommission ja nur die Kommission und nicht die Mitglieder der Komm. ab. Also bedarf es einer separaten Tabelle KommissionsMitglieder die die Primärschlüssel aus Mitglieder und Kommission beinhaltet, und z.B. Eintrittsdatum, Austrittsdatum, Funktion_in_der_Kommission etc.

      Gruß Andreas

      1. /edit/
        Es fehlt doch noch eine Tabelle, und zwar bildet die Tabelle Kommission ja nur die Kommission und nicht die Mitglieder der Komm. ab. Also bedarf es einer separaten Tabelle KommissionsMitglieder die die Primärschlüssel aus Mitglieder und Kommission beinhaltet, und z.B. Eintrittsdatum, Austrittsdatum, Funktion_in_der_Kommission etc.

        Gruß Andreas

        Hallo Andreas

        Danke für die Antwort. Aber ich denke, ich habs nun in etwa geschafft.
        Da wir eine "gute" ;-) Partei sind, listen wir auch die andersparteiigen Kommissionsmitglieder auf; es ist also eine vollkommene Liste.

        Momentan hab ich vier Tabellen: Kommissionen, Mitglieder, Personen, Parteien.

        Personen.PersonenID ist mit Mitglieder.PersonenID verknüpft.

        Auf jeden Fall gibt mir die Abfrage inzwischen was Brauchbares aus.

        Grüsse
         Capior

        1. Hallo,

          Momentan hab ich vier Tabellen: Kommissionen, Mitglieder, Personen, Parteien.

          Personen.PersonenID ist mit Mitglieder.PersonenID verknüpft.

          Und was ist wenn 1 Mitglied in mehreren Komissionen ist? Wie bildest du das ab? Die Tabelle Kommissionen kann man ja nicht nehmen, diese beschreibt ja nur den Gegenstand einer Kommision

          Andreas

        2. yo,

          folgende tabellen, wobei ich primary keys gross geschrieben habe. frendschlüssel sind mit tabellenname_id gekennzeichnet. die spalte praesident_id ist fredmschlüssel der tabelle mitglieder und hat die eigenschaft UNIQUE. weitere spalten solten auch UNIQUE sein, parteiname, kommisionsname:

          • parteien: ID, parteiname
          • mitglieder: ID, vorname, nachname, partei_id
          • kommissionen: ID, kommissionsname, praesident_id
          • mitglieder_ kommission: MITGLIED_ID, KOMMISIONS_ID

          Ilja

          1. yo,

            Hallo

            folgende tabellen, wobei ich primary keys gross geschrieben habe. frendschlüssel sind mit tabellenname_id gekennzeichnet. die spalte praesident_id ist fredmschlüssel der tabelle mitglieder und hat die eigenschaft UNIQUE. weitere spalten solten auch UNIQUE sein, parteiname, kommisionsname:

            • parteien: ID, parteiname
            • mitglieder: ID, vorname, nachname, partei_id
            • kommissionen: ID, kommissionsname, praesident_id
            • mitglieder_ kommission: MITGLIED_ID, KOMMISIONS_ID

            Ok, vielen Dank! Ich hab nun eine Tabelle weniger und krieg dasselbe ;-) Ich denke das ist gut so ;-)

            Vielen Dank

            Noch was: Momentan speichere ich ja zu jeder Person die Partei - und zwar in Form der ID. Wie kann ich diese am einfachsten in den vollkommenen Namen "konvertieren"? Dasselbe für die Kommissionen.

            Ilja

            Danke und tschüss
              Capior

          2. yo,

            Hallo

            • parteien: ID, parteiname
            • mitglieder: ID, vorname, nachname, partei_id
            • kommissionen: ID, kommissionsname, praesident_id
            • mitglieder_ kommission: MITGLIED_ID, KOMMISIONS_ID

            Irgendwie klappt das doch nicht wie gewünscht ;-)
            mitglieder_kommission: ist das eine tabelle? aber 2 primary keys sind ja nicht möglich!?

            Wie kann ich mehrere Kommissionen einer Person zuweisen?

            Danke und tschüss
              Capior

            Ilja

            1. yo,

              mitglieder_kommission: ist das eine tabelle? aber 2 primary keys sind ja nicht möglich!?

              es ist ein zusammengestzter pk, sprich beide spalten zusammen bilden einen PK ab. geht ganz einfach unter access, beide markieren und auf den schlüsssel clicken.

              Wie kann ich mehrere Kommissionen einer Person zuweisen?

              durch die beziehungstabelle mit den zusammengetzten schlüssel. dort steht dann die id einer person zu unterschiedlichen id's der kommissionen.

              Ilja

              1. yo,

                hallo

                es ist ein zusammengestzter pk, sprich beide spalten zusammen bilden einen PK ab. geht ganz einfach unter access, beide markieren und auf den schlüsssel clicken.

                Ok, hat geklappt! Danke

                durch die beziehungstabelle mit den zusammengetzten schlüssel. dort steht dann die id einer person zu unterschiedlichen id's der kommissionen.

                Jup, stimmt. War schon vorher so ;-)

                Nun noch - so hoffe ich - meine letzte Frage:
                Ich möchte alle Kommissionen mit ihren zugehörigen Mitgliedern ausgeben. Unter einer Spalte "Diverses" möchte ich mögliche (Vize)Präsidien angeben.

                Inwiefern kann ich nun die KommissionenMitglieder-Tabelle brauchen. Wofür ist die nun eig. gut? Darin stehen ja nur Zahlen!?

                Ich muss die Nr. durch deren zugeordnete Namen ersetzen, aber dazu brauche ich doch die oben genannte Tabelle gar nicht? Mir reichen doch die andern 3 Tabellen?

                So soll die Ausgabe mal aussehen:
                ---------------------------------------------
                  Kommission X

                Vorname   Nachname [Adresse, etc.] Diverses

                Knut      Müller   Strasse x, ...  Präsident
                  Wolfang   Petri    Strasse y, ...
                ---------------------------------------------

                Wie du womöglich schon festegellt hast, arbeite ich das erste mal mit mehreren verknüpften Tabellen.

                Ich arbeite mit ASP.NET und lese mich grad in das programmatische Setzten von Beziehung innerhalb Tabellen ein.

                Doch wie sieht die beste Abfrage aus?

                Ilja

                Vielen Dank!
                  Capior

                1. yo,

                  Inwiefern kann ich nun die KommissionenMitglieder-Tabelle brauchen. Wofür ist die nun eig. gut? Darin stehen ja nur Zahlen!?

                  die mitglieder-tabelle enthällt nur daten der mitglieder, entsprechend die kommissions-tabelle nur daten der jeweiligen kommissionen. was aber durch die beiden tabellen nicht abgebildet werden kann ist die m:n beziehung der beiden tabellen, sprich ein mitglied kann in mehreren kommissionen sein und eine kommisison kann mehrere mitglieder besitzen. solche m:n beziehung brauchen eine extra beziehungstabelle und dort stehen dann auch nur die jeweiligen id's, bzw, dinge wie beitrittsdatum, etc.

                  oder in einem satz, diese tabelle bildet die m:n beziehung zwischen mitglieder und kommissionen ab !

                  entsprechend bauen sich dann auch die abfragen auf. je nachdem was du abfragen willst, kommt die beziehungstabelle mit vor oder auch nicht.

                  Ich möchte alle Kommissionen mit ihren zugehörigen Mitgliedern ausgeben.

                  bei dieser abfrage gehts du über die drei tabellen, mitglieder, kommisssionen und eben der besagten beziehungstabelle, wobei es einen fallstrick gibt, nämlich einen OUTER JOIN sollte man benutzen, für den fall, dass es "noch" keine mitglieder für eine kommission gibt. solche abfragen gehen unter access recht schnell mit clicky clicky, musst selbst wissen, was du benutzen willlst.

                  Unter einer Spalte "Diverses" möchte ich mögliche (Vize)Präsidien angeben.

                  das kannst du entweder so machen, wie mit dem präsidenten der kommmissionen, also dort einen fk platzieren. oder aber du schreibst ihn "händich" per textspalte dort rein. kann ja sein, dass es ein möglicher vize ist, der aber noch gar nicht als mitglied aufgenommen wurde. dass ist deine entscheidung.

                  Ilja

                  1. yo,

                    hi yo

                    oder in einem satz, diese tabelle bildet die m:n beziehung zwischen mitglieder und kommissionen ab !

                    Vielen Dank! Ich ging von einer 1:n Beziehung aus. Versuchte mich dann mit DataRelations in ADO.NET, aber ja ;-) Nun versuche ich damit m:n Beziehungen abzubilden. "Klappt" einigermassen.

                    entsprechend bauen sich dann auch die abfragen auf. je nachdem was du abfragen willst, kommt die beziehungstabelle mit vor oder auch nicht.

                    Ich möchte alle Kommissionen mit ihren zugehörigen Mitgliedern ausgeben.

                    bei dieser abfrage gehts du über die drei tabellen, mitglieder, kommisssionen und eben der besagten beziehungstabelle, wobei es einen fallstrick gibt, nämlich einen OUTER JOIN sollte man benutzen, für den fall, dass es "noch" keine mitglieder für eine kommission gibt. solche abfragen gehen unter access recht schnell mit clicky clicky, musst selbst wissen, was du benutzen willlst.

                    Ok, ja. Schlussendlich werd ichs wohl mit INNER resp. OUTER JOIN machen, nur hab ich irgendwie Gefallen an den DataRelations gefunden ;-)

                    Unter einer Spalte "Diverses" möchte ich mögliche (Vize)Präsidien angeben.

                    das kannst du entweder so machen, wie mit dem präsidenten der kommmissionen, also dort einen fk platzieren. oder aber du schreibst ihn "händich" per textspalte dort rein. kann ja sein, dass es ein möglicher vize ist, der aber noch gar nicht als mitglied aufgenommen wurde. dass ist deine entscheidung.

                    Ok, klar, ja. Nur ist das nicht möglich. Präsi oder Vize müssen Mitglieder sein.

                    Ilja

                    Danke dir vielmals!

                    Capior