Ist eine mandantenfähige Datenbank:
- Ein DB-Server, der für jeden Kunden / Mandanten eine andere (identische) Datenbank / ein anderes Schema hat ?; oder
- Ein DB-Server mit einer Datenbank / einem Schema, auf dem Kunden / Mandanten Datensätze in denselben Tabellen gemeinsam nutzen?
Zum Beispiel könnte ich unter Option # 1 oben einen MySQL-Server an haben mydb01.example.com
, und es könnte sich eine customer1
Datenbank darin befinden. Diese customer1
Datenbank kann beispielsweise 10 Tabellen enthalten, die meine Anwendung für diesen bestimmten Kunden (Kunde Nr. 1) unterstützen. Möglicherweise enthält es auch eine customer2
Datenbank mit genau den gleichen 10 Tabellen, die jedoch nur Daten für Kunde 2 enthält. Möglicherweise gibt es eine customer3
Datenbank, eine customer4
Datenbank usw.
In der obigen Option 2 würde es beispielsweise nur eine einzige Datenbank / ein einziges einziges einziges Schema geben, myapp_db
in dem sich wiederum 10 Tabellen befinden (die gleichen wie oben). Aber hier sind die Daten für alle Kunden in diesen 10 Tabellen vorhanden, und sie "teilen" daher die Tabellen. Und auf der Anwendungsebene wird durch Logik und Sicherheit gesteuert, welche Kunden auf welche Datensätze in diesen 10 Tabellen zugreifen können, und es wird sorgfältig darauf geachtet, dass sich Kunde Nr. 1 niemals in der App anmeldet und die Daten von Kunde Nr. 3 usw. sieht.
Welches dieser Paradigmen stellt eine traditionelle "mandantenfähige" DB dar? Und wenn nicht, kann mir dann jemand anhand der oben beschriebenen Szenarien ein Beispiel für eine mandantenfähige Datenbank geben?