Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: ironluke am 10.08.05 - 15:08:33
-
Hallo
Bitte helft einem Notes rookie bei seinem Problem.
Ich habe 2 datenbanken mit kundendaten in der einen sind Telefonnummern gespeichert in der anderen die namen dazu! Wie kann ich Namen und telefonnummern in einer ansicht anzeigen? ???
Danke LUKAS
-
Wie ist denn die Verbindung zwischen Namen + Telefonnummer ?
-
Hallo Danke für die schnelle antwort!
Die Verbindung erfolgt über den Firmennamen!
LUKAS
-
Da sind zwei Begriffe drin die sich gegenseitig erst einmal ausschließen:
"Zwei Datenbanken" "in einer Ansicht".
Also in einer View geht das schon mal nicht. Was aber funktionieren kann ist jeweils in der Kundendatenbank und in der Namensdatenbank einen Embedded View aus der anderen DB mit dem entsprechenden Firmennamen als Schlüssel einzubauen.
Davon abgesehen, wer hat denn das Design verbrochen?
-
Versteh ich jetzt nicht. Wenn in der einen DB doch die Namen + Tel-Nr drin sind, wofür dann zwei DBs ?
Vielleicht hat da jemand versucht, was "relationales" zu bauen... ;D
-
Versteh ich jetzt nicht. Wenn in der einen DB doch die Namen + Tel-Nr drin sind, wofür dann zwei DBs ?
Die Antwort stand schon inder Frage:
... in der einen sind Telefonnummern gespeichert in der anderen die namen dazu
Thomas hat schon vollkommen Recht: In einer Notes-DB, die völlig anders strukturiert ist als eine relationale, wird das nix.
Bernhard
-
@Bernhard,
wenn doch in einer DB Namen + Tel-Nr liegen, warum will er dann sich die Daten aus 2 Dbs zusammensuchen ? Das habe ich nicht verstanden.
-
Klaus geht doch mal einen Schritt zur Seite du stehst auf der Leitung. ;D
Lukas hat zwei Datenbanken. In der einen stehen die Namen und in der anderen die Nummern. Wobei ich das eigentlich nicht glauben kann. Das müsste dann schon ein ........ (nein das schreib ich jetzt nicht aus) programmiert haben
-
In Zugriff auf relationale Datenbanken macht es auch einen gewaltigen Unterschied, ob die Daten in verschiedenen oder in derselben Datenbank leben. Im Falle von mehreren Datenbanken muss man z.B. mit verteilten Transaktionen arbeiten, wenn man Transaktionen benötigt (und das kommt oft vor). Und dafür braucht man komplexen Zusatz, der sich negativ auf
a) auf die Komplexiät
b) auf die Robustheit
und c) die Performance
auswirkt.
Man kann meines Wissens auch normalerweise keinen SQL Befehl über mehrere Datenbanken machen.
In DB2 V8 gibts aber jetzt so ein federierte Tabellen feature, womit das irgendwie möglich ist, Fremdtabellen (sogar von Oracle) virtuell einzuladen.
Im programmatischen Zugriff gehst du immer von der Connection aus. Und die hat eine 1 zu 1 Beziehung mit der Datenbank. Es gibt keine Connection, die für mehrere Datenbanken auf einem RDBMS Server gültig ist.
Es ist auch nicht relational, zusammenhängende Daten über mehrere Datenbanken zu streuen.
Relational ist: Redundanzen in 1 Datenbank vermeiden.
Es ist also nix Notes-Spezifisches.
-
Und Axel was hat das jetzt mit der Frage zu tun?
-
Die Frage ist sowieso geklärt. Klauss hat behauptet, es wäre relational, Daten über mehrere Datenbanken zu verteilen. Ich habe versucht aufzuzeigen, dass dies falsch ist.
Du hast in rdbms vermutlich ceteris paribaus mehr Tabellen als in Notes Forms aber du hast nicht unbedingt mehr Datenbanken. Das ist ziemlich ähnlich wie in Notes, würde ich sagen.
(korrigiert von mir. Deshalb nächste Meldung von T. Schulte unverständlich)
-
Axel wie wäre es mal mit einer Brille? ;)
Ich habe das Wort relational in diesem Zusammenhang nicht in den Mund genommen geschweige denn niedergeschrieben.
-
sorry. hab dich mit klauss verwechselt. Dies sind auch keine persönliche Angriffe, sondern ein Versuch auf Aussagen zu reagieren, die ich anders sehe.
-
Man kann meines Wissens auch normalerweise keinen SQL Befehl über mehrere Datenbanken machen.
SELECT t1.Firmenname, t2.TelNr
FROM db1.table1 as t1, db2.table1 as t2
WHERE t1.Firmenname (+) = t2.Firmenname
Kannst natürlich auch mit Joins machen. Das wäre jetzt ein Outer Right Join in Oracle Syntax.
Aber das zugreifen auf andere Datenbanken mit SQL funktioniert, brauchst halt nur auch die Rechte dafür. Gibt da so schöne MySQL Injections à la "DELETE FROM mysql.user" :)
-
oops. Wieder was gelernt ;D
Ich würd das aber eher als ungewöhnlich ansehen.
-
Aeh, um nochmal auf das ursprüngliche Thema zurückzukommen ;):
Daten aus zwei Quellen (Dokumenten/Datenbanken) geht leider nicht.
Es wird in R7 möglich sein, Ansichten zu erstellen, deren Daten aus verschiedenen DB2 Tabellen kommen, da man die Ansicht mit einer Art SQl Statement füttern kann. Und da man in R7 ja auch Notes DBs in DB2 ablegen kann, kann die Ansicht auch Daten aus zwei NotesDBs/Dokumenten anzeigen. Schöne neue Welt... :o
Gruss
Torsten Armbruster
-
da man die Ansicht mit einer Art SQl Statement füttern kann.
@Thorsten äh Torsten: was heisst eigentlich eine Art SQL Statement?
Kann man da auf beliebige Tabellen zugreifen, oder müssen das spezifische Notes-SQL Relationen sein, die nach guter alter C-Programmierer Art Blobs sind, da das "ja sowieso irgendwie alles nur code ist".
Gruß Axel
-
Man kann meines Wissens auch normalerweise keinen SQL Befehl über mehrere Datenbanken machen.
SELECT t1.Firmenname, t2.TelNr
FROM db1.table1 as t1, db2.table1 as t2
WHERE t1.Firmenname (+) = t2.Firmenname
Kannst natürlich auch mit Joins machen. Das wäre jetzt ein Outer Right Join in Oracle Syntax.
Aber das zugreifen auf andere Datenbanken mit SQL funktioniert, brauchst halt nur auch die Rechte dafür. Gibt da so schöne MySQL Injections à la "DELETE FROM mysql.user" :)
Ähhmm, das soll unter Notes mit Notes-Datenbanken möglich sein? Das kann ich mir aber nicht vorstellen.
Axel
-
Ne Axel, die Diskussion ist mal wieder etwas aus dem Ruder gelaufen. In dem Beispiel gings um Oracle, nix Notes ;)
-
Das wird bald unter Notes möglich sein :) Wenn die Ansichten in Notes sich mit SQL Statements von externen Datenquellen füllen lassen :D Endlich eine Live Verwaltung unserer DNS, Radius, etc... Server... nicht mehr diese ganze lästige Notes Struktur dazwischen. Nur noch ein Notes GUI :)
*mal wieder abweich*
-
Das wird bald unter Notes möglich sein :) Wenn die Ansichten in Notes sich mit SQL Statements von externen Datenquellen füllen lassen :D Endlich eine Live Verwaltung unserer DNS, Radius, etc... Server... nicht mehr diese ganze lästige Notes Struktur dazwischen. Nur noch ein Notes GUI :)
*mal wieder abweich*
Na wenn du dich da mal nicht zu früh freust. Abwarten und Tee trinken. 8)
Axel
-
hallo ironluke (geiler nick O0 - hört sich chillig an),
wie meine vorgänger schon ausgiebig beschrieben haben, geht dies nicht mit standard-notes-funktionen..
aber ist schon umsetzbar... ich könnte dir eine unsaubere lösung empfehlen - jedoch würden die gurus :P hier mich zusammenscheißen...
tu' s aber trotzdem 8)
1. Erstelle einen periodischen Script-Agenten in deiner Quell-DB in der du die Ansicht realisieren willst.
2. Der Agent soll sich aus der ZIEL-DB die Tel. Nr holen und in der Quell-DB in einem tmp-Feld speichern (du hast ja genannt, dass die Doks aus der Ziel-DB und Quell-DB eindeutig am Firmennamen zusammengehören).
3. In der Ansicht zeigst du dann dieses TMP-Feld and und somit hättest du die Anforderung (wenn auch nicht sauber) umgesetzt.
Den Agenten würde ich evtl. 1-2x tägl. laufen lassen, damit die Aktualität der Daten gewährleistet wird.
Ist halt nur ein Workaround. Entweder du tust dies, oder wartest auf R7 :-:
-
Warum sollte da jemand ernsthaft widersprechen, Ayhan ? Wenn das Design der Apps so sein muss oder derart krude ist, aber eben nicht mehr änderbar, dann geht man doch genau diese Wege - durchaus best practices in solchen Fällen. Und was wir nicht vergessen sollten: Es kann mehr als einen ernsthaften Grund geben, dass die Angaben in zwei DBs liegen.
Vor allem: Das Warten auf der R7 wird nichts bringen, da genau diese Aufgabe auch R7 nicht erfüllen wird (afaik) - sie widerspricht ja auch der Notes-Philosophie ...
Bernhard
-
@Ayan: Das Problem von solchen Lösungen ist natürlich immer, dass es:
a) eine Menge Extra-Code ist, der dokumentiert, getestet, nicht vergessen, etc. werden muß.
b) Der Abgleich findet nicht synchron statt. Und das provoziert Anwender-Anrufe der Art: "Die Telefonnummer ist in Datenbank x geändert, aber in Datenbank Y ist sie noch nicht drin. [...] Bei manchen Usern folgen jetzt längere Spekulationen über die Ursachen ohne jegliche Bodenhaftung, die ich inzwischen nicht mehr witzig finde.
Ansonsten ist das völlig in Ordnung.
(Und der bekannte Protest gegen den Begriff Philosophie, wo best practices/architekturellen Constraints besser passen. Die Ursache der Verwendung dieses Begriffes in der Notes-Welt haben natürlich die unzureichende Trennung von Technik & Marketing sowie Kirche & Staat. Philosophie ist in diesem Kontext ein völlig schwammiger, für alles-mögliche einsetzbarer und geradezu metaphysischer Begriff. Völlig un-kantianisch.)