2012-04-10 7 views
0

Ich versuche eine Datenbank zu entwickeln, in der Daten gespeichert werden, die von einer webbasierten Anwendung gesammelt werden, die Mitarbeiteraktivitäten verfolgt. Ich habe einen Mitarbeiter Tabelle, die wie folgtBeziehung zwischen zwei Datenbanktabellen (Zuordnung eines Mitarbeiters zu einer Aktivität)

Employee 
-------- 
id 
name 
position 
email 

Und und mehrere Aktivitätstabellen, die jeweils mit unterschiedlichen Spalten aussieht. Ein Beispiel für einen:

OutreachAndTraining 
----- 
id 
date 
county 
city 
type 
... 

ProfessionalDevelopment 
------ 
id 
date 
comments 

Ich möchte in der Lage sein, den Überblick zu behalten, welche Mitarbeiter ein Teil jeder Aktivität waren, wollen aber nur die Aktivität selbst einmal anmelden. Was ist der beste Weg, mehrere Mitarbeiter mit einer Aktivität zu verbinden? Muss ich für jede Aktivität eine separate Tabelle erstellen, um Mitarbeiter-IDs und Aktivitäts-IDs zu speichern?

Antwort

1

einen Mitarbeiter Unter der Annahme, kann an mehr als eine Tätigkeit nehmen, was Sie hier haben, ist eine N: M-Beziehung zwischen Mitarbeitern und Aktivitäten, die für jede Beziehung mit der zusätzlichen „link“ Tabelle modellierte:

enter image description here


Wenn Sie viele Arten von Aktivitäten haben, können Sie die Vererbung berücksichtigen (. aka Kategorie, Verallgemeinerung, Subtyp oder Klassenhierarchie), die Anzahl der Beziehungen (und damit „link“ Tabellen) zu minimieren:

enter image description here

Weitere Informationen zur Vererbung finden Sie in ERwin Methods Guide nach "Subtype Relationships".

+0

Vielen Dank für dieses Beispiel. Ich hatte Schwierigkeiten, die Linktabellen zu visualisieren und fragte mich, ob das die einzige mögliche Lösung war. Sieht so aus, als ob Subtypen der beste Weg sind. – jasontk19

+0

Ok, das macht für mich Sinn, wenn ich Einträge aus der Datenbank abrufe, aber ich habe immer noch Probleme zu bestimmen, wie ich diese Info eingeben soll und wie die SQL-Abfrage aussehen könnte. – jasontk19

+0

... um eine Aktivität für mehrere Mitarbeiter zu protokollieren. Ich habe meine IDs für die Aktivitätstabellen automatisch inkrementiert, woher weiß ich, was ich in die EmployeeActivity-Tabelle für ActivityID einfügen soll, bevor die Aktivität überhaupt eingefügt wurde? – jasontk19

Verwandte Themen