"Ich möchte nur noch eine Sache hinzufügen, Sie schlagen vor, ich habe eine Tabelle für jeden Benutzertyp ... Ich bevorzuge diesen Ansatz aber wie würde ich ein Schema entwerfen, wo ich diese Benutzer-ID 7 (admin) sagen kann eine Nachricht an die Benutzer-ID 537 (Client) gesendet? Oder dass eine Zahlung von der Benutzer-ID 70 (Firma) empfangen wurde? "
Es gibt nichts, was Sie daran hindern könnte. Habe eine Tabelle {Absender-Empfänger-Nachricht (-id)} mit Primärschlüssel alle drei Attribute und zwei FK {Absender} und {Empfänger}. Die FK beziehen sich auf den Primärschlüssel der Tabelle, der die COMMON-Attribute aller Benutzer enthält.
Nun könnte Ihre nächste Frage sein, "aber ich will eine Regel zu sagen, dass kein Benutzer des Typs X direkt eine Nachricht an einen Benutzer des Typs Y senden kann".
Das ist der Punkt, an dem jeder aktuelle (relationale) DBMS seine Schwächen zeigt. Selbst Oracle oder DB2 kann das nicht deklarativ tun. Es gibt einfach zu viel, um über dieses Thema zu sagen, um in diese Antwort zu passen.
BTW Sie schienen sich trotz aller Downvotes für meine Antwort interessiert zu haben. Schätze das wirklich.
hat jeder Typ von Benutzerentity eigene Felder? (dh hat ein Partner, aber kein Benutzer, eine Sternbewertung?) –
"jeder Benutzertyp hat seinen eigenen Satz von Details" - ja, es gibt mehrere verschiedene Felder für jeden Benutzertyp. –
mögliches Duplikat von [MySQL Question - Wie man mit mehreren Benutzertypen umgeht - eine Tabelle oder mehrere?] (Http://stackoverflow.com/q/1054068/90527) – outis