Sprachen vs. Mandanten
Sprachen vs. Mandanten
Spricht aus Entwicklersicht etwas dagegen, in der Tabelle clients_lang eine Sprache mehreren Mandanten zuzuordnen? Ich habe nie so ganz verstanden, warum ich Sprachen nicht mandantenübergreifend nutzen kann, sondern z.B. bei 5 Mandanten fünfmal die Sprachen anlegen muss. Gibt es irgendeinen tieferen Sinn dahinter, dass eine Sprache nur exakt einem Mandanten zugeordnet werden kann?
-
- Beiträge: 6284
- Registriert: Do 15. Mai 2003, 18:32
- Wohnort: Da findet ihr mich nie!
- Kontaktdaten:
Ähm ja, und zwar darf eine Sprache "Deutsch" in Mandant 1 nichts mit der Sprache "Deutsch" in Mandant 2 zu tun haben.
Das sind nicht einfach nur Bezeichner, sondern die ID's der Sprachen werden zwingend für die ordnungsgemäße Contentverwaltung benötigt. In deinem eigenen Interesse: Ordne eine Sprach-ID nicht mehreren Mandanten zu, sonst bekommst du Datenmüll.
Ist ja eigentlich auch logisch: Der Content, der für Deutsch in Mandant 1 gepflegt wird, darf nicht gleich dem Content für Deutsch in Mandant 2 sein.
Das sind nicht einfach nur Bezeichner, sondern die ID's der Sprachen werden zwingend für die ordnungsgemäße Contentverwaltung benötigt. In deinem eigenen Interesse: Ordne eine Sprach-ID nicht mehreren Mandanten zu, sonst bekommst du Datenmüll.
Ist ja eigentlich auch logisch: Der Content, der für Deutsch in Mandant 1 gepflegt wird, darf nicht gleich dem Content für Deutsch in Mandant 2 sein.
Versteh ich nicht ganz: Der Inhalt hängt an einem Artikel und ein Artikel ist immer eindeutig einem Mandanten zugeordnet (das macht in meinen Augen auch Sinn). An welcher Stelle käme es zu Mehrdeutigkeiten, wenn eine Sprach-Id bei zwei Mandanten identisch ist? In der Tabelle content wird der Inhalt über das Feld idartlang einem Artikel und einer Sprache zugeordnet. Da kann es meines Erachtes keine Überschneidungen geben (idartlang ist eindeutig für eine Kombination aus Artikelnummer und Sprach-Id und eine Artikelnummer kann nur genau einem Mandanten zugeordnet werden). Kannst Du mir die Tabellen nennen, die bei einer Mehrfachnutzung von Sprach-Ids über verschiedene Mandanten ihren Inhalt nicht mehr eindeutig zuordnen könnten?
Hab jetzt nochmal das Datenmodell durchforstet und kann immer noch nichts finden. Auch die Kategorien sind eindeutig einem Mandanten zugeordnet und es kann also auch da nicht zu Überschneidungen kommen, wenn mehrere Mandanten die selbe Sprach-Id verwenden. Inhaltsüberschneidungen gäbe es nur, wenn ein Artikel oder eine Kategorie gleichzeitig mehreren Mandanten zugeordnet wären (was ja vom Datenbankmodell her gar nicht geht).
Aber wenn es tatsächlich so sein sollte dass ich etwas übersehe, dann wäre es auch konsequent, dass statt der Kreuztabelle clients_lang in der Tabelle lang ein Feld idclient für die (eindeutige) Zuordnung der Sprache zum Mandanten existieren würde (wie bei Artikeln und Kategorien). Dann wäre es auch vom Datenbankmodell her gar nicht möglich, dass eine Mehrfachzuordnung von Sprachen zu Mandanten vorgenommen wird.
Sag mir aber bitte nochmal genau, an welcher Stelle (Tabelle) Du die Schwierigkeiten siehst. Ich fände es nämlich sehr viel logischer, wenn man jede Sprache nur einmal definieren müsste, da die Sprache im Gegensatz zu Artikeln und Kategorien etwas übergeordnetes ist.
Aber wenn es tatsächlich so sein sollte dass ich etwas übersehe, dann wäre es auch konsequent, dass statt der Kreuztabelle clients_lang in der Tabelle lang ein Feld idclient für die (eindeutige) Zuordnung der Sprache zum Mandanten existieren würde (wie bei Artikeln und Kategorien). Dann wäre es auch vom Datenbankmodell her gar nicht möglich, dass eine Mehrfachzuordnung von Sprachen zu Mandanten vorgenommen wird.
Sag mir aber bitte nochmal genau, an welcher Stelle (Tabelle) Du die Schwierigkeiten siehst. Ich fände es nämlich sehr viel logischer, wenn man jede Sprache nur einmal definieren müsste, da die Sprache im Gegensatz zu Artikeln und Kategorien etwas übergeordnetes ist.
Es ist auf den ersten Blick nicht logisch (eine Sprache ist eine Sprache ist eine Sprache).
Aber...
... Mandanten sind einzelne Kunden. Daher muss für jeden die Möglichkeit bestehen, eigene Sprachen zu definieren (und das ist wieder logisch).
Das jetzige Datenbankmodell und alle Funktionen in Contenido sind so gestrickt sind, dieser Logik zu folgen, man kann es nicht ohne weiteres ändern.
Es fehlt z.B. die übergeordnete Ebene "Einstellungen für alle Mandanten definieren" - da gehörte die Definition der Sprache nämlich streng genommen hin. Jedoch müsste man dann im Mandanten die Möglichkeit bieten (wie es auch jetzt schon ist), die Sprachen zuzuordnen.
Eine Änderung ist nicht trivial und aufgrund des Ansatzes "Sprachen gehören zum Mandanten" auch nicht ohne weiteres möglich (die Frage ist übrigens praktisch so alt wie Contenido).
Und unabhängig von der Logik bietet die Möglichkeit, Sprachen pro Mandant zu definieren, schöne Lösungen für seltsame Aufgabenstellungen.
Gruß
HerrB
Aber...
... Mandanten sind einzelne Kunden. Daher muss für jeden die Möglichkeit bestehen, eigene Sprachen zu definieren (und das ist wieder logisch).
Das jetzige Datenbankmodell und alle Funktionen in Contenido sind so gestrickt sind, dieser Logik zu folgen, man kann es nicht ohne weiteres ändern.
Es fehlt z.B. die übergeordnete Ebene "Einstellungen für alle Mandanten definieren" - da gehörte die Definition der Sprache nämlich streng genommen hin. Jedoch müsste man dann im Mandanten die Möglichkeit bieten (wie es auch jetzt schon ist), die Sprachen zuzuordnen.
Eine Änderung ist nicht trivial und aufgrund des Ansatzes "Sprachen gehören zum Mandanten" auch nicht ohne weiteres möglich (die Frage ist übrigens praktisch so alt wie Contenido).
Und unabhängig von der Logik bietet die Möglichkeit, Sprachen pro Mandant zu definieren, schöne Lösungen für seltsame Aufgabenstellungen.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Schön und gut, aber wo kommt es zu den befürchteten Überschneidungen? Auch wenn man eine Sprache mehreren Mandanten zuordnen kann, kann doch immer noch jeder Mandant seine eigenen Sprachen definieren (und schöne Lösungen für seltsame Aufgabenstellungen bleiben auch weiterhin möglich).
Deshalb zurück zur eigentlichen Frage: "Man kann nicht" ist eine schöne Aussage, aber wenn sie stimmt, sollte sie auch recht einfach zu verifizieren sein. Nenn doch einfach mal ein ganz konkretes Beispiel, das nicht funktioniert, wenn eine Sprache mehreren Mandanten zugeordnet werden kann ...
Deshalb zurück zur eigentlichen Frage: "Man kann nicht" ist eine schöne Aussage, aber wenn sie stimmt, sollte sie auch recht einfach zu verifizieren sein. Nenn doch einfach mal ein ganz konkretes Beispiel, das nicht funktioniert, wenn eine Sprache mehreren Mandanten zugeordnet werden kann ...
Und das mit dem Datenbankmodell stimmt nämlich nicht im Bezug auf die Fragestellung. Das Datenbankmodell erlaubt es sehr wohl, eine Sprache mehreren Mandanten zuzuordnen. Damit sehe ich auch keine Probleme bei den Funktionen. Das einzige Problem wäre ein logisches, wenn nämlich Daten nicht mehr zuordnenbar wären - ich würde mich da echt über ein konkretes Beispiel freuen.HerrB hat geschrieben:Das jetzige Datenbankmodell und alle Funktionen in Contenido sind so gestrickt sind, dieser Logik zu folgen, man kann es nicht ohne weiteres ändern.
-
- Beiträge: 6284
- Registriert: Do 15. Mai 2003, 18:32
- Wohnort: Da findet ihr mich nie!
- Kontaktdaten:
Ausgangssituation für beide Fälle:
Es existieren 2 Mandanten.
Ausgangssituation bei eindeutiger Zuordnung einer Sprache zum Mandanten:
Du hast 2 Sprachen, Deutsch (1) für Mandant 1 und Deutsch (2) für Mandant 2. Jetzt möchtest du in der Tabelle con_art_lang nach allen Artikeln suchen, die es für Deutsch (1) gibt. Als Resultat erhälst du sämtliche Artikel, die zum Mandant 1 in Sprache Deutsch (1) gehören. Wenn eine Sprache mehrfach zugeordnet ist, erhälst du Resultate für Mandant 1 und 2. Klar kann man argumentieren, daß ja die idart zusätzlich zum Mandanten zugeordnet ist - das ist auch richtig. ABER: Viele Contenido-Funktionen prüfen in der Regel nicht sämtliche "Objekthierarchien" ab, sodaß es bei einer Mehrfachzuordnung zu Problemen kommen kann.
Meine Aussage zum Thema inkonsistente Daten ziehe ich erstmal "halb" zurück, denn ich kann im Moment nicht beweisen oder wiederlegen, daß es zu Problemen kommen kann.
Das ist einfach eine Ansichtssache. Ich persönlich würde die Mehrfachzuordnung nicht verwenden, wenn du es testen möchtest, mach es
Es existieren 2 Mandanten.
Ausgangssituation bei eindeutiger Zuordnung einer Sprache zum Mandanten:
Du hast 2 Sprachen, Deutsch (1) für Mandant 1 und Deutsch (2) für Mandant 2. Jetzt möchtest du in der Tabelle con_art_lang nach allen Artikeln suchen, die es für Deutsch (1) gibt. Als Resultat erhälst du sämtliche Artikel, die zum Mandant 1 in Sprache Deutsch (1) gehören. Wenn eine Sprache mehrfach zugeordnet ist, erhälst du Resultate für Mandant 1 und 2. Klar kann man argumentieren, daß ja die idart zusätzlich zum Mandanten zugeordnet ist - das ist auch richtig. ABER: Viele Contenido-Funktionen prüfen in der Regel nicht sämtliche "Objekthierarchien" ab, sodaß es bei einer Mehrfachzuordnung zu Problemen kommen kann.
Meine Aussage zum Thema inkonsistente Daten ziehe ich erstmal "halb" zurück, denn ich kann im Moment nicht beweisen oder wiederlegen, daß es zu Problemen kommen kann.
Das ist einfach eine Ansichtssache. Ich persönlich würde die Mehrfachzuordnung nicht verwenden, wenn du es testen möchtest, mach es

