Ich entwickle 3-4 voneinander abhängige Programme. Nennen Sie sie foo bar baz und auth. Ich möchte, dass sie unabhängig voneinander sind. Stellen Sie sich vor, ich würde jedes Programm an andere Unternehmen lizenzieren. Einige Unternehmen möchten möglicherweise Foo und Bar, andere möchten möglicherweise nur Baz usw. Es scheint auch eine gute Praxis zu sein, die Authentifizierung auch unabhängig zu halten.
Kontext: auth kümmert sich um die Authentifizierung für alle Systeme. Die Hauptbenutzertabelle in auth enthält user_id, email, password, first, last
foo hat auch eine Benutzertabelle, die bestimmte Felder für die Anwendung enthält: Benutzer-ID, Rollen-ID usw.
Jedes System verfügt über eine eigene Datenbank. In der Vergangenheit habe ich von jeder Anwendung einen Fremdschlüssel für die Auth-Datenbank erstellt. Ich habe Aktualisierungsberechtigungen aus den anderen Datenbankbereichen entfernt, aber ausgewählten Zugriff auf bestimmte relevante Felder gewährt. Dies scheint eine schlechte Lösung zu sein, da dadurch eine enge Abhängigkeit entsteht, aber ich konnte die Datenbank normalisieren, sodass ich den Benutzernamen und die E-Mail-Adresse nicht in den Datenbanken foo, bar oder baz speichern musste.
Wäre es besser, die Informationen in allen Datenbanken zu speichern? Oder wäre es besser, die Auth-ID in foo bar und baz zu speichern und eine API zu verwenden, um die Benutzerinformationen mithilfe der authId abzurufen?
Ebenso könnte ich Kunden in allen 3 Systemen haben. Sicher, es scheint schlecht, eine Abhängigkeit in eine Authentifizierungsdatenbank zu erstellen, aber was ist mit den Kundendatenbanken in allen drei?
Oder ist die beste Lösung, um eine zentrale Datenbank zu haben. Eine Benutzertabelle.
Andere Vorschläge?
foo bar
Beispiele sind oft zu abstrakt, um gute Illustrationen zu sein.