Hallo,
ich habe viele Tabellen mit einem Info-Feld (Feld heißt Information).
Zukünftig sollen die Infos mit Datum und nicht fortlaufend in einem Feld gespeichert werden.
Der Plan ist also, eine Tabelle (InfosTbl) zu erstellen mit den Felder IDInfo, ErstellDatum, Information.
Wenn diese neue InfoTbl nur mit einer Tabelle (z.B. KundenTbl) zu verknüfen wäre, würde ich in InfoTbl noch ein Feld FSIDKunden einfügen, mit der ID der KundenTbl verknüpfen und fertig ist die 1:n Beziehung.
Wie aber verknüpfe ich die InfoTbl mit mehreren Tabellen? Für jede zu verknüpfende Tabelle ein Feld für den Fremdschlüssel in die InfoTbl einzufügen scheint mir nicht der richtige Weg zu sein.
Danke
Stefan
Hallo,
Zitatein Feld FSIDKunden einfügen, mit der ID der KundenTbl verknüpfen und fertig ist die 1:n Beziehung.
genau so ist es richtig.
ZitatWie aber verknüpfe ich die InfoTbl mit mehreren Tabellen?
Das ist nicht nötig.
Als einfachster Fall (falls Primär- und Fremdschlüssel korrekt existieren):
Übertrage die Daten (Tabellen) nacheinander, indem jede der "vielen" Tabellen einzeln mit KundenTbl verknüpft werden und als Anfügeabfragen ausgeführt werden.
Hallo Franz,
meine Frage wahr vielleicht missverständlich.
Mit geht es nicht darum, wie ich die Einträge der bestehenden Infofelder in die neue Tabelle übertrage, das mache ich dann über eine Recordset Operation oder eher über SQL, wobei nur die Felder übertragen werden, in denen auch was drinsteht.
Mit geht es um das eigentliche Design. Ich habe viele Tabellen, für die weiterhin ein Infofeld gebraucht wird, z.B. für Lieferanten, einzelne Mitarbeiter des Lieferanten, Kunden, Kundenaufträge, einzelne Arbeitsschritte der Aufträge usw.
Ich muss also von all diesen Tabellen jeweils eine 1:n Beziehung zu der einen Tabelle InfosTbl herstellen.
Mit fällt dazu nur ein, entweder jeden FS in InfosTbl aufzunehmen oder eine JunctionTabelle zu erstellen, die aber eigentlich für n:m Beziehungen gedacht ist (ein Mitarbeiter benutzt viele Werkzeuge und ein Werkzeug wird von vielen Mitarbeitern benutzt).
Also wie stelle ich die vielen 1:n Beziehungen zu einer Tabelle datenbankkonform dar?
Ich hab Stunden im Netz gesucht und nichts Brauchbares gefunden.
VG Stefan
Zitatdie vielen 1:n Beziehungen zu einer Tabelle
Das "viele" müsste in eine Zahl gefasst werden. Die Spezifikationen einer DB lassen nur eine bestimmte Anzahl zu, siehe z.B. Accessspezifikationen (liegt wohl bei 32), da das alles auch verwaltet werden muss, eine Beziehung heißt ja auch zwei Schlüssel, zugehörige Indizes usw.
Daneben macht dann "viel" alles sehr unübersichtlich und anstrengend, eine eingestellte referentielle Integrität arbeitet ja immer mit, auch wenn ein Teil der Tabellen in einem aktuellen Vorgang nicht benötigt und verwendet werden.
Daher könnte man auch dazu kommen, gar keie Beziehung an der Stelle zu setzen, sondern alles dann eigenprogrammatisch abzuhandeln, wie z.B. den Ersatz der RI (zu einer Info muss es einen Basisdatendastz mit entsprechenden Schlüssel geben, auch nach späteren Editierungen, Löschungen usw.). Das muss dann neben Dir auch anderen parallelen und späteren Entwicklern sehr bewusst sein und beachtet werden.
Vorteil wäre da, Deine Infotabelle steht frei im Raum und kann von allen genutzt werden
Hallo,
nun, ich komme mit der Beschreibung nicht so recht klar..
ZitatMit geht es um das eigentliche Design. Ich habe viele Tabellen, für die weiterhin ein Infofeld gebraucht wird, z.B. für Lieferanten, einzelne Mitarbeiter des Lieferanten, Kunden, Kundenaufträge, einzelne Arbeitsschritte der Aufträge usw.
Wenn ich dies recht interpretiere, gibt es mehrere Tabellen, die jede für sich ein(!) Infofeld (Langer_Text?) benötigen.
Wenn so, das füge doch einfach in jede betroffene Tabelle ein Infofeld (LangerText, Memo) ein und gut is....
Wenn es pro Tabelle mehrere Infofelder geben muss(?), dann benötigt jede (1-)Tabelle eine n-Tabelle mit PK unf FK zur 1-Tabelle, einschließlich ref. Integrität.
Hallo,
@franz ZitatWenn so, das füge doch einfach in jede betroffene Tabelle ein Infofeld (LangerText, Memo) ein und gut is....
Das hat er ja, wenn ich es recht verstanden habe. Daraus möchte
er jetzt eine Tabelle machen
ZitatZukünftig sollen die Infos mit Datum und nicht fortlaufend in einem Feld gespeichert werden.Der Plan ist also, eine Tabelle (InfosTbl) zu erstellen mit den Felder IDInfo, ErstellDatum, Information.
@Mero Wenn du die angedachte Tabelle um ein Feld für eine TabellenID und
eins für die DatensatzID ergänzt, kannst du über die Vorschläge von
Eberhard nachdenken.
Wobei ich das angedeutete RI-Problem eigentlich nicht sehe; -ausser
der Löschweitergabe natürlich, um die muss man sich kümmern. Ansonsten
werden diese Infos ja nicht unabhängig von einem zugehörigen DS erstellt,
sondern immer im Zusammenhang. Ich denke da an das Einbinden der Info-
Tabelle per UFo.
gruss ekkehard
Hallo Ekkehard,
du hast meine Frage richtig verstanden.
Ich dagegen steh gerade voll auf dem Schlauch.
Was ist die TabellenID??
Klar werden die Info-Einträge über ein UFo angezeigt.
Wenn du im Endlosformular auf den Info-Button klickst wird sich (ein noch zu erstellendes) Formular mit den Daten des Datensatzes und im UFo mit den Informationen öffnen.
Aber jetzt muss ich der InfosTbl erst mal klarmachen, aus welcher Tabelle die Zahl im Feld FSIDDatensatz stammt. Dazu braucht's deine TabellenID....
Anbei ein Bild der Beziehungen (bis jetzt). Was nun?
VG Stefan
Hallo,
da gibt es ein Bild, aber keine Beziehungen.
Kunden und Lieferanten können in einer Tabelle zusammengefasst werden.
Ansonsten lassen sich aus dem Bild keinerlei Zusammenhänge erkennen.
Beschreibe die Aufgabe der beiden Auftragstabellen. Die Task Tabelle sind das Arbeitschritte zu den Aufträgen ?
Was kommt denn in die Info Tabelle?
Ja sorry, war falsches Bild
Hallo,
das kann so niemals richtig sein, das macht keinen Sinn. Du kannst doch nicht unterschiedliche Primärschlüssel in einem Fremdschlüsselfeld speichern.
Leider bist Du auf meine Hinweise/Rückfragen nicht eingegangen.
Hallo,
So war das auch nicht (an)gedacht, - da hast du ja wieder pro Tabelle
eine Beziehung.
Die Info-Tabelle hat keine Beziehungen. Es fehlt allerdings eine
TabellenID. Die kann man vermutlich sogar aus den Sys-Tabellen
auslesen. Da müsste aber jemand anderes helfen, ich hab das noch
nie gemacht. Ansonsten musst du dir halt eine ausdenken.
Das besagte Ufo muss dann jeweils auf die entsprechende ID gefiltert
werden, und die Verknüpfung funzt wie bei einem normalen UFo über den
PK im HFo und dem "Fremdschlüsselfeld" FSIDDatensatz.
Falls du doch mal einen Datensatz in einer der nicht verknüpften
Tabellen physisch löschen musst, musst du, wegen fehlender RI, die Info-
Datensätze per Code löschen bevor der "Haupt-DS" gelöscht werden kann.
@klausWarum nicht? Wenn der Datentyp übereinstimmt, wovon ich ausgehen würde,
gibt es ein zweites Kriterium, die TabellenID.
gruss ekkehard
Hallo,
ZitatWarum nicht?
Ich habe mich rein am Bez.Bild orientiert.
Außerdem bin ich überzeugt, dass das ohnehin der falsche Weg ist.
Wenn man die Hintergründe und Aufgaben der Tabellen kennen würde, käme man da mit ziemlicher Sicherheit auf ein ganz anderes Datenmodell.
Aber mit den rudimentären Tabellenaufbauten kann man nichts anfangen.
Lange gelöst, war aber lange nicht hier im Forum. So gemacht wie im Kommentar #5 beschrieben, funktioniert.