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
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.
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
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
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.
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
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.