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
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 (http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/index.htm)
In der Signatur (Fußnoten) des Users und Moderators DF6GL findest Du weitere nützliche Links.
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....
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.
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.
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
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
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.
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
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.
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
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
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.... ;)
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.
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!
Hallo,
erstmal vielen Dank für die ganzen Posts. Nachdem bei der Telekom eine Platine durchgebrannt war und ich einer von 64 Teilnehmern meines Ortes wurde, die kein Internet mehr hatten (und da sag nochmal einer, die TK behebt Probleme schnell >1Monat) und ich danach mit einer Lungenentzündung völlig brach lag, melde ich mich erst jetzt.
Für mein eigentliches Problem einfach runter zum ABER. Zunächst aber möchte ich auf meine Poster eingehen:
Zunächst zu Uli:
Der Tipp war Gold wert (auch wenn ich wegen fehlenden DSL den Tipp nicht mehr lesen konnte, habe ich zu genau diesem zwischen den Jahren gegriffen). Ich kann dieses Buch jeden Anfänger wärmstens empfehlen. Liest sich wirklich schnell und gut und ist dabei sehr verständlich (sage ich nur, weil es vielleicht auch andere Leser dieses Posts gibt).
Dann zu MzKlMu:
Ja. Das ist wirklich eine total elegante Lösung. Kurz, effizient und extrem kompakt. Aber für einen wie mich auf "Access-Level 1" ist eine Datenbank auf "Access-Level Ultimate-Unbelievable-Eternal-999" relativ überfordernd. Im momentanen Zustand geht dies noch, aber wenn die erst einmal voll ist, suche ich mir nur noch einen Wolf nach Zahlen, falls was ist.
Dieser modulare Ansatz (nenne ich jetzt mal so) ist sicherlich sehr effizient und total durchnormalisiert, aber ein Punkt der mir wichtig ist, wird nicht erfüllt: Dass die einzelnen AEDLs nicht getrennt sind: Bei diesem Ansatz kann bspw. bei Patient x das Attribut Sehvermögen gleich mehrfach eingetragen werden, während andere Attribute erst gar nicht erscheinen:
Das wäre vergleichbar einer Kundendatenbank, in der manche Kunden mehrere Straßen haben, aber keinen Wohnort, andere wiederum einen Ort, ober ohne Straße und andere Straße und Ort, aber keinen Namen...
Nichtsdestotrotz ist dies ein unglaublich tolles Datenbankdesign (HUT AB!), von dem ich trotz des o.g. Buches nochmal einiges gelernt habe.
Ich weiß gar nicht was ich sagen soll, weil Du Dir so viel Mühe und Aufwand gemacht hast...
Jedenfalls habe ich lange hin und her überlegt, deine Datenbank "nachprogrammiert" (damit ich als Anfänger das ganze so halbwegs verstehe) obschon ich in der internetlosen Zeit einen funktionierenden Okolyt erstellt habe (jenseits von allem was man Durchnormalisiert nennen würde), aber letztlich entschieden, dass dieser Ansatz Zukunftsmusik ist. Nach diesem Projekt werde ich mich vielleicht 1,2 und mehr Jahre nicht mehr mit Access beschäftigen, und danach eine Datenbank zu erweitern, die einen Anfänger ohnehin schon an seine Grenzen bringt, ...
Lange Rede kurzer Sinn: Ich habe mich mit dem Buch beschäftigt und nochmals neu angefangen.
Ich muss zugeben, dass ich ein total schlechtes Gewissen habe, weil Du MzKlMu dir so viel Mühe gegeben hast, aber ich muss da meinen Weg selber gehen. Und der beginnt bekanntlich am Anfang, nicht am Ende...
Mein Einstiegsfehler mit den 1:1 Beziehungen hatte ich ad Acta gelegt und alles über 1:n Beziehungen angelegt. Damit funktionierte mein Ansatz wirklich besser. Kurioserweise wollte ich auf Nummer sicher gehen und dafür sorgen, dass die Benutzer der Datenbank (die noch viel weniger Ahnung haben als ich und wirklich alles hinkriegen, was sie nicht sollen) keine doppelten Datensätze anlegen können (also dass ein Patient 3x verschiedene AEDL01 besitzt). Da habe ich den Eintrag "ohne Duplikate" gefunden.
Was soll ich sagen? Die Datenbank funktioniert weiterhin aber Access machte mir aus allen Beziehungen nun 1:1, wie ich anfangs vor hatte...
So bin ich relativ zufrieden. Einzig die Organisation von Ärzten und Angehörigen will ich noch umschreiben, weil mir da der Ansatz von MzKlMu ziemlich gut gefällt und mir das als der nächste Schritt meines Fortkommens erscheint.
ABER:
Dummerweise habe ich momentan alles über Nachschlagefelder eingerichtet. Eigentlich funktionieren diese sehr gut, aber es gibt ja genug Stellen im Internet (die ich nicht lesen konnte als ich dran saß), die einem genau davon abraten.
Also dachte ich mir, das ganze umzuschreiben. Einerseits, weil Nachschlagefelder offensichtlich Problembehaftet sind, andererseits, weil ich bei Abfragen als Kriterium einfacher angeben kann "=1" und somit alle Felder angezeigt werden, die Problemlos sind, bzw. mit <>1 alle Felder, die Problembehaftet sind.
Mit den Nachschlagefeldern habe ich eigentlich kein Problem: Die Inhalte der Felder tauchen als Text in meinem Bericht bzw. meiner Abfrage auf.
Wenn ich diese allerdings umstelle, erscheinen nun die Zahlen (was nicht verwunderlich ist). Wie komme ich nun aber von den Zahlen an die eigentlich Info?
Ich habe also eine Tabelle AEDL01, mit Sehvermögen, Sprachvermögen, Verständigung und Hörvermögen. Eine Tabelle tblSkala1, die die Werte in der Spalte Skala "ungestört", "mäßig", "schwer" und "Ausfall" besitzt.
Sehvermögen ist eine Zahl mit n:1 Beziehung zu SkalaID von tblSkala1.
Bei einer Abfrage funktioniert dies gut, so lange nur ein -vermögen der Tabelle AEDL01 in Beziehung steht. Wenn die Beziehungen Sehvermögen bis Hörvermögen alle mit der Tabelle tblSkala1 gesetzt sind, funktioniert das ganze nicht mehr, außer die Werte sind gleich (bspw. alle mäßig oder alle ungestört).
Die Beispiele finden sich in Abfrage 3 und 4.
Oder muss ich hier über n:m arbeiten, wie DF6Gl (Amateurfunker?) geschrieben hat?
Vielen Dank für eure Antworten und entschuldigt für die lange Postpause
Dirk
PS: Sorry mit der Datenbank, gesplittete zips nimmt das Forum leider nicht (beide .zip entfernen und dann dekomprimieren)
Hallo,
ZitatBei diesem Ansatz kann bspw. bei Patient x das Attribut Sehvermögen gleich mehrfach eingetragen werden,
dazu legt man einen zusammengesetzten eindeutigen Index an, dann ist das nicht mehr möglich.
Zitatwährend andere Attribute erst gar nicht erscheinen:
das ist eine Frage der Verknüpfungen in den Abfragen. Statt INNER JOIN ist da RIGHT JOIN oder LEFT JOIN zu verwenden.
ZitatWenn ich diese allerdings umstelle, erscheinen nun die Zahlen (was nicht verwunderlich ist). Wie komme ich nun aber von den Zahlen an die eigentlich Info?
auch das ist sehr einfach, nämlich über eine Abfrage mit den relevanten Tabellen (und der Verknüpfung). Du hast dann alle Felder aus allen Tabellen zur Anzeige zur Verfügung und somit auch die eigentliche Info. Völlig problemlos.
Hallo,
neben meinen (DF6GL --> Funkamateur) vorher beschriebenen Maßnahmen führe folgende dringend aus:
1) Keine Sonder- und Leerzeichen in Namen verwenden !!!
2) Feld- (hier "ID") und Tabellennamen eindeutig und (auch alle anderen) sinnvoll benamsen ("ID"--> PatID, in Tabelle "Patienten", und diese z. B. in "tblPatienten" umbenennen)
3)Das "Pflegeziel-Tabellengrab" ( und "Skala"-Tabellen) wegwerfen. Dafür eine(!) Tabelle mit folgendem Aufbau:
tblPflegeziele
PZID (PK, Autowert)
PZ_Attribut (Text)
PZ_Wert (Text, evtl Memo)
PZID PZ_Attribut PZ_Wert
1 Sehvermögen außerordentlich
2 Sehvermögen miserabel
3 SehvermögenPZ 80% Sehschärfe
4 SehvermögenPZ 50% Sehschärfe
5 SehvermögenPZ 10% Sehschärfe
6 SehvermögenPZ 10% Sehschärfe
7 VerständigungPZ Worterkennung
.
.
.
4) 1:1-Beziehungen treten auf, wenn Beziehungen über die Primärschlüsselfelder und nicht über PK zu FK hergestellt werden.
5) An die "eigentlichen Infos" kommst Du, indem eine verknüpfende Abfrage über die beteiligten Tabellen erstellt und ausgeführt wird. Dabei ist aber eine Abfrageergebnis-Ansicht NICHT für den normalem DB-Betrieb und den Anwender gedacht. (Und nochmal: Nachschlagefelder haben in Tabellen nichts zu suchen).
Hallo,
ja, Sonderzeichen und Benennung ist richtig. Wie gesagt: Erstes Projekt.
Warum habe ich das Pflegeziel-Tabellengrab? Nun erstens gibt es zu jedem Attribut ganz verschiedene Pflegeziele: Das Pflegeziel "Trichter ins Ohr stecken" passt nur zum Hörvermögen aber nicht zum Sehvermögen. Darum habe ich eine Tabelle für jedes Pflegeziel angelegt. Momentan sind die noch leer, aber die Anwender können mittels Kombinationsfeld das richtige Feld auswählen und sollte es nicht vorhanden sein, einen neuen Datensatz in der jeweiligen Tabelle einfügen (nehmt einen Patienten, öffnet AEDL und jedes Kombifeld Pflegeziel hat den Eintrag " " (falls das Attribut Problemlos ist) und "Neuen Eintrag". Mit neuen Eintrag kann man dann ein neues Pflegeziel eingeben und dann auswählen. Das heißt mit der Zeit werden die einzelnen Pflegezieltabellen mit 10 bis 30 Einträgen wachsen.)
Nun zu deiner Tabelle:
Wie muss hierbei die Beziehung zu den anderen Tabellen aussehen?
Diese eine Tabelle benötigt doch auch dann mehrere Beziehungen.
In der Abfrage 3 funktioniert das. In der Abfrage 4, bei der meine Skalatabelle in Beziehung zu zwei Feldern steht nicht mehr. Warum?
Und zu deinem Punkt 5: Ja, ich habs verstanden: ich mache das ganze ja, um von den Abfragefeldern wegzukommen, wenns denn funktionieren würde...
Grüße
Dirk
PS: Ich würde dich ja anfunken, aber ich weiß schon gar nicht mehr wo meine Handquetsche ist und über 2m ohne große Antenne mit 5w an den Bodensee... ;o)
Hallo,
"Pflegeziel-Tabellengrab": Ich weiß schon, was damit gemacht werden soll. Genau das ist eben mit diesen "Grab" eher Unsinn.
"tblPlegeziele": Dafür braucht es im Grunde gar keine Beziehungen (im Beziehungsfenster). Die Tabelle dient lediglich als Nachschlage-Tabelle.
Die Anzeige und Auswahl der einzelnen "PZ_Werte" geschieht über Kombifelder mit passendem SQL-Select-String.
(Select PZ_ID,PZ_Wert from tblPflegeziele where PZ_Attribut ="Sehvermögen" order by PZ_Wert für das Feld "Sehvermögen" in der Tabelle. Für die anderen Felder entsprechend angepasst)
"wenns denn funktionieren würde..." dann mußt Du halt beschreiben, was Du machst und was dabei nicht geht....