Hallo zusammen,
ich arbeite seit längerem mit einer Datenbank, die seit nunmehr 1,5 Jahren ständig komplexer wird. Jetzt habe ich ein größeres Problem, das sich am Anfang meiner Arbeit eingeschlichen hat, und das mir jetzt auf die Füße fällt.
Es gibt zwei Tabellen tblGrunddaten und tblZusatzdaten, die in einer 1:1-Beziehung stehen. Die enthaltenen Daten hätten von Anfang an in einer Tabelle stehen sollen. Da ich aber diesen Fehler gemacht habe, würde ich ihn jetzt gern ausbügeln und die beiden Tabellen zusammenführen. Ich kann aber nicht herausfinden, ob und wie das geht.
Der Primärschlüssel von tblGrunddaten ist verknüpft mit einem indizierten Zahlfeld von tblZusatzdaten (ohne Duplikate). tblGrunddaten halte ich ständig aktuell und hier werden neue Datensätze angelegt. Die Tabelle enthält mittlerweile 1200 Datensätze. Das Problem: Neu angelegte Datensätze scheinen nicht in tblZusatzdaten auf. Diese enthält noch immer lediglich die etwa 500 Datensätze, die ich in tblGrunddaten hatte, als ich tblZusatzdaten angelegt habe. Neue Datensätze aus tblGrunddaten kann ich zwar hinzufügen, aber nur manuell und jeden Datensatz einzeln.
Es gäbe zwei Lösungsmöglichkeiten für das Problem: 1) Die beiden Tabellen werden zu einer verschmolzen (wäre eine saubere Lösung). Geht das irgendwie, sie über gedID (s. Bilder) zusammenzuführen? 2) Die Datensätze aus tblGrunddaten werden automatisch an tblZusatzdaten weitergegeben.
Kann mir irgendjemand helfen? Ich poste gern noch weitere Bilder, falls das zur Lösung des Problems nötig sein sollte.
Danke und beste Grüße!
Hallo,
es stellt sich die Frage, warum sollen die in der Zusatzdaten auftauchen, Du hast ja kein Feld ausgefüllt, es sind ja keine Daten drin. Sobald in den Zusatzdaten ein Feld (zusätzlich zum Fremdschlüssel) ausgefüllt wird erscheint der Datensatz auch in der Abfrage mit beiden Tabellen. Und ohne Eintrag ist er ja bedeutungslos, enthält ja nichts. Außerdem musst Du einfach mal den Beziehungstyp ändern (2 oder 3), dann klappt das auch.
Ob das Zusammenführen sinnvoll ist, ist auch nicht sicher. Gibt es viele Datensätze in den Zusatzdaten zu den es keine Grunddaten gibt ?
Wie viele Felder sind denn in den beiden Tabellen zusammen ?
Access kann in einer Tabelle nur 255 Felder aufnehmen.
Die vielen JaNein Felder lassen auf ein falsches Datenmodell schließen.
Was wird denn da angehakt, Eigenschaften, Merkmale ?
Prinzipiell kann man, wenn die von MzKlMu erwähnte 255 Feldergrenze nicht überschritten werden, die Feldnamen der zweiten Tabelle in der ersten übernehen und eine Aktualisierungsabfrage darüber laufen lassen.
PS: Bei Tabellennamen wie Grunddaten und Zusatzdaten kommt bei mir der Verdacht auf, dass es sich hier um einen Datenhaufen handelt. Oder werden hier Gründe (im Sinne von Ursachen; oder Gewässergründe) und Zusätze (für Lebensmittel) verwaltet? Und weil man in Tabellen außer Daten nichts anderes speichern kann, sollte man auch darauf im Namen verzichten. Tabellen sollten IMO nach Objekten oder nach in ihnen vermekten Handlungen bezeichnet werden.
Danke für die Antworten! Ich habe mittels Aktualisierungsabfrage jetzt die Daten aus tblZusatzdaten in die Grundtabelle integriert. Jetzt aber noch eine Anschlussfrage: von tblZusatzdaten hängen diverse Formulare und Berichte ab. Muss ich dort bei jedem Feld manuell den Bezug ändern (auf das entsprechende Feld in tblGrunddaten) oder lässt sich das irgendwie automatisiert machen?
P.S.: Ja, bei den Ja/Nein-Feldern handelt es sich um Merkmale, die abgefragt werden. Ich nutze die Datenbank zur Auswertung von Archivmaterialien.
P.P.S.: In meiner Datenbank haben die beiden Tabellen durchaus sprechende Namen. Ich habe nur zu Demonstrationszwecken die Namen geändert.
Hallo,
Für die Berichte und Formulare nimmst Du als Datenquelle die neue Tabelle. Felder die im Formular/Bericht nicht vorhanden sind müssen nachgetragen werden. Der Bezug zur Tabelle ergibt sich automatisch über die Datenquelle.
ZitatJa, bei den Ja/Nein-Feldern handelt es sich um Merkmale, die abgefragt werden.
Dann ist das Datenmodell zu hinterfragen.
Warscheinlich bleiben nach Normalisierung nur wenige Felder übrig. Denn die Zuordnung von Merkmalen erfolgt in einer 3. Tabelle als je ein Datensatz.
Von Deinen vielen Feldern bleiben dann nicht mehr viel übrig.
Das ist eine klassische n:m Beziehung zu der 3 TAbellen notwendig sind.
- Archivmaterial
- Merkmale (je ein Datensatz)
- ArchivMatMerkmal
Siehe hierzu:
http://allenbrowne.com/casu-23.html
Der Aufbau mit den Merkmalen ist prinzipiel falsch. Wenn neue Merkmale hinzukommen, muss das ohne Änderung der Datenstruktur möglich sein - nämlich durch hinzufügen eines neuen Datensatzes. Das schließt nicht aus, dass man zur einfachen und schnellen Dateneingabe ein Formular mit x Kontrollkstchen hat.
Siehe auch Allen Brownes Don't use Yes/No fields to store preferences (http://allenbrowne.com/casu-23.html).
Danke! Jetzt tut's so weit, wie ich es brauche.
Hallo,
ZitatJetzt tut's so weit, wie ich es brauche.
hast Du dabei unsere Hinweise zum Datenmodell beachtet oder einfach ignoriert ?