Frage

Ich bin derzeit in der Planungsphase einen Scheduling-Web-App Aufbau (für freiwilliges Personal der Ereignisse), und ich habe eine Frage für diejenige mit mehr Erfahrung.

Hintergrund: Es gibt einen Veranstaltungskalender, und jeder Benutzer jederzeit für eine der Veranstaltungen anmelden kann. Zu einem späteren Zeitpunkt, aber vor diesem Ereignisse, einer der Admins Schritt und wählen Sie eine „Staff List“ aus denen, die registriert, und der Rest wird in eine „Alternate List“ gesetzt werden.

Was ich bisher gedacht ist, dass es eine Ereignistabelle, eine Benutzertabelle, und dann drei andere:

  • Userevent
    • Maps-Nutzer auf Ereignisse registriert sie. Weder die Mitarbeiter noch die Alt-Liste der Mitglieder bedeuten.
  • UserStaff
    • Maps-Nutzer auf Ereignisse registriert sie, und auch Personal geschehen sein.
  • UserAlt
    • Ähnlich UserStaff

Die Frage ist dann zwei Teil:

  • Ist das ein guter Weg, es zu tun?
  • Sollte jede dieser drei assoziativen Tabellen haben die Benutzer-ID und das Ereignis-ID?

Die zweite Frage ist wirklich denjenigen Ich mag würde diskutiert sehen. Das scheint wie eine Menge von duplizierten Material (alles in entweder UserStaff oder UserAlt immer in Userevent sein), so dass ich dachte an einen eindeutigen Schlüssel für den Userevent Tisch, zusätzlich zu dem zusammengesetzten Schlüssel zu schaffen, dass die anderen Tabellen (UserStaff und UserAlt) beziehen sich auf. Auf der positiven Seite gibt es weniger Duplicate Content auf der Seite nach unten gibt es eine Zwischentabelle (Userevent), die in fast jede Abfrage auf diese Weise Bezug genommen werden muss.

Hoffentlich habe ich schon deutlich genug, und danke im voraus.

War es hilfreich?

Lösung

Ich habe die folgenden Tabellen:

User (UserID, firstname, lastname, etc.)
Event (EventID, Name, Date, Location, Capacity, etc.)
EventRegistration (EventRegistrationID, UserID, EventID, ParticipantTypeID, etc.)
ParticipantType (ParticipantTypeID, Name)

ParticipantType.Name ist einer der "Teilnehmer" oder "Mitarbeiter".

Andere Tipps

Das scheint gut, wenn auch Sie Ihre Benutzer vielleicht prüfen Kombination - Ereigniszuordnungstabellen in eine, und mit einer Säule, auf der Tabelle, die den Zweck des Vereins zeigt, das heißt Ereignis, Mitarbeiter oder Alt. Dies würde die Notwendigkeit für die Duplikation effektiv vermeiden Sie in den Tabellen beschreiben Userevent, da Mitarbeiter und Alt in Betracht gezogen werden könnten, eine Obermenge der Veranstaltung für die meisten Zwecke sein.

Ein Vorteil dieses Ansatzes besteht darin, dass es für es kann mehr Arten von Benutzern sein - Ereignisverbände, wie wenn Sie einen Benutzer, der eine Staffer für ein Ereignis ist, aber keinen Teilnehmer oder einen Benutzer, der gerade eine Alt; Dieser Ansatz erspart Ihnen, alle möglichen Kombinationen aufzuzählen. Nun, wenn Sie Ihr Design legt ausdrücklich fest, dass Sie nur einen bestimmten Satz von Benutzerteilnahmetypen haben können, könnte dies ein Maß an Dissoziation einführen Sie nicht wollen; Sie können explizite Einschränkungen lieber auf dem Satz von Teilnehmerzahlen haben, die ein Benutzer auf ein Ereignis haben kann. Wenn Sie nicht, dass die fest vorgegebenes Soll haben, auf der anderen Seite, dieses System ermöglicht eine Teilnahme Rollen Hinzufügen von leicht (und ohne bestehende Beteiligung Rollen zu stören).

Nicht eine direkte Antwort auf Ihre Frage, aber hier ist ein Ort Ich mag . Es hat Tonnen (und Tonnen) Beispielschema. Ich im Allgemeinen nicht verwenden es als endgültig (natürlich), aber manchmal wird es geben Sie mir eine Idee, etwas, das ich war nicht zu denken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top