Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern

Begonnen von Arndt, April 14, 2016, 19:46:21

⏪ vorheriges - nächstes ⏩

Arndt

Hallo Leute,

ich bin neu hier, habe aber gleich ein Problem.

Ich habe zwei Tabellen, von der eine (P) persönliche Daten von Probanden enthält. Die andere (E) enthält Ergebnisse von Experimenten, die diese Probanden gemacht haben.

Zwei Tabellen soll es deshalb geben, weil die Studenten, die die Experimentaldaten statistisch auswerten, keine persönlichen Probandendaten sehen sollen. Jetzt ist aber die Frage, wie ich die Tabellen verknüpfe. Ich denke da an eine Variable, welche in beiden Tabellen vorhanden ist und welche sinnfreie Namen (Kennziffern) enthält, die eindeutig sind. z.B. eine hexagesimale Zahl mit 10 Ziffern A1C3D12FF4.

Gibt es eine Möglichkeit, in einer Tabelle P eine Variable so zu definieren, dass beim Eintragen eines neuen Datensatzes so eine Kennziffer vergeben wird UND dieser Datensatz zeitgleich in der Tabelle E erscheint?

Mangels der Kenntnis richtiger Begriffe finde ich keine Beschreibung für sowas.

MzKlMu

Hallo,
nimm einfach einen Autowert für die Tabelle P als Primärschlüssel.
Das ist einfach ein Zahl die automatisch hochzählt. Komplizierter muss es doch nicht sein.
In die Tabelle E muss dann eine Zahl (LongInteger) als Fremdschlüssel.
Wenn Du die Probanden in einem Hauptformular darstellst und ein über die Schlüsselfelder verknüpftes Unterformular für die Ergebnisse nimmst, wird die Autowertzahl automatisch in die Tabelle E übernommen.

Mehr braucht es nicht.

Diese Verknüpfung (=1:n Beziehung) über Primärschlüssel und Fremdschlüssel ist in einer Datenbank der übliche Weg. Als PS nimmt man da meistens einen Autowert.
Gruß Klaus

Arndt

Hallo Klaus, vielen Dank für die Antwort. Ich habe noch zwei Fragen:

Ich habe in Tabelle E eine Variable "ID-P" angelegt, die die Variable "ID" aus P als Fremdschlüssel enthalten soll. An der Stelle komme ich nicht weiter. Was muss ich tun, um einen Fremdschlüssel zu definieren?

Arndt

MzKlMu

Hallo,
ein Fremdschlüssel ergibt sich automatisch wenn man über die Schlüsselfelder eine Beziehung anlegt.
Definiere in der Tabelle P eine Feld "PID" als Autowert und Primärschlüssel. In die Tabelle E kommt an ein Feld "PID_F" als Fremdschlüssel. Beide Tabelel nimmst Du ins Beziehungsfenster auf und stellst eine Beziehung her, mit referentieller Integrität.

PS:
ZitatIch habe in Tabelle E eine Variable "ID-P" angelegt,
das sind keine Variable, das sind schlicht und ergreifend Felder (bzw.Spalten) Variable sind was anderes.
Gruß Klaus

Arndt

Danke für Deine Antwort. Sehr hilfreich.

Noch Fragen: Ich habe in E derzeit noch einen eigenen Primärschlüssel "ID". Soll ich den löschen? E wird zu nichts anderes als in Zusammenhang mit P gebraucht.

Und noch eine andere Frage. Access ist sehr interessant. Ich möchte PID so generieren lassen, dass sie mit einer bestimmten festen Zeichenfolge beginnt, zum Beispiel "11-". Das soll einen Ort kodieren. Geht sowas oder findest Du es ratsamer, mit einem weiteren Feld zu arbeiten?


MzKlMu

Hallo,
nimm ein weiteres Feld. Datenbankgrundsatz: Nie mehr als ein Wert in einem Feld. Erstelle also ein weiteres Feld als Fremdschlüssel zu einer Tabelle mit den Orten.

Und lasse den PS in der E Tabelle, jede Tabelle sollte einen PS haben. Meist nimmt man dazu einen Autowert.
Gruß Klaus

Arndt

Zitat von: MzKlMu am Mai 06, 2016, 20:17:47
Hallo,
ein Fremdschlüssel ergibt sich automatisch wenn man über die Schlüsselfelder eine Beziehung anlegt.

Hallo, ich habe über die beiden Felder eine Beziehung angelegt, aber die beiden Felder synchronisieren sich nicht.

MzKlMu

Hallo,
Zitataber die beiden Felder synchronisieren sich nicht.
auf Tabellenebene geht das nicht. Das geht nur mit Formularen.
Hauptformular für die P-Daten und darin ein über die Schlüsselfelder verknüpftes Unterformular für die E-Daten. Dann (und nur dann) wird der Fremdschlüssel automatisch durchgereicht.

Zeige bitte mal ein Bild des Beziehungsfensters.
Gruß Klaus

Arndt

Ach so, okay.

Also ich lege ein Unterformular an, in der beide Schlüsselfelder vorkommen und miteinander verknüpft sind.

MzKlMu

Hallo,
wie bereits gesagt, werden Tabellen nicht automatisch syncronisiert. Das geht nur über Formulare.
ZitatAlso ich lege ein Unterformular an,
nein, habe ich auch so nicht geschrieben. Lege ein Hauptformular an für die Teilnehmer und darin ein Unterformular das über die ID und IDTeilnehmer verknüpft werden muss.
Nur dann wird das Feld IDTeilnehmer automatisch gefüllt.

Warum ist der Beziehungstyp geändert, der sollte im Beziehungsfenster immer Typ 1 sein.

Agefix bei den Streichholzwerten ist überflüssig und sex (als Geschlecht) gehört zum Teilnehmer.

Leider zeigst Du im Bild die Tabellen nicht vollständig. Was bedeuten diese Felder "Streichholzobs01, ....02 ...". Hier ist eine weitere Tabelle erforderlich. solche Aufzählungsfelder (...01, ...02 ...) darf es in einer DB nicht geben.
Gibt es noch mehr solcher Felder ?

Bitte erkläre die Zusammenhänge mal genauer.
Die Sache mit den Streichholzwerten, ist das real ?
Gruß Klaus

Arndt

Ich habe den Beziehungstyp auf 1 gesetzt.


Ich glaube es funktioniert jetzt einigermaßen Dank Deiner Hilfe. Ich muss noch weiter probieren erstmal.

Mit Agefix, Age uns Sex möchte ich spätere weitere Werte für die statistische Auswertung eine Rolle spielen. dann brauche ich nur noch die Ergebnistabelle zu exportieren.

Die Felder "Streichholzobs01, ....02 ..." sind fünf verschiedene Variablen, keine Hochzählungen. Der Kürze halber verwende ich 01-05 für Namen wie "Vollständigkeit der Arbeit" oder "Kreativität der Umsetzung". Es sind also Abkürzungen für Bezeichnungen. Warum darf es denn sowas nicht geben?

Wie real?

Hier sollen 5 Noten erhoben werden für eine Aufgabe, bei der der TN eine Serie von Streichholzschachteln kreieren soll. An der Art und Umsetzung kann man verschiedene Merkmale von Arbeitsverhalten erkennen: Vollständigkeit, Kreativität, handwerkliches Geschick usw.. erkennen.

Arndt

btw kann man diese in den Unterformularen erscheinenden linken Balken irgendwie ausblenden? So, dass man nicht sieht, dass es sich hierbei um ein Unterformular handelt, wenn es ganz genau passt?

siehe Anhang

MzKlMu

Hallo,
ZitatDie Felder "Streichholzobs01, ....02 ..." sind fünf verschiedene Variablen, keine Hochzählungen.
natürlich sind es Hochzählungen.

ZitatVollständigkeit, Kreativität, handwerkliches Geschick usw.. erkennen.
Du hast hier eine klassische n:m Beziehung.
Für die Arbeitsverhalten ist eine eigene Tabelle erforderlich. Dann wird noch eine weitere Tabelle benötigt das das Arbeitsverhalten dem TN zuordnet. In diese Tabelle kommt auch die Note (sind das Zahlenwerte ?).
Du hast dann keine Felder sondern Datensätze.
Hast Du 5 Arbeitsverhalten, so hast Du 5 Datensätze. Nur dann kannst Du auswerten. Bei Access gibt es z.B. keine einfache Möglichkeit über Spalten einen Durchschnittswert zu bilden, das geht (anders wie bei Excel) nur innerhalb einer Spalte.

Bitte zeige mal das Beziehungsbild mit den vollständigen Tabellen. Tabelle einfach so gr0ß ziehen, dass man alle Felder sieht.
Ich fürchte nämlich, da gibt es noch mehr Sachen die für eine Datenbank unbrauchbar sind.

ZitatMit Agefix, Age uns Sex möchte ich spätere weitere Werte für die statistische Auswertung eine Rolle spielen.
Die Felder sind in der Ergebnistabelle überflüssig. Es wird auch keine Tabelle exportiert, sondern eine Abfrage und da kannst Du alle Felder aus beiden Tabellen anzeigen.

Nachtrag:
Die Balken (Bildlaufleisten und Datensatzmarkierer) kannst Du in den Eigenschaften ausschalten.
Gruß Klaus

Arndt

>Für die Arbeitsverhalten ist eine eigene Tabelle erforderlich.

Ich möchte erstmal dabei verbleiben so wie es jetzt ist. Es it immerhin ein Projekt zum lernen und wenn ich es zu komplex mache blicke ich garnicht mehr durch.

Die Auswertung soll nicht innerhalb von Access sondern mit SPSS erfolgen. Die Felder (Spalten, Variablen, wie man es nennen mag) werden exportiert und dann verwertet, z.B. mit einem LST-Modell, das geht in Access höchstwahrscheinlich sowieso nicht.

>Die Balken (Bildlaufleisten und Datensatzmarkierer) kannst Du in den Eigenschaften ausschalten.

ok, danke

MzKlMu

Hallo,
ZitatEs it immerhin ein Projekt zum lernen
genau darum würde ich es richtig machen. So lernst Du alles falsch.
Die beiden Tabellen tblStreichholzschachtelwerte und tblStreichholzschachtelSkalenwerte sind völlig falsch aufgebaut. Die braucht man so nicht. Mit welcher Tabelle steht denn tblStreichholzschachtelSkalenwerte in Beziehung ? In einer Datenbank gibt es keine Tabelle zur Erfassung veränderlicher Daten ohne Beziehung.
Du eignest Dir Sachen an, die für eine Datenbank völlig unbrauchbar sind. So kannst Du nicht wirklich was lernen.

Wahrscheinlich würdest Du Dich wundern, was mit Access alles geht, wenn man es datenbankkonform umsetzt.
Gruß Klaus