Hallo zusammen,
ich habe seit Ewigkeiten keine Datenbank mehr in Access aufgebaut und benötige jetzt Hilfe beim erstellen.
Ziel der Datenbank:
Ich möchte eine Datenbank haben die ich für ein Kampfkunst-Wettbewerb benutzten kann. Hierzu ist zu sagen das ein Teilnehmer an mehreren Disziplinen teilnehmen kann und seine Gewichtsklasse angeben muss. Hierfür habe ich für die Tabellen "Disziplin" und "Gewichtsklasse" eigene Tabellen erstellt und per Nachschlageassistent in der Tabelle "Anmeldung" hinzugefügt. Mein Ziel ist es über die Tabelle "Anmeldung" eine Abfrage zu machen damit die Paarungen der Kämpfe angezeigt werden. Diese sind Sortiert nach Gewichtsklasse und Disziplin. Jetzt wollte ich wissen ob der Aufbau so gut ist um eine Konsistente DB aufzubauen? 
Ich danke euch vorab
Grüße
Nachtatem 
			
			
			
				Hallo,
wirf das Nachschlagefeld wieder raus, diese haben in Tabellen nichts zu suchen. Baue eine korrekte n:m Beziehung auf. Die Gewichtsklasse kommt als Fremdschlüssel in die Anmeldung.
Nenne IDs nicht einfach ID. Hänge an die Fremdschlüssel zur Unterscheidung ein _F an. 
Siehe Bild.
Bei den Beziehungenist grundsätzlich referentielle Integrität einzustellen.
			
			
			
				Hallo MzKlMu,
danke für die schnelle Antwort :-) Ich habe die Fremdschlüssel eingesetzt.
Aber was ich noch nicht verstehe ist die m:n - Beziehung da ja ein Teilnehmer in mehreren Disziplinen (1:n) teilnehmen kann, und jeder Teilnehmer nur in einer Gewichtsklasse starten kann (1:1) frag ich mich wie ich die m:n Verbindung aufbauen soll?
Grüße
Nachtatem 
			
			
			
				Hallo,
mein Bild ist die n:m Verbindung.
			
			
			
				Hallo MzKlMu,
ich habe jetzt die Tabellen so aufgebaut und auch die Indizies gesetzt um die jeweilige Verbindung zu bekommen(Siehe Bild). 
Allerdings bekomme ich beim erstellen von F_Anmeldung nur ein Leeres Formular mit Überschrift aber ohne Möglichkeit ein Datensatz anzulegen. 
Kannst du mir sagen warum?
  
			
			
			
				Hallo,
das passt so nicht. Die 1:1 Beziehung ist falsch, das muss auch 1:n sein. Es gibt ja weitere Teilnehmer mit der gleichen Gewichtsklasse, wie willst Du die mit 1:1 erfassen?
Wie machst Du das mit der Anmeldung bei einem anderen Event ?
Noch mal eine Datenbank ?
Lasse das mal mit den Formularen, das ist noch viel zu früh.
			
			
			
				Hallo Klaus,
danke für die Info :-)
War das nicht so das die Beziehung pro Datensatz ist? 
Ich habe die so gewählt da ja ein Teilnehmer in einer Gewichtsklasse sein kann, daher habe ich mich für eine 1:1 Beziehung entschieden. Und bei den Disziplinen ist es das ein Teilnehmer an mehreren Disziplinen teilnehmen kann. Und die 1:1 bei den Teilnehmer ist deswegen da ein Teilnehmer sich ein mal anmelden kann. 
Wobei das dann ja auch falsch wäre falls 2 Müller sich anmelden möchten und nur durch Vorname oder Geburtstag sich unterscheiden. Also auch eine 1:n-Beziehung?
Kannst du mir ein Anhalt geben was ich im Anschluss machen sollte wenn ich noch kein Formular erstellen soll?
Danke für deine Unterstützung
Andy
			
			
			
				Hallo,
1:1 ist völlig ausgeschlossen. Du kannst das ja mal probieren. 
Versuche mal zu einem anderen Teilnehmer die gleiche Gewichtsklasse einzutragen. 
Mit Formularen geht es erst weiter wenn die Struktur passt. 
Ich hatte auch noch andere Fragen, bitte beantworten. 
			
			
			
				Hallo Klaus,
nein keine zweite DB. Ich setzte auf meine Website einen Link zum Formular der Anmeldung damit es dadurch geöffnet wird und die Teilnehmer sich registrieren können. 
Meine Idee sieht so aus:
Ich habe eine DB in der das Formular Anmeldung existiert. Über diese Anmeldung kann jeder seine Teilnahme am Event mit den Disziplinen eintragen. 
Über die Anmeldung kann ich im Anschluss die Teilnehmer der gleichen Gewichtsklasse und Disziplin filtern und ausdrucken.
Ich kann die Kampfpaarungen ermitteln lassen und ausdrucken. So der Gedanke von mir.
 
Als I-Tüpfelchen, sofern der Rest passt, kann ich durch setzten eines Hakens den Teilnehmer als Verlierer der Runde eintragen und das Schaubild der Teilnehmer welche gegeneinander kämpfen passt sich an. Aber das sind Gedanken für viel Später :-)
Danke
Andy
			
			
			
				Hallo,
ZitatIch habe eine DB in der das Formular Anmeldung existiert. Über diese Anmeldung kann jeder seine Teilnahme am Event mit den Disziplinen eintragen. 
Ich glaube nicht, dass das geht. Access ist nicht Internetfähig.
Und um ein Access Formular zu öffnen, braucht der User Access, auch wenn das ein Link ist.
Und außerdem, das Formular braucht ja einen Bezug zu einer Tabelle.
Wie wird im Formular die Unterscheidung gemacht um welches Event es sich handelt ?
Du stellst Dir das gerade recht blauäugig vor.
			
 
			
			
				Hallo Klaus,
ich habe Access auf meinem Server und die Website auch wodurch das Formular auf meinem Rechner geöffnet wird und das Formular eingebettet in meiner Website sich öffnet. Somit benötige nur ich Access, oder nicht?
Eine DB ist nur für ein Event da wodurch eine Unterscheidung nicht notwendig wird. Ich erstelle mir 1x meine Muster DB die ich im Anschluss für jedes Event Kopiere. 
Als ich mit Access2000 gearbeitet habe, war es möglich die Formulare von einem anderen PC zu öffnen wenn sie eingebettet waren. Ich kann mir nicht vorstellen das dies heute nicht mehr möglich sein soll. 
Das einzige was ich noch nicht herausgefunden habe ist die Multinutzung vom Formular was auch noch interessant wird.
Ich kann mir nicht vorstellen das Access, seit ich damit gearbeitet habe, nicht in der Lage ist eine DB für ein Sportevent zu erstellen.
Es hat sich seit daher bestimmt viel geändert aber so viel glaube ich nicht. Wie ich das über meine Website realisiere habe ich schon und den Code dafür habe ich auch schon erstellt und mit einem Formular einer DB-Vorlage ausprobiert. Ich musste zwar noch ein wenig mein REST anpassen aber es hat funktioniert.
Wie gesagt ich benötige die DB um diese dann einzubinden und zu testen. Und da benötige ich eine "simple" DB um das Event zu speichern.
Grüße
Andy
			
			
			
				Hallo,
Zitatnicht in der Lage ist eine DB für ein Sportevent zu erstellen.
natürlich geht ds, ich habe auch nichts anderes behauptet, ich habe aber nach wie vor meine Zweifel, dass das so funktioniert wie Du Dir das denkst.
Das musst Du halt probieren, ich kann Dir da nicht helfen.
ZitatUnd da benötige ich eine "simple" DB um das Event zu speichern.
Die hast Du doch schon, Du musst nur die Beziehung ändern, mit 1:1 geht das nicht.
Du musst über die ID des Events, die ID des Teilnehmers und die ID der Gewichtsklasse einen eindeutigen zusammengesetzten Index legen.
1:1 ist defintiv falsch.
			
 
			
			
				Sorry Klaus für die lange Pause
Ich habe jetzt die Indizies heraus genommen. (Siehe Anhang) 
Ist das dann der richtige Gedankengang?
Ich habe in den Tabellen den Primärschlüssel welcher ja auch als Zahl in der Tabelle Anmeldung abgelegt wird.
Somit habe ich in der Tabelle Anmeldung die eindeutige Zuordnung von Teilnehmer / Gewichtsklasse / Disziplin 
Ich werde dann mal das Formular versuchen und mich melden.
Danke für deine Geduld mit mir :-)
Grüße
Andy
			
			
			
				Hallo,
da ist kein Anhang.
Du kannst doch nicht einfach die Indizies rausnehmen. Schlüsselfelder müssen indiziert sein, sonst gibt das undefinierte Beziehungen.
			
			
			
				Guten Morgen,
das habe ich, ich habe die Eindeutigkeit in den Tabellen als Indizies in Form des Primärschlüssel und in der Tabelle Anmeldung habe ich die Felder als Zahl eingefügt und Verbunden.
Grüße
Andy
			
			
			
				Hallo,
noch ein paar Anmerkungen:
Vermeide Sonder- und Leerzeichen in Namen.  ("-")
Verwende keine reservierten Wörter für Namen  ("Name")
Wende die Benamsung konsequent an, z. B. ID_Teilnehmer  -->  ID_Teilnehmer_f
Erstelle für jede Tabelle ein Formular zur Dateneingabe und Pflege. T_Gewichtsklasse und T_Disziplin können Endlosformulare sein.
Vermutlich fehlen in T_Teilnahme noch weitere beschreibende Felder  (z. B. für Durchgänge oder Ergebnisse) , je nachdem, was die Db leisten soll, desgleichen weitere Tabellen wie z. B. für  "Wettbewerbe", wenn die DB nicht nur für einen einzigen Event dienen soll und für Mannschaftskämpfe (sofern es sowas hier gibt)  etc.
T_Teilnahme beschreibt lediglich, wer sich für jeweils eine Disziplin in einer bestimmten Gewichtsklasse angemeldet hat.
Grundsätzlich fehlen aber  andere wichtige Felder:  AnmeldeDatum, WettkampfDatum, WettbewerbDatum, etc.