Frage

Ich habe zwei Tabellen in meiner Datenbank:

  • Firma Tabelle (ID, Company, CompanyUsername, CompanyPassword)
  • Employee-Tabelle (ID, CompanyID, Name, Benutzername, Passwort)

Im Moment habe ich ein internes Mail-System bin die Gestaltung, für die Mitarbeiter miteinander schreiben können, sondern auch direkt an das Unternehmen Konto schreiben.

Meine interne Mail-Tabelle hat diese Felder:

  • ID
  • AbsenderID
  • EmpfängerID
  • Nachricht
  • ...

Nun mein Problem tritt auf, wenn ich die Nachrichten-Tabelle mit IDs füllen (von / bis) Ich habe keine Ahnung, ob die Nachricht von der Gesellschaft oder der Mitarbeiter als die Macht ID existiert in beiden Tabellen.

Was könnte meine Lösung sein?

Aktualisieren

Das obige Beispiel war meine Frage zu vereinfachen.

Die Mitarbeiter und Firmen Tabellen enthalten keinen Benutzername oder Passwort, sondern einen Verweis auf ASP.NET-Mitgliedschaft uniqueidentifier für Anmeldungen zu verwalten. Wie bei der Verwendung von UI unten vorgeschlagen, um den von und den Empfänger zu steuern, gehe ich mit UI aus dem ASP.NET Membership-Controller. Vielen Dank. : -)

War es hilfreich?

Lösung

Verwenden Sie eine Unique für ID in der Gesellschaft und Mitarbeiter Tabellen und Verwendung newid () als Standardwert.

Alternativ Führen Sie die Tabellen und ein Feld hinzufügen, um zu zeigen, ob der Datensatz ein Unternehmen oder an Arbeitnehmer ist.

Andere Tipps

Sie könnten zwei Fremdschlüssel verwenden, auf Unternehmen und einer an Mitarbeiter und sicherzustellen, dass nur eine immer gesetzt.

So ein email.ToID zu employee.ID oder company.ID beziehen könnte, ist das richtig? Sie können nicht deklarativ einschränken, dass email.ToID in mindestens einem von (employee.ID oder company.ID) vorhanden sein. Nur wenige Lösungen:

  1. Haben IDs in der E-Mail-Tabelle (ToEmployeeId, ToCompanyId) und eine Check-Einschränkung, die die auf einer bestimmten E-Mail angegeben werden nur eine beschränkt werden.
  2. Haben Sie Mitarbeiter und Gesellschaft Ids in der gleichen ID Raum, z.B. ihre Id wird in irgendeiner Art von Kontakt Tisch beherrscht, und dann company.Id und employee.Id haben beide eine FK Referenzierung auf Contact.Id. Ich glaube nicht, diese Lösung ist sehr gut, da der Kontakt ein ziemlich lahmer Super-Typ dieser anderen Tabellen ist.
  3. Haben Sie einen Kontakt Tisch wie (ContactID, EmployeeId, CompanyID). Wenn eine Mail versponnen wird bis zu = X EmployeeId, suchen Sie nach einer Kontaktreihe mit EmployeeId = X. Wenn man nicht vorhanden ist, erstellen Sie es und die neue ContactID verwenden. Das Gleiche gilt für CompanyID. Dies ermöglicht es Ihnen, auch andere Id setzt auch in Zukunft zu erweitern verwenden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top