Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Arndt am April 14, 2016, 19:46:21

Titel: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am April 14, 2016, 19:46:21
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: MzKlMu am April 14, 2016, 20:09:08
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Mai 06, 2016, 20:00:16
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
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag 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.
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Mai 06, 2016, 20:24:37
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?

Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: MzKlMu am Mai 06, 2016, 21:49:20
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 19, 2016, 18:52:53
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: MzKlMu am Juni 19, 2016, 19:16:48
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 20, 2016, 17:57:19
Ach so, okay.

Also ich lege ein Unterformular an, in der beide Schlüsselfelder vorkommen und miteinander verknüpft sind.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: MzKlMu am Juni 20, 2016, 19:02:46
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 ?
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 20, 2016, 19:25:31
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 20, 2016, 19:34:43
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
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: MzKlMu am Juni 20, 2016, 19:39:08
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 20, 2016, 20:00:28
>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
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: MzKlMu am Juni 20, 2016, 20:13:42
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.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 20, 2016, 20:35:29
>Mit welcher Tabelle steht denn tblStreichholzschachtelSkalenwerte in Beziehung ? In einer Datenbank gibt es keine Tabelle zur Erfassung veränderlicher Daten ohne Beziehung. <

tblSteichholzschachtelskalenwerte erfassen keine veränderlichen Werte sondern ist unveränderlich. Sie enthält die Skalenwerte der 5 Skalen, die bei den 5 Obs gebraucht werden nebst ihren Beschreibungen. Es sind nicht immer Schulnoten von 1-6, deren Bedeutung klar ist, sondern auch andere Skalen, z.B. die ICF-Skala oder 15-stufige, die von 1+ bis 5- reicht. Die Abbildung zeigt Dir eine ausgeklappte Erklärung für die ICF-Skala aus dieser Tabelle.

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

Du scheinst den Aufwand zu unterschätzen, den das Erlernen von dem Zeug verbraucht für jemanden, der das noch nie konnte. Es scheint mir hier wie beim Negerkusswettessen am Kindergeburtstag: Wer zu viel auf einmal frisst kotzt.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Beaker s.a. am Juni 20, 2016, 21:52:43
Hallo Arndt,
ZitatDu scheinst den Aufwand zu unterschätzen, den das Erlernen von dem Zeug verbraucht für jemanden, der das noch nie konnte. Es scheint mir hier wie beim Negerkusswettessen am Kindergeburtstag: Wer zu viel auf einmal frisst kotzt.
Nein, wer zu schnell frisst kotzt.
Du unterschätzt den Aufwand, der entsteht, wenn Du eine Anwendung
mit unzureichendem Datenmodell entwickelst. Der Aufwand über-
steigt den, den du mit dessen Erstellung hast um ein vielfaches.
Und wenn du bereit bist ein wenig mitzudenken wird dir hier auch gerne
geholfen, und du lernst das ganz schnell.

gruss ekkehard
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: MzKlMu am Juni 20, 2016, 23:14:13
Hallo,
zum Aufbau einer Datenbank muss man sich mit der Theorie dazu beschäftigen. Besonders dann, wenn man es nach eigener Aussage lernen will.
Die gezeigten Tabellen widersprechen alle den Normalisierungsregeln und sind für eine Datenbank untauglich. Sobald es Tabellen gibt, die keine Beziehung haben, ist das Datenmodell in Frage zu stellen.
Zur Theorie hier ein Link:
https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/index.htm
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 21, 2016, 16:52:43
Was widerspricht den Normalisierungsregeln? Es gibt in dieser Datenbank nur diese beiden Tabellen und die haben eine Beziehung. Die dritte Tabelle enthält nicht veränderliche Daten und dient der Ablage von Beschreibungen. Der Rest ist versuchsweise abgelegtes Zeug. Was soll da jetzt noch normalisiert werden? Es ist überhaupt nichts mehr da, was noch verändert werden kann.
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: MzKlMu am Juni 21, 2016, 17:19:52
Hallo,
ZitatEs ist überhaupt nichts mehr da, was noch verändert werden kann.
da ist noch jede Menge da was normalisert werden kann.
Alle Aufzählungsfelder widersprechen bereits der 1.Normalform.


Lade mal die Tabellen hoch, mit einigen anonymen Datensätzen aber vollständigen Tabellen für die Streichholzwerte und die Streichholzskalenwerte.

Ich benötige aber zwingend das MDB Format (Access2003).
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 21, 2016, 17:36:21
Meine Version ist nicht abwärtskompatibel, ich kann es nicht unter 2003 speichern. :-(
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: DF6GL am Juni 21, 2016, 20:53:51
Hallo,

es gibt kein Problem bei der Konvertierung..

Habe jedoch nur die Tabellen (BE) gezippt
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Beaker s.a. am Juni 22, 2016, 00:15:43
Hallo Arndt,
Hier mal eine gute Einführung in die Normalisierungsregeln.
Wenn du bis zur 3.Normalform kommst sollte es eigentlich erstmal
reichen, denke ich.
gruss ekkehard
Titel: Re: Verbinden von zwei Tabellen über eine Variable mit sinnfreien Kennziffern
Beitrag von: Arndt am Juni 22, 2016, 17:41:06
Hallo, ich habe schon drin gelesen. Danke für den pdf, ich denke der beschreibt es besser als die anderen Links.