Zuletzt geändert von timo am Di 3. Mai 2005, 17:58, insgesamt 1-mal geändert.
Widerlegen wäre auch schwierig, weil man dann ja beweisen müsste, dass es bei keiner denkbaren Konstellation Probleme gibt - beweisen wäre einfach, weil man nur ein Beispiel finden muss, bei dem es Probleme gibt. Deswegen "hoffe" ich ja auf ein entsprechendes Beispiel. Alles was ich mir vorstellen kann und mit dem Datenbankmodell durchgespielt habe, funktioniert.timo hat geschrieben:Meine Aussage zum Thema inkonsistente Daten ziehe ich erstmal "halb" zurück, denn ich kann im Moment nicht beweisen oder wiederlegen, daß es zu Problemen kommen kann.
Hab ich schon gesehentimo hat geschrieben:obacht, ich habe meine Nachricht oben nochmal überarbeitet

timo hat geschrieben:sowohl als auch. Da es keine zentralen Objekte gibt, kann man allerlei "unsauberen Unfug" treiben, was aber dank der eindeutigen Sprach-ID's verhindert wird.calvini hat geschrieben:Reden wir von internen Contenido-Funktionen oder von Modulen?

Sag ich ja - das wäre dann zumindest konsequent, wenn man Sprachen nur eindeutig zuordnen möchte.timo hat geschrieben:Naja, das mit der Zuordnung von Sprache zum Mandanten war mal ein Fehldesign, wurde aber leider nie wieder geändert. Eigentlich müsste bei der Tabelle con_lang ein Feld "idclient" rein...
Aber die Mehrfachzuordnung von Sprachen hätte eventuell den Reiz, dass das Portieren von Inhalten von einem Mandanten zum anderen sehr viel einfacher wäre. Und grundsätzlich bin ich immer noch der Ansicht, dass die Sprache etwas übergeordnetes ist und das Datenbankmodell dies auch korrekt widerspiegelt.
Nochmal zur Ausgangsfrage: Wenn ich bei meiner Modulauswahl vorsichtig bin (bzw. sie mir selbst schreibe), welche internen Standardfunktionen vertrauen darauf, dass eine Sprach-ID eindeutig einem Mandanten zugeordnet ist? Blöde Frage, ich weiß

ist das ganze letztlich nicht etwas gar akademisch? wäre contenido ein naturphänomen würde ich das ja noch verstehen. aber es ist ein cms mit einem erd, welches zugegebenermassen nicht vollständig normalisiert ist. allerdings stellt sich aus meiner sicht weniger die frage, ob man etwas machen könnte, sondern, was man dadurch gewinnen würde. die redundanz durch das mehrfachanlegen von sprachen ist nun wirklich marginal und wie bereits ausgeführt erleichtert es die selektion von artikeln einer bestimmten sprache und eines bestimmten mandanten. nebenbei bemerkt schlägt sich zuweilen redundanz in besserer performance nieder, weshalb sie manchmal angestrebt wird, solange sich keine anomalien daraus ergeben.
ohne es selber schon einmal ausprobiert zu haben, könnte ich mir vorstellen, dass probleme bei der synchronisation auftreten werden, wenn dieselbe sprachen-id in mehreren mandanten verwendet werden wird. aber gewissheit hätte man natürlich nur, wenn man den ganzen code im kopf hätte. allerdings dürfte das für einen einzelnen in der zwischenzeit schwierig werden.
ohne es selber schon einmal ausprobiert zu haben, könnte ich mir vorstellen, dass probleme bei der synchronisation auftreten werden, wenn dieselbe sprachen-id in mehreren mandanten verwendet werden wird. aber gewissheit hätte man natürlich nur, wenn man den ganzen code im kopf hätte. allerdings dürfte das für einen einzelnen in der zwischenzeit schwierig werden.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
hmm... ich kenne das system mittlerweile doch schon einige zeit, aber in welchen funktionen genau das definiert ist, kann ich dir nicht mal annähernd sagen... (mal function.con.php, functions.str.php durchsuchen)calvini hat geschrieben:Nochmal zur Ausgangsfrage: Wenn ich bei meiner Modulauswahl vorsichtig bin (bzw. sie mir selbst schreibe), welche internen Standardfunktionen vertrauen darauf, dass eine Sprach-ID eindeutig einem Mandanten zugeordnet ist? Blöde Frage, ich weiß. Aber es kann ja jeder der mitliest, die Funktionen benennen, die ihm bekannt sind, dann gibt's vielleicht 'ne einigermaßen vollständige Liste ...
anders:
es gibt da eine version eines scripts hier im forum mit dem man mandanten kopieren kann... das script ließe sich sicher leicht darauf ändern die zu kopierenden artikel nicht auf eine neue sprach id umzumünzen... sondern die idlang beizubehalten...
das ließe sich dann relativ leicht testen in welchen teilen des cms es dann probleme verursacht...
*** make your own tools (wishlist :: thx)