Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Riesige(?) Datenbank splitten in 1:1 Beziehungen oder nicht?

Begonnen von dille999, November 24, 2013, 13:32:06

⏪ vorheriges - nächstes ⏩

dille999

Hallo,
vorneweg wollte ich sagen, dass ich Accessneuling bin und darum gar keine Ahnung habe, weshalb manche Erläuterungen von Dingen, die bei mir nicht funktionieren, machen von Euch die Nackenhaare verknoten könnten ("wie kommt der denn auf die Idee???").
Das Problem: In dem sehr kleinen Pflegebetrieb von meiner Frau werden die Pflegeplanungen mit Hand geschrieben. Jede noch so kleine Änderung bedarf einer neuen Kompletterstellung. Darum hat mich mein Weib gebeten, dafür eine Computerlösung zu finden.
Nach dem Motto "keine halben Sachen" habe ich nach Tim Taylor dem Heimwerkerking gleich gedacht, dass man als Basis dafür gleich mit einer Datenbank arbeitet. Darum habe ich mich etwas in Access und Base eingelesen und mich für ersteres entschieden...

Im Netz findet man nun viele Hinweise, dass 1:1 Relationen völliger Humbug seien. Weil ich nun eine feste Basis suche, auf der dann spätere Erweiterungen möglich sind, wollte ich Fehler in einem so frühen Stadium vermeiden.
Andererseits erscheinen mir diese Relationen fast nötig, damit man so halbwegs den Überblick halten kann und bin darum etwas überfragt, welcher Weg letztlich sinnvoller ist:

Jeder Kunde hat bereits einige Grundfelder (Anrede, Vor Nachname, Adresse, Telefonnummern, Hausarzt, Angehörige, etc). Hinzu kommen nun Pflegeinformationen bestehend aus 13 sog. AEDLs. Das sind verkürzt gesagt pflegerelevante Kategorien, die ihrerseits mehrere personenbezogene Attribute beinhalten.
Beispiel AEDL1:
Sehvermögen, Sprachvermögen, Verständigung, Hörvermögen
jeweils eingeteilt in die Werte:
ungestört, mäßig, schwer, Ausfall
Hinzu kommen Hilfsmittel: Brille, Hörgerät rechts, links
Dazu ein Memo Feld: Fähigkeiten, Vorlieben, Rituale
Abschließend eine Hilfseinschätzung: Allein, Beaufsichtigt, Unterstützend, Teilübernahme, Vollübernahme
und der Vermerk ob dies in die Pflegeplanung aufgenommen wurde (ja/nein Feld).

Wie gesagt gibt es 13! davon und eine Tabelle mit all diesen Werten würde den kompletten Rahmen meines Monitors (20") sprengen ;o)

Wäre da nicht eine Aufteilung in 13 AEDL Tabellen in einer 1:1 Beziehung sinnvoller?

Und wie löse ich dies bei Formularen?
In einem kleinen Versuch (nur Namen und eine AEDL Tabelle) hat folgendes funktioniert:
Im Formularassistenten aus Tabelle Kunden nur Name und Nachname ausgewählt (damit man weiß um wen es geht, Adressen, Hausarzt etc braucht man da nicht), dann Tabelle gewechselt auf AEDL1 und dort die Felder Sehvermögen, Sprachvermögen, etc. ausgewählt. Beide Tabellen sind in einer 1:1 Relation.
Eingabe funktionierte hier, wie auch das ändern (Werte wurden in beiden Tabellen übernommen).
Der nächste Schritt wäre dann weg von der Handeingabe bei den AEDL-Werten, hin zu einer nächsten Tabelle 1:n, bei der die Einschätzungen der Kundenfähigkeiten hinterlegt sind:
Also von
Kunden 1:1 AEDL1 n:1 AEDL1_Skala
AEDL1_Skala hätte im o.g. Beispiel die Wertetabelle
1 ungestört
2 mäßig
3 schwer
4 Ausfall
5 Hilfe

Ist dieser Weg gangbar und sinnvoll oder ergeben sich damit für zukünftige Erweiterungen oder Möglichkeiten Probleme, die ich als Newbie noch gar nicht abschätzen kann?
Wie gesagt: Erster Versuch mit Access ist gleich ein (für mich) Mammutprojekt und ich habe keine Lust in 2 Wochen dazusitzen und zu sagen: Hätte ich das doch mal anders gemacht und Leute in einem Forum gefragt, die sich damit auskennen...

Danke für die Antwort schon mal im Voraus

Grüße

Dirk

MzKlMu

#1
Hallo,
ZitatIst dieser Weg gangbar und sinnvoll oder ergeben sich damit für zukünftige Erweiterungen
nein, dieser Weg ist nicht gangbar, besonders im Hinblick auf Erweiterungen. Das gibt nach meiner Auffassung auch keine einfache Datenbank. Hier wird auch ein erfahrener Access Entwickler zu knabbern haben. Hier muss viel Zeit in die Planung investiert werden und 1:1 Beziehungen werden hier wohl keine erforderlich sein, nicht eine einzige. Und Memofelder vergisst Du am besten auch gleich wieder, sind ungeeignet und auch gar nicht erforderlich. Du solltest Dich auch erst mal ausführlich mit den Grundlagen zur Erstellung relationaler Datenbanken beschäftigen.
Dazu findest Du weiter unten einen Link.

Ganz grob sind folgende Tabellen erforderlich

- Tabelle für Kunden (die reinen Kundendaten (Stammdaten) sonst nichts
- Tabelle für AEDL (13 Datensätze (DS), keine Felder, mit eigenem Primärschlüssel (PS))
- Tabelle für Einteilung (Sehvermögen, Sprachvermögen, Verständigung, Hörvermögen , 4 DS keine 4 Felder ,mit PS
- Tabelle für Werte (ungestört, mäßig, schwer, Ausfall als DS, mit PS)
- Tabelle für Fähigkeiten, Vorlieben und Rituale (als Auswahltabelle, je ein DS mit PS)
- Tabelle für Hilfsmittel (als Auswahltabelle, je ein DS mit PS)
- Tabelle für Hilfseinschätzung (als Auswahltabelle, je ein DS mit PS)

- Tabelle für die Pflegeplanung

In die letzte Tabelle (Pflegeplanung) kommen die Fremdschlüssel (FS) der für die Planung notwendigen Informationen.
Das gibt ausschließlich 1:n Beziehungen.

Weiterhin sind noch Zuordnungstabellen erforderlich für:

Fähigkeiten etc.
Hilfsmittel
Hilfseinschätzung

Das sind dann n:m Beziehungen

Das ist mal einiges in groben Zügen. Details sind erst möglich wenn man genau weis wie z.B. diese 13 AEDL aussehen usw.  

Zur Datenmodellierung/Datenbankstruktur  findest Du hier weitere Infos:
Relationale Datenbanken, Eine Einführung

In der Signatur (Fußnoten) des Users und Moderators DF6GL findest Du weitere nützliche Links.

Gruß Klaus

dille999

#2
Hallo,

vielen Dank für die schnelle Antwort, aber da komme ich schon nicht mehr mit.
Jeder Patient hat eine Adresse (Anrede, Vorname, Name, Straße, Nr., PLZ, Ort, Telefonnummer, Mobilfunknummer).
Wenn ich diese Tabelle auf mehrere Tabellen aufteile, ergibt sich für mich eine 1:n Beziehung für die Anrede (Wertetabelle mit den Datensätzen 1,Herr;2,Frau). Die anderen Tabellen Namen (ID, Vorname, Nachname), Adresse (ID, Straße, Nummer, PLZ, Ort) und Nummern (ID, Telefonnummer, Mobilfunknummer) wären doch reine 1:1 Beziehungen. Also jede Zeile aus Namen hat genau einen Datensatz aus Tabelle Adresse und Nummern, d.h. Jeden Patienten gibt es nur einmal und er hat auch nur eine einzige Adresse und er hat auch nur eine einzige Nummer. Also habe ich in meinen ersten Gehversuchen alle Primärschlüssel verbunden (hier machte mir Access eine 1:1 Relation, bei Umwegen über ein Feld bspw. Adresse_ID in der Tabelle Namen, das auf den Primärschlüssel der Tabelle Adresse verwies, wurde stets eine 1:N Relation gesetzt).
Ebenso dachte ich auch an die AEDLs, die im Prinzip einer Adresse gleichkommen: Jeder Patient hat genau alle 13 AEDLs (ob diese ausgefüllt sind oder nicht ist dabei egal, er hat diese wie auch eine Adresse), und jedes einzelne AEDL hat immer ganz genau die gleichen Kompetenzen. D.h. jeder Patient hat genau eine Straße mit nur einer Nummer in nur einem Ort mit nur einer PLZ und weiterhin genau 13 AEDLs mit genau den gleichen Kompetenzen in der gleichen Reihenfolge.
Lediglich die Werte der einzelnen Kompetenzen variieren (bspw. kann die Kompetenz Sehvermögen den Wert ungestört oder mäßig oder schwer oder Ausfall besitzen). Weshalb ich bei diesen wieder Felder aus einer Wertetabelle ziehen würde mit einer 1:N Verbindung (in der Wertetabelle kommen die Werte nur einmal vor, in der AEDL1 Tabelle unter Sehvermögen aber sehr oft).

Also die Tabellen wären
Namen (ID, Anrede, Vorname, Nachname)
Anrede (ID, Anrede) gefüllt mit 1,Herr;2,Frau;
Adresse (ID, Straße, Nr., PLZ, Ort)
Nummern (ID, Festnetz, Handy, Fax)
AEDL (ID, AEDL1, AEDL2, AEDL3) ->eigentlich 13 AEDLs, aber machen wir hier erst mal nur 3, damit ich mitkomme
AEDL01 (ID, Sehvermögen, Sprachverständigung, Verständigung, Hörvermögen)
AEDL02 und AEDL3 lassen wir auch erst einmal weg.
AEDL01_Skala (ID, AEDL01_Skala) gefüllt mit 1,ungestört;2,mäßig;3,schwer;4,Ausfall;

Die Tabellen Namen, Adresse und Nummern und AEDL stehen in einer 1:1 Verbindung (jeder Name genau nur eine Adresse und genau nur eine Nummer und genau nur eine AEDL). Und der Wert AEDL1 der Tabelle AEDL hat genau nur einen Eintrag der Tabelle AEDL01.
Bis dato sind das für mich alles 1:1 Beziehungen, oder?
Aber die Werte in der Tabelle AEDL01, die sind wechselhaft: Zwar sind es immer die Werte aus AEDL01_Skala (ungestört,...,Ausfall), aber diese können mehrfach vorkommen oder auch gar nicht. Dies wäre also eine n:1 Beziehung.

Soviel zu meinen Denkmustern, ich hoffe, dass Du nachvollziehen kannst, was ich mir da denke und wo meine Denkfehler liegen.


Zu Deinem Weg:
Wenn ich Dich richtig verstehe, sind wir bei den Tabellen Fähigkeiten, Hilfsmittel, Hilfseinschätzung einer Meinung (das sind Wertetabellen).
Deine Tabelle für Werte wäre für mich auch eine Wertetabelle in der sich nichts ändert und deren Werte einfach in der Tabelle Einteilung landen. Aber halt, hier setzt es aus, denn hier sind bei dir die (nennen wir sie mal) Kompetenzen keine Felder, sondern Datensätze...
Warum? Nur um nicht missverstanden zu werden: Die einzelnen AEDLs sind völlig festgelegte und definierte Bereiche, ebenso wie deren Inhalte (da ändert sich die nächsten 2 Jahrhunderte nichts...). Sie sind also wie die Felder Straße, Nr., PLZ und Ort, die die Anschrift auf jeden Brief ausmachen.
Aber wenn ich das trotzdem mal zu Ende denke (und als Newbie ist mein Kopf am rauchen ohne Ende), versuchst Du die Tabellen Kunden, AEDL, Einteilung, Werte (das andere lassen wir erst nochmal weg) in einer zusätzlichen Tabelle (bei dir die Pflegeplanung) zu bündeln:
Dabei frage ich mich nach den Vorteilen. Momentan würde ich aus meiner begrenzten Sicht nur eine Tabelle vor mir sehen, die rein nur aus Zahlen besteht, die man im Falle eines Falles (etwas funktioniert nicht) einzeln "aufschlüsseln" muss.

GRR... nach einigen Zeilen kann ich hier echt nicht mehr schreiben! Die Eingabemaske hier wird immer langsamer. Ich speicher kurz und editier nachher weiter....

DF6GL

#3
Hallo,



mach doch mal ein Beispiel in Form einiger (Datensatz-)Zeilen mit eingetragen konkreten Werten..


<add>
Oder lad mal Deine DB, falls Du schon eine hast, komprimiert/repariert und gezippt hier hoch
</add>


"Adresse" und "AEDL" ist nicht das Gleiche...  Für einen Patienten gibt es nur EINE Adresse (die als solche  aus mehreren Tabellen-Feldern, z. B.  Strasse, PLZ, Ort , usw. bestehen kann) und es gibt auch nur EINE "AEDL" , deren jeweilige Ausprägungen für den bestimmten Patienten in einer "Zuordnungstabelle" mit 1:n-Beziehung zu hinterlegen sind ("tblPatientenAEDL").   Dass es genau  13 verschiedene AEDL-Ausprägungen gibt, ist (zunächst) unerheblich.  Evtl. sind weitere 1:n-Zuordnungstabellen erforderlich, was ist jetzt ad hoc nicht ganz durchschauen kann.

dille999

#4
Hallo,

also ich weiß nicht, ob ich so quer denke oder ob ich nur falsch verstanden wurde:
Die Tabellen sind bis dato:
Kunden (ID, Anrede, Vorname, Nachname, Adresse, Hausarzt, Angehörige, AEDL) gefüllt mit noch nichts
Anrede (ID, Anrede) gefüllt mit 1,Herr;2Frau;
Adressen (ID, Straße, Straßennummer, PLZ, Ort, Telefonnummer, Handy, Fax, EMail) gefüllt mit nichts
AEDL (ID, AEDL01, AEDL02) gefüllt mir nichts
AEDL01 (ID, Sehvermögen, Sprachvermögen, Verständigung, Hörvermögen, Hilfmittel, FVR) gefüllt mit nichts
AEDL01_Skala (ID, Werte) gefüllt mit 1,ungestört; 2,mäßig; 3,schwer; 4,Ausfall;

(Die Tabellen Hausärzte und Angehörige lassen wir mal weg).

Eine Datensatzzusammenstellung sollte so Aussehen:
Zu einem Namen (also einer ID) aus der Tabelle Kunden gibt es genau eine ID aus Tabelle Adresse (mit Straße,...,Ort). Und dazu passt genau eine ID aus Nummern (mit Telefonnummer,...,eMail). Und dazu passt genau eine ID mit AEDL. In den Spalten der Tabelle AEDL (AEDL01, AEDL02,..., AEDL13) finden sich die IDs der einzelnen AEDL-Tabellen: Also in der Tabelle AEDL (bis jetzt noch leer) stände in der Zeile mit der ID=1 die ID der passenden Zeile der Tabelle AEDL01. Und in der Tabelle AEDL01 stehen in den Spalten die Werte aus der Tabelle AEDL01_Skala:

D.h.
Ein Datensatz aus allen Tabellen könnte sein:
Aus Kunden der Wert Anrede, Vorname und Nachname (alles unter der ID=1) der Wert Anrede wird aus der Tabelle Anrede generiert (1:n)
Aus Adressen der Wert Straße, Nr. (alles unter der ID=1)
Aus AEDL wird nachgeschaut, welche AEDL-Datensätze genommen werden (ID=1)
Aus AEDL01 werden die Werte unter der ID=1 ermittelt
Die Werte in der Tabelle AEDL01 bestehen immer nur aus den Möglichkeiten der Werte aus der Tabelle AEDL01_Skala

Als Beispiel: Wert, Wert, ... (Tabelle; Feldspalte; Datensatz-ID);
Name, Nachname; Straße, Nr., PLZ, Ort; Telefonnummer; Sehvermögen, Sprachvermögen, Verständigung, Hörvermögen;
Max, Mustermann (Kunden; Vorname, Nachname; ID=1); Datenbankenstrasse, 5, 00000, Ahnung (Adressen; Straße, Nr., PLZ, Ort; ID=1); 01805999666 (Nummern; Telefonnummer; ID=1); ungestört, ungestört, mäßig, schwer (AEDL01;Sehvermögen, Sprachvermögen, Verständigung, Hörvermögen; ID=1).

Also alle Werte können (und vielleicht auch sinnigerweise sollen?) die gleiche ID haben, weil es sich im einen Menschen an einer Adresse mit einer Einschätzung handelt. Lediglich die Werte dieser Einschätzung und sein Geschlecht werden bis dato aus einer Wertetabelle mit 1:n Beziehung gezogen, da bei den Kunden unter Anrede ja immer nur Herr und Frau vorkommen kann. Ebenso die Werte für Sehvermögen, Sprachvermögen, etc.: Hier sind zwar die "Kompetenzen" immer gleich, deren Bewertungen aber u.U. unterschiedlich. Die Einzelkompetenzen werden immer nach der Skala ungestört, mäßig, schwer, Ausfall bewertet. Daher auch hier eine 1:n Beziheung und eine Wertetabelle.

Tut mir leid, ich glaube ich bin als Newbie etwas kompliziert, vor allen Dingen kann ich teilweise schwer ausdrücken, was ich meine. Hoffe ich werde trotzdem verstanden.
Grüße

Dirk

PS: Ich habe gerade völlig den Durchblick verloren :( Mache jetzt erst mal eine lange Pause und schaue nachher weiter.

DF6GL

Hallo,


in erster Annäherung könnte das mal so aussehen:


Kunden (KUID, KU_AnrID, KU_Vorname, KU_Nachname, KU_Straße, KU_Straßennummer, KU_PLZ, KU_Ort, KU_Telefonnummer, KU_Handy, KU_Fax, KU_EMail, KU_Hausarzt, KU_Angehörige, KU_PVID)

Anrede (AnrID, Anr_Anrede) gefüllt mit Herr, Frau

Adressen (ID, Straße, Straßennummer, PLZ, Ort, Telefonnummer, Handy, Fax, EMail) gefüllt mit nichts

PatientenVermögen (PVID,PV_VMID,PV_SKID)

Vermögen (VMID, VM_Bezeichnung) gefüllt mit Sehen, Sprache, Mimik, Gehör

A1_Hilfmittel, A1_FVR ?? Was bedeuten diese "Werte" ?


Skala (SKID, SK_Bezeichnung) gefüllt mit ungestört, mäßig, schwer, Ausfall

dille999

#6
Hallo,

ich habe jetzt nochmal ganz neu Angefangen. Habe mal alles etwas umgestellt. Anbei auch ein Scan von so einem Bogen, wo mal die AEDLs 1 und 2 aufgeführt sind. Wie gesagt: Das trifft jeden Patienten. D.H. für jeden Patienten müssen alle 13 dieser AEDLs ausgefüllt und erreichbar sein.

Strenggenommen mache ich das gleiche wie Du, nur habe ich die KU_PVID KuAEDLID genannt.
Deine Tabelle Patientenvermögen habe ich AEDL genannt. Von Patientendaten steht KuAEDLID (bei Dir KU_PVID) bei n:1 mit AEDLID der Tabelle AEDL in Verbindung.
Hier wird die gesamte "13 AEDL-Tabelle" in 13 EinzelAEDL-Tabellen aufgesplittet. Und dann steht im Wertefeld AEDL01 der Tabelle AEDL die Nummer der passenden Daten aus AEDL01. Und in Tabelle AEDL01 stehen die Werte aus der Tabelle AEDL01_Skala01.

Sorry mir raucht nur noch der Kopf, ich hoffe man versteht was ich will.

Hilfsmittel sind in den neuen Tabellen direkt verwurstet (vgl. Scan). Bei AEDL1 Kommunikation sind es Brille oder Hörgerät, bei AEDL2 Bewegung sind es Rollator, Rollstuhl, Gehstock, Lifter jeweils direkt in der Tabelle und als Boolean (Ja/Nein) Feld.
FVR steht für Favoriten, Vorlieben, Rituale. Das sind sehr persönliche und individuelle Dinge (bspw. Patient will vor der Begrüßung einen Salut hören, dabei Strammstehen und ein strenges "Melde mich zum Dienst" von sich geben). Man merkt am Beispiel, dass hier eine Wertetabelle nicht in Frage kommt, da solche Vorlieben sich so gut wie nie doppeln. Und nebenbei: NEIN, das Beispiel ist meiner Frau nicht passiert, es ist wirklich nur ein fiktives Beispiel um die Individualität dieser Werte zu betonen.
Wollte ich als Memofeld machen, von dem mir in der ersten Antwort abgeraten wurde ...

Wenn Ihr die Datei öffnet, sind leider die sich oft wiederholenden Werttabellen AEDL01_Skala01, AEDL02_Skala01, AEDL02Skala02 bei jeder Relation kopiert wurden... Hat Access gemacht und ich weiß nicht wie man die Gruppieren kann... (also eine 1-Relation der Wertetabelle AEDL01_Skala01 endet in jeweils einer n-Relation zu den Werten Sehvermögen, Sprachvermögen, Verständigung und Hörvermögen).
ACHTUNG: Daten schon hochgeladen und Fehler entdeckt: In Tabelle AEDL01 muss das Feld "Kommunizieren können" natürlich "Sehvermögen" heißen (vgl. Scan der ersten beiden AEDLs).

Leute, meine Dummheit tut mir echt leid, aber ich verspreche euch, wenn ich erst einmal weiß, wies richtig geht und der Hase läuft, dass ich die andern AEDLs und sonstige Erweiterungen alleine geschissen kriege.
Andernfalls verspreche ich Euch, dass ich meine Adresse hier online stelle und jedem der mich besuchen kommt eine Packung (P_ID, Inhalt_ID) n:1 Inhalt (ID, Produkt, Menge_ID) mit Produkt Eier und n:1 Menge (ID, Menge) mit 10, ... auch Scheisse ihr wisst was ich meine: Jeder darf ne Packung Eier auf mich werfen...
Grüße

Dirk

MzKlMu

Hallo,
konvertiere die DB nach Access 2003, mit Access2010 kann ich nicht helfen, habe kein A2010 und kann daher auch das Beispiel nicht ansehen.

ZitatDabei frage ich mich nach den Vorteilen. Momentan würde ich aus meiner begrenzten Sicht nur eine Tabelle vor mir sehen, die rein nur aus Zahlen besteht, die man im Falle eines Falles (etwas funktioniert nicht) einzeln "aufschlüsseln" muss.
der Vorteil ist darin, dass es eine relationalen Datenbank ist.
Die Tabelle mit den Zahlen siehst Du gar nicht. Das wird alles mit Formularen und Abfragen automatisch aufgeschlüsselt, Du siehst immer nur die Texte die hinter den Zahlen stehen. Die Zahlen sind nebensächlich, die sieht der User gar nicht.

Du denkst noch nicht datenbankkonform, das dauert noch etwas. Du darfst hier auf keinen fall Exceldenkweise anlegen.
Gruß Klaus

dille999

Hallo Dritter ;o)

was mache ich aber, wenn ich die Aufschlüsselungen nicht funktionieren und ich selber mal die Schlüssel durchgehen muss. Nur so weit zu meinen schlimmsten Albträumen.

Jedenfalls nochmals die o.g. Datenbank in Access2003 Format (den Scan der ersten beiden AEDLs schicke ich mal nicht nochmal mit).

Es sind nur die Tabellen und Beziehungen eingetragen.

Die Formulare habe ich in einen der vielen Vorversuche bereits integriert, die klappten aber nur bei 1:1 Beziehungen. Bei 1:n Beziehungen wurden bei mir keine Datensätze integriert... Darum habe ich mich ja erst mit der o.g. Überschrift an Euch gewendet. Egal.
Ziel ist es ja auch bei diesem Ansatz (alles 1:n) Formulare zu haben, die Werte von mehreren Tabellen anzeigen und ändern können (bspw. der Tabelle Namen und AEDL01).

Aber wahrscheinlich hast du recht: Ich denke wahrscheinlich wirklich noch lange nicht in den richtigen Kategorien... Aber ganz vielen Dank, dass Ihr alle helft, dass ich es tue.

Grüße

Dirk

MzKlMu

Hallo,
die AEDL Tabellen sind ausnahmslos so alle falsch.

Die Ärzte und die Angehörigen gehören alle in eine Tabelle, mit einem Kennzeichen, ob Arzt, Angehöriger oder beides (könnte ja auch sein). Willst Du immer nur ein Angehöriger und ein Arzt erfassen? Beim Arzt lasse ich es mir gefallen, aber bei den Angehörigen, könnte da z.B. der Sohn und die Tochter sinnvoll sein?

Beantworte mal noch die Fragen zu Arzt und Angehörigen dann versuche ich es mal umstricken, dauert aber etwas.
Gruß Klaus

dille999

Hallo,

bei jedem Patienten die ganze Sippe zu speichern lohnt nicht. Hierbei geht es um alte pflegebedürftige Menschen. Unter Angehörigen in der Tabelle verstehe ich den direkt Verantwortlichen für den jeweiligen Patienten. Dies ist i.d.R. nur einer.
Ebenso ist es bei den Ärzten. Die Patienten gehen zwar zu vielen verschiedenen Ärzten, gemeint ist aber der letztliche Arzt, bei dem alles zusammenläuft und der Ansprechpartner ist, also der Hausarzt.

So hat jeder Patient nur einen verantwortlichen Angehörigen aus der Liste Angehörige und einen verantwortlichen Hausarzt aus der Tabelle Ärzteliste. In meinen Augen ist das eine 1:1 Beziehung (man könnte alles auch in eine Tabelle schreiben), aber Access macht mir daraus eine 1:n Beziehung (was ich aber auch wiederum verstehe, weil ja einige Patienten den gleichen Hausarzt haben könnten).

Was die AEDL betrifft ist hoffentlich klar was ich will:
13 Tabellen mit den Feldern aus AEDL1, AEDL2 (vgl. Scan) und eine Tabelle, die diese 13 Tabellen zusammenführt. Als Newbie dachte ich, das ist eine große Tabelle, die in 13 Stücke in einer 1:1 Beziehung unterteilt werden müsste (1 Patient, 1AEDLTabelle mit 13AEDLWertgruppen). Aber das Thema 1:1 wurde ja schon abgehakt. Darum dachte ich "einfach" wenn man wissen will, was Patient mit KuAEDLID=1 für eine "AEDL01 Sehvermögen" besitzt, schaut ein Formular einfach in der Tabelle unter der AEDLID=1 nach und findet dort den Datensatz 3,6,4,7,8,3,2,... .  Die 3 ist die ID auf den Datensatz der Tabelle AEDL01. Dort findet sich meinetwegen der Datensatz 1,1,1,1. Diese verweisen auf AEDL01_Skala01 bei der der Wert 1 mit ungestört angegeben ist. In AEDL01 steht also ungestört, ungestört, ungestört, ungestört.

Ich kann mir vorstellen, dass wenn jemand weiß wies funktioniert erst mal schlucken muss, wie Leute wie ich auf solche Muster kommen (die anscheinend immer noch falsch sind), aber ich hoffe, dass wir so langsam an dem Punkt sind, wo mir einer sagen kann: JAAAAA! Alles klar. Eigentlich richtig gedacht, aber nicht für Datenbanksysteme auf diesen Planeten ;o), vielmehr musst du das so und so sehen und die Werte werden so und so übergeben...

Darum bitte ich auch darum nicht zuviel Arbeit in mein Projekt zu stecken, was sicherlich nett ist. Einfacher wäre es jedoch, wenn ich den Mist mal kapieren würde, auch wenn das für euch jetzt etwas Nerven kostet (schickt mir eure Adresse, ich revanchiere mich zu Weihnachten mit Plätzchen).

Grüße Dirk

dille999

#11
Ok, nochmal ganz von vorne, damit man eher erkennen kann, wo mein Denkfehler liegt:

Vom Prinzip her ist es wie eine einzige Adresstabelle:
ID|Vorname|Nachname|Straße|Nr.|PLZ|Ort|TelefonNr|Handy|Fax|eMail|Hausarz|Angehöriger|Sehvermögen|Srachvermögen|Verständigung|Hörvermögen|Gehen|GvGehhilfen|GvRollstuhl|Stuhlsitzen|Lagern|Bettsuchen|Gangunsicherheit|Kontraktur|Dekubitus|Thrombose|Wunden

Hier ist schon mal das wichtigste aber nur der erste und zweite AEDL untergebracht (und die nicht einmal komplett). Mit 11 weiteren AEDLs wäre es eine RIESENTABELLE!
Also dachte ich das ganze splitten ("Eins-zu-eins-Beziehungen werden vor allem dann verwendet, wenn einzelne Tabellen kompakt und übersichtlich gehalten werden sollen" http://www.ecdl-blind-bw.de/index.php?title=Access:_Beziehungen#Beispiele_f.C3.BCr_Beziehungen).
Das heißt für mich: Alleine die Datenfelder (also Spalten) Straße, Nr, PLZ, Ort könnten in der Tabelle Adressen ausgegliedert werden. Macht keiner weil die 6 Felder von Name bis Ort doch absolut überschaubar sind. Manche werden jetzt sagen: Naja: die PLZ lohnt sich aber. Zugegeben, bei kleinen Unternehmen, die auf einen kleinen Raum agieren lohnt sich das. Unsere Patienten kommen nur aus 2 PLZ-Bereichen, weil der Nachbarort noch nicht eingegliedert wurde. Aber darum eine Extratabelle PLZ aussondern, müsste nicht sein. Aber ein anderer Punkt könnte hierbei für eine 1:n Relation sprechen:
Sowohl die Patienten, wie die Angehörigen und Ärzte haben jeweils eine Adresse. D.h. bei den jeweiligen Tabellen werden nur die IDs, Vornamen, Nachnamen und Adress_ID erfasst. Adress_ID steht dabei in 1:n zur Tabelle Adressen, wo man dann Straße,...,Ort finden kann (evtl. auch noch Telefonnr,...,eMail).
Aber das wäre ja nur eine Option, kein Muss.
Die einzelnen AEDLs sind ebenso in der RIESENTABELLE zu finden. Um diese also übersichtlicher zu gestalten sollen diese zusammengefasst werden: Die Werte der RIESENTABELLE "Sehvermögen" bis "Hörvermögen" sollen in einer Untertabelle "AEDL1" zusammengefasst werden.
Das gleiche mit "gehen" bis "Aufsuchen des Bettes" und "Gangunsicherheit" bis "Wunden" in der Tabelle "AEDL2".
Somit ergibt sich aus einer RIESENTABELLE s.o. die überschaubaren Tabellen:

Patienten: ID|Vorname|Nachname|Straße|Nr.|PLZ|Ort|TelefonNr|Handy|Fax|eMail|Hausarz|Angehöriger
AEDL1: ID|Sehvermögen|Srachvermögen|Verständigung|Hörvermögen
AEDL2: ID|Gehen|GvGehhilfen|GvRollstuhl|Stuhlsitzen|Lagern|Bettsuchen|Gangunsicherheit|Kontraktur|Dekubitus|Thrombose|Wunden

Schon etwas übersichtlicher als der Okolyt da oben oder? Und in meinen Augen sind das alles 1:1 Beziehungen. Natürlich kann es den Spezialfall geben, dass bei 40 Patienten, deren 13 AEDLs mit jeweils 5-10 Kompetenzen denen jeweils 2-4 Werte zugewiesen werden, auch mal 2 gleiche vorkommen könnten (bin kein Mathefreak, erscheint mir aber eher im Bereich der Lottozahlen und daüber zu liegen), aber deshalb würde ich jetzt nicht auf 1:n umbauen.
Anders ausgedrückt: Die im Scan verwendeten AEDLs müssen erfasst werden. Für jeden Patienten. Das alles ergibt eine einzige Tabelle (mit vernachlässigbaren Redundanzen), die gesplittet werden soll.

Wo liegt der Denkfehler? Ist schon nach 10. Mach jetzt Bubu, bin schon den ganzen Tag dran.

Ciao

Dirk

DF6GL

Hallo,

ich denke mal, dass Dein Fehler im "Horizontalem Denken" liegt...

Sobald eine horizontale Werte-Auflistung der gleichen inhaltlichen Bedeutung vorliegt  ("Sicht", "Gehör", "Geschmack", "Mimik", "Sprache"   als  Bezeichnungen für unterschiedliche "Vermögen"), dann gehören diese Werte in eine separate Tabelle (horizontal) abgelegt:

tblVermögen

V_ID  (PK, Autowert)
V_Bezeichnung  (Text)


und fertig.

Das sieht konkret so aus:
V_ID       V_Bezeichnung  
1            Sicht
2            Gehör
3            Geschmack
4            Mimik
5            Sprache


In einer Zuordnungs-Tabelle ("tblPatientenVermögen") wird dann nur (neben dem Fremdschlüsselfeld für die Patienten-ID) ein  (Fremdschlüssel-) Feld "Pat_V_ID"  eingebaut , das eben den ID-Wert des akt. "Vermögenswertes" aufnimmt.  (n:m-Beziehung, bzw. 1:n:m:1-Beziehung)

Genauso "tödlich" ist es, für Ausprägungen, bzw. Attribute ("Sicht", "Gehör", Geschmack",etc)  jeweils eigene Tabellen verwenden zu wollen.

Sind "NachschlageWerte (ungestört, ungestört, mäßig, schwer, etc)   nur auf bestimmte "Vermögen" anwendbar, so ist in der Nachschlagetabelle ("tblBewertungen")  eben auch noch der Primärschlüsselwert aus "tblVermögen" mitzuführen.


Solches Prinzip ist auf  die GESAMTE DB-Struktur anzuwenden, wenn man denn vernünftig mit der DB arbeiten soll/will.


Vergiss endlich die 1:1-Beziehungen und "Riesentabelle" ...  Und natürlich braucht ein Feld, dessen Wert keine weiteren Attribute besitzt, nicht in eine Tabelle ausgelagert werden  (---> Hausarzt, wenn hier nur der Name der Person vonnöten ist und es praktisch (päpstlicher als der Papst braucht es auch nicht sein ;-) ) keine Mehrfachvorkommen des selben Arztes gibt.

Hältst Du Dich nicht daran, stolperst Du von Schlagloch zu Schlagloch, bis letztendlich der Abhang das Leben der DB ausbläst....  ;)

MzKlMu

Hallo,
im Anhang mal ein Vorschlag.
Darin ist jetzt nur noch eine Tabelle für Ärzte und Angehörige. Tabellen sind hier überflüssig. Über eine n:m Zuordnung kannst Du differenzieren zwischen Hausarzt und Angehörigen. Als Nebeneffekt lassen sich auch mehrere Ärzte und Angehörige zuordnen. Die Pflegestufe habe ich ausgelagert. Du musst ja unter Umständen auch frühere Pflegestufen noch wissen.

Schaue Dir erst mal die Beziehungen an. Dann öffne das Formular "Zusammenfassung". Es sollte weitgehend selbsterklärend sein.

Ob sich da jetzt die anderen AEDLgruppen so integrieren lassen, kann ich mangels Kenntnis nicht beurteilen. Zeige daher bitte mal die Inhalte der AEDL 03-13.

DB anbei.

Bei Fragen bitte melden.
Gruß Klaus

UliBrenn

Hallo dille999!
Ich wollte Dir noch das Buch "Keine Angst vor Access empfehlen" (ISBN 978-3-86645-548-1) und darin das Kapitel zur Datenmodellierung, Kapitel 2.
Zudem ist auf der beigelegten CD ein Tool, welches Dir über simple Fragen ein Modell am Ende vorschlägt.
Mir hat es übrigens geholfen die Materie etwas besser zu verstehen, als ich mir die Tabellen als Menge vorgestellt habe
und dann überlegt habe, wie viele gleiche Elemente die jeweilige Menge in der anderen hat. Viele Grüße!