Datenbankstruktur zur Verwaltung mehrerer Konten (Multi-Tenant-Datenarchitektur)?

Datenbankstruktur zur Verwaltung mehrerer Konten (Multi-Tenant-Datenarchitektur)?

Es ist immer einfach, Software zu schreiben, die nur eine Entität verwaltet. Die Entwicklung von Software zur Verwaltung mehrerer Konten/Unternehmen erfordert jedoch die gebotene Sorgfalt.

Ich führe derzeit erste Untersuchungen zu Datenbankschemata durch, die mehrere Konten/Unternehmen verwalten, und möchte Sie fragen, ob Sie eine Webseite oder Open-Source-Software weitergeben können, die ein ordnungsgemäßes Schema demonstriert.

Bearbeiten:Ich konnte die entsprechende Terminologie dafür finden: Multi-Tenant Data Architecture. Ein hilfreicher Microsoft-Artikel beschreibt den Ansatz:http://msdn.microsoft.com/en-us/library/aa479086.aspx

Danke.

Antwort1

Dies ist nur geringfügig komplizierter als eine „einzelne Entität“. Nehmen wir den schlimmsten Fall an – mehrere Unternehmen, die jeweils mehrere Konten haben. Eine Tabelle für Unternehmen. Eine Tabelle für Konten mit einem Fremdschlüssel der Unternehmens-ID. Dann hat jede Transaktion den Fremdschlüssel der Konto-ID. Für alle anderen Daten müssen Sie entscheiden, ob sie zu einem Unternehmen, einem Konto oder etwas anderem gehören. D. h. Mitarbeiter können (im Allgemeinen) nur für ein Unternehmen arbeiten, daher hat der Mitarbeiter die Unternehmens-ID als Fremdschlüssel. Eine Abteilung wäre in einem Unternehmen, dieselbe Beziehung.

Es geht darum, zu verstehen, was wem gehört, und die Beziehung herzustellen. Das klingt vielleicht sehr simpel, aber das ist eigentlich alles.

Wenn Sie versuchen, ein etabliertes Schema zu verwenden, können Sie sich viel Mühe sparen, aber diese Mühe ist es, die ein gutes Ergebnis garantiert. Ein gutes Datenbankdesign entsteht, wenn Sie ALLE Fragen stellen - „Kann ein Mitarbeiter für mehr als eine Abteilung arbeiten?“ „Werden Einkäufe immer einer Abteilung in Rechnung gestellt oder können die Kosten verteilt werden?“ „Müssen wir mehr als eine Genehmigung für die Neuzuweisung eines Mitarbeiters nachverfolgen?“ Diese Fragen sind endlos, aber wenn Sie das nicht tun, wird Ihr System die Benutzer ständig enttäuschen und endlose Änderungen erfordern.

verwandte Informationen