Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: harko38 am Oktober 10, 2012, 11:53:00

Titel: Benötige Lösungsansatz zum Darstellen einer Kreuzung (Straßenverkehr)
Beitrag von: harko38 am Oktober 10, 2012, 11:53:00
Hallo Leute

Ich habe ein Problem beim erstellen einer Datenbank.

Ich möchte eine DB erstellen bei der ich Verkehrsunfälle eintragen und anschließend auswerten kann.

Mein Problem besteht nun darin wie ich eine Kreuzung aus mehreren Straßen so darstellen kann dass mir die User diese DB auch richtig befüllen.

Das genaue Problem ergibt sich daraus dass eine Kreuzung aus mehreren Straßen bestehen kann.

Beispiel:  A-Straße, B-Straße, C-Straße, D-Straße, E-Straße

Ich habe eine Tabelle in der mir der User unter anderem 2 Felder mit Straßennamen (werden aus einer anderen Tabelle bezogen damit die schreibweise sicher richtig ist) befüllen muß sofern es sich um eine Kreuzung handelt. Andernfalls reicht ein Straßenfeld. Da es nun aber Kreuzungen gibt die aus mehreren Straßen bestehen, z.b. A-Straße mit C-Straße und E-Straße stehe ich vor dem Problem dass zu viele Kombinationen möglich sind. A-Straße mit C-Straße wäre ein Treffer, aber auch C-Straße mit E-Straße oder E-Straße mit A-Straße usw. Es handelt sich jeweils um die gleiche Kreuzung. Aus Erfahrung kann ich die User nicht dazu bringen dass diese mir die Straßen z.b. in alphabetischer Reihenfolge eingeben (was ja zum Ziel führen würde).

Seht ihr eine Möglichkeit wie ich so ein Problem am besten lösen könnte? VBA ist nicht meine Stärke....

lg Harry

Titel: Re: Benötige Lösungsansatz zum Darstellen einer Kreuzung (Straßenverkehr)
Beitrag von: MzKlMu am Oktober 10, 2012, 12:00:21
Hallo,
wie genau ist die Tabelle zur Erfassung der Straßen aufgebaut?
Eine Kreuzung kann ja aus 4 (und mehr) Straßen bestehen, die Straße gegenüber kann ja einen ganz anderen Namen haben.

An sich ist bereits der Ansatz mit den 2 Felder für die Straßen in der Unfalltabelle falsch.
Du benötigst eine Tabelle zur Zuordnung der beteiligten Straßen zum Unfall mit einem Fremdschlüssel zum Unfall. Jede Straße gibt einen Datensatz. 2 beteiligte Straßen>2 DS, 4 Straßen>4 DS. Auf diese Art und Weise kannst Du alle beteilgten Straßen dem Unfall zuordnen. Die Eingabereihenfolge ist bedeutungslos.
Titel: Re: Benötige Lösungsansatz zum Darstellen einer Kreuzung (Straßenverkehr)
Beitrag von: compinaut am Oktober 10, 2012, 12:21:37
Hallo,
ich glaube das löst das Problem noch nicht richtig.
Wenn ich es korrekt verstanden habe, definiert sich eine Kreuzung immer über zwei Straßen. Und diese Kreuzung soll auswertbar sein.
Der Ansatz über die zweite Tabelle wäre dann richtig. Der Kreuzung wurde ich darin eine eindeutige Nummer geben. Um die Straßenkombination immer in der gleichen Reihenfolge zu haben, kann man vor dem Speichern des Datensatzes eine Prüfung vorschalten.

Private Sub Form_BeforeUpdate(Cancel As Integer)
  If Straße1 > Straße2 Then
       MsgBox "Falsche Reihenfolge der Straßenbezeichnung"
   End If
End Sub

Nun kann die Kreuzung über die Nummer definiert und ausgewertet werden. Damit sind auch redudante Daten vermieden.

Sofern aber Kreuzungen sich durch ggf. mehrere Straßen definieren, dann müsste eine dritte Tabelle mit der Zuordnung von Straßen zu Kreuzungen angelegt werden und dann die Kreuzungsnummer wiederum dem Unfall zugeordnet werden. Dann wäre wiederum die Reihenfolge der Erfassung der Straßennamen uninteressant.


Gruß
compinaut
Titel: Re: Benötige Lösungsansatz zum Darstellen einer Kreuzung (Straßenverkehr)
Beitrag von: harko38 am Oktober 10, 2012, 14:03:25
Danke erstmal für die raschen Antworten

Sämtliche Straßen meiner Stadt sind bereits in einer Tabelle "tbl_straße" erfasst. Diese besteht aus einer "ID", einem Feld "Straßennummer" und einem Feld "Straßenname".

In meiner Haupttabelle gibt es ein Feld "Straße1" und ein Feld "Straße2". Dort werden die Straßen aus "tbl_straße" eingefügt. Wenn beide Felder befüllt sind dann weiß ich dass es sich um eine Kreuzung handeln muss. Nur entstehen auf diese Weise mehrere Möglichkeiten für ein und die selbe Kreuzung und meine Auswertung wäre nicht korrekt.

Ich habe auch bereits begonnen eine eigene Tabelle zu erstellen in der alle möglichen Kreuzungen angeführt sind (tbl_kreuzung). Diese besteht aus einer "ID" und aus 5 Feldern "Straße1" bis "Straße5". Jede Kreuzung erhält somit eine eindeutige "ID".

Mein Gedanke war, sobald ein User 2 Straßen einer Kreuzung eingibt müßte sich doch feststellen lassen um welche Kreuzung es sich handelt. Egal welche Reihenfolge er bei den Straßen eingibt. Und diese könnte ich dann unabhängig von der Eingabe des Users zur Auswertung verwenden.

Eine andere Lösung hätte ich auch in Erwägung gezogen, nämlich dass ich mit einer Abfrage auf die Tabelle tbl_kreuzung ein weiteres Feld erstellen lasse in dem alle Straßennamen aus den Feldern "Straße1" bis "STraße5" zusammengefasst werden. Gelingt mir aber nicht so ganz, weil ich in diesem Feld dann immer nur die "Straßennummern" anstelle der "Straßennamen" angezeigt bekomme.

Wenn das funktionieren würde dann könnte ich in meinem Formular zur Datenerfassung die bereits vorgefertigten Kreuzungen an Stelle der 2 Straßen einbauen und käme auf diese Art zu meiner Auswertung.

lg Harry
Titel: Re: Benötige Lösungsansatz zum Darstellen einer Kreuzung (Straßenverkehr)
Beitrag von: MzKlMu am Oktober 10, 2012, 14:15:50
Hallo,
Du kannst davon ausgehen, dass sogenannte Aufzählungsfelder "Straße1", "Straße2", "Straße3" usw. in einer Datenbank grundsätzlich falsch sind.
Wie bereits vorgeschlagen (compinaut ) wird für die Kreuzung eine eigene Tabelle benötigt in der die beteilgten Straßen als Datensätze nicht als Felder erfasst sind.
5 Straßen = 5 Datensätze, 2 Straßen 2 DS.. In dieser Tabelle gibt es einen Primärschlüssel der die Kreuzung eindeutig idendifiziert.
Diesen Primärschlüssel kannst Du in der Unfalltabelle als Fremdschlüssel verwenden.

Oder die einfache Lösung, mein Vorschlag:
Der Unfalltabelle einfach alle beteiligten Straßen in einer extra Tabelle zuordnen.

Aufzählungsfelder gibt es in keinem Fall.
Titel: Re: Benötige Lösungsansatz zum Darstellen einer Kreuzung (Straßenverkehr)
Beitrag von: harko38 am Oktober 10, 2012, 17:17:07
Ok. Ich denke mal ich hab das ganze dann irgendwie falsch angefangen.

Wenn das nicht zuviel verlangt ist Liste ich mal meine DB wie sie zur Zeit ist auf. Vielleicht könnt ihr mir dabei helfen wo und wie ich diese abändern muss damit es Sinn ergibt.


Meine Datenbank sieht zur Zeit so aus.
Es gibt folgende Tabellen:

Htbl_fahrtrichtung
   ID   
   FR      Hier steht ein Wert z.B. 1-3 der mir die Fahrtrichtung angibt
   HR      Und hier die Erklärung für den User welche Richtung das ist z.B. N-O

        Diese Tabelle ist fertig befüllt und dient dazu dass der User im Formular die erforderliche Fahrtrichtung der Fahrzeuge 
        auswählen kann

Htbl_fahrzeug
   Fahrzeug_ID
   Fahrzeugart      Hier stehen alle verfügbaren Fahrzeugarten (Motorrad, Pkw, Lkw ...)

   Ist ebenfalls befüllt und dient zur Auswahl im Formular

Htbl_Sachbearbeiter
   Sachbearbeiter_ID
   Name         Auflistung aller Sachbearbeiter

   Dient wiederum zur Auswahl im Formular

Htbl_Schaden
   Schaden_ID
   Schaden      Auflistung aller für mich relevanten Schäden

   Dient wiederum zur Auswahl im Formular

Htbl_Straßen
   Straße_ID
   Straßennummer   Eine vom Magistrat vergebene eindeutige Straßennummer
   Straße         Name der Straße

   Dient wiederum zur Auswahl im Formular

Htbl_Umstand
   Umstand_ID
   Umstand      eine vordefinierte Liste aller möglichen Unfallumstände

   Dient wiederum zur Auswahl im Formular

Alle mit Htbl bezeichneten Tabellen sind fertig befüllt und dienen nur zur Auswahl

Tbl_beteiligte
   Beteiligte_ID   
   Vorname      
   Nachname
   Geburtsdatum
   PLZ
   Ort
   Anschrift
   Status         bezieht Werte aus einer vordefinierten Werteliste
   Verletzung      bezieht Werte aus einer vordefinierten Werteliste
   Fahrzeug         bezieht Werte aus htbl_fahrzeug
   Kennzeichen
   Versicherung   
   Fahrtrichtung      bezieht Werte aus htbl_fahrtrichtung
   VU_ID         verknüpft mit der tbl_verkehrsunfälle
   FFl            ja/nein
   oFS            ja/nein
   VU-Gebühr      ja/nein

Tbl_Umstand
   Unfallumstand_ID
   Umstand_ID      verknüpft mit htbl_umstand
   beteiligte_ID      verknüpft mit htbl_beteiligte

Tbl_verkehrsunfälle
   VU_ID
   Unfallzahl         Eine interne Aktenzahl die bereits besteht
   Schaden         Welche Art von Unfall (Werteliste)
   Datum
   Uhrzeit
   Datum bis         wenn unbekannt ist wann ein Unfall war als 2tes Datumsfeld
   Uhrzeit bis
   Straße1         von htbl_straße
   Hausnummer      falls es sich um keine Kreuzung handelt
   Ortsinfo         ev. Zusatztext (Parkplatz Billa usw.)
   Straße2         von htbl_straße
   Sachbearbeiter1   von htbl_sachbearbeiter
   Sachbearbeiter2   von htbl_sachbearbeiter
   Sachverhalt      Memo

Htbl_kreuzung
   ID
   Straße1
   Straße2
   Straße3
   Straße4
   Straße5

   Dies wäre meine Tabelle aus der ich gehofft hätte Kreuzungen generieren zu können.
   

Das ist meine Backend-DB mit allen Tabellen

Im Frontend bastle ich meine Abfragen, Formulare und Berichte die dann auf mehreren Bildschirmen zur Dateneingabe dienen
Titel: Re: Benötige Lösungsansatz zum Darstellen einer Kreuzung (Straßenverkehr)
Beitrag von: MzKlMu am Oktober 10, 2012, 17:30:27
Hallo,
ich sehe da nur eine Verbesserungsmöglichkeit:

   StraßeID_F         von htbl_straße
   Hausnummer      falls es sich um keine Kreuzung handelt
   Ortsinfo         ev. Zusatztext (Parkplatz Billa usw.)
   Kreu_ID_F        von htbl_Kreuzung
   Sachbearbeiter1   von htbl_sachbearbeiter
   Sachbearbeiter2   von htbl_sachbearbeiter
   Sachverhalt      Memo

Htbl_kreuzung
   Kreu_ID
   Bezeichnungung (Optional)

Htbl_Kreuzung_Straße
   KreuStraID
   StraßeID_F (von htbl_straße)
   Kreu_ID_F (von Htbl_kreuzung)

Wobei anzumerken ist, dass als Fremdschlüssel nur die Zahl zu speichern ist, also die ID, nicht der Klartext. Und hänge an die Fremdschlüssel ein _F an, wie ich es gemacht habe, auch bei den bestehenden Feldern.
Und dringender Rate, keine Nachschlagefelder in Tabellen direkt.