Ich bin gerade dabei, eine Web-Planungs-App zu erstellen (für die freiwillige Besetzung von Veranstaltungen), und ich habe eine Frage für diejenigen mit mehr Erfahrung.DB Schema Organisation
Hintergrund: Es gibt einen Kalender mit Ereignissen, und jeder Benutzer kann sich jederzeit für eines der Ereignisse registrieren. Zu einem späteren Zeitpunkt, aber vor diesem Ereignis, tritt einer der Admins ein und wählt eine "Mitarbeiterliste" aus denen, die sich registriert haben, und der Rest wird in eine "Alternative Liste" aufgenommen.
Was ich bisher gedacht ist, dass es eine Ereignistabelle, eine Benutzertabelle, und dann drei andere:
- Userevent
- Maps-Nutzer auf Ereignisse sie registriert. Impliziert weder die Mitarbeiterliste noch die Alt-Mitgliedschaft.
- UserStaff
- Maps-Nutzer auf Ereignisse registriert sie, und auch Personal geschehen sein.
- UserAlt
- Ähnlich UserStaff
Die Frage ist dann zwei Teil:
- Ist dies ein guter Weg, es zu tun?
- Sollte jede dieser drei assoziativen Tabellen die Benutzer-ID und die Ereignis-ID haben?
Diese zweite Frage ist wirklich die, die ich gerne diskutiert sehen würde. Das scheint viel doppeltes Material zu sein (alles in UserStaff oder UserAlt wird immer in UserEvent sein), also dachte ich darüber nach, einen eindeutigen Schlüssel für die UserEvent-Tabelle zu erstellen, zusätzlich zu dem zusammengesetzten Schlüssel, den die anderen Tabellen (UserStaff und UserAlt) verweist auf. Auf der positiven Seite gibt es weniger duplizierten Inhalt, auf der anderen Seite gibt es eine Zwischen-Tabelle (UserEvent), die in fast jeder Abfrage auf diese Weise referenziert werden muss.
Hoffentlich war ich klar genug, und danke im Voraus.
Eine weitere interessante Idee. Gut zu wissen, dass ich noch mehr darüber nachdenken muss. – nilamo
Je mehr ich darüber nachdenke, desto mehr gefällt mir der Ansatz "Kombiniere die Tabellen", da die Gruppe die Registrierungstypen zu einem späteren Zeitpunkt einfach hinzufügen/ändern kann. – nilamo
Ja, das ist sicherlich funktional; Es gibt eine erzwungene Eins-zu-eins-Zuordnung zwischen EventRegistration und ParticipantType, was mich allerdings ein wenig beschäftigt. Was ist, wenn Sie völlig disjunkte Beteiligungen haben wollen? Sie haben beispielsweise eine Situation, in der Sie einen Benutzer haben, der zwar Mitarbeiter, aber kein Veranstaltungsteilnehmer ist? Die Fremdreferenz von der EventRegistration bedeutet, dass Sie nur eine Art von Benutzerereignispartizipation für jede Benutzerereignisinstanz haben können. –