1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Tabellen für "Wettkampfdatenbank" (Anfängerfrage)

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von Wettkämpfer, 2 Februar 2017.

  1. Wettkämpfer

    Wettkämpfer Guest

    Grüß euch,
    ich bin neu im Forum und hoffe ihr könnt mir ein wenig helfen.

    Ich versuche aktuell mir etwas Datenbankwissen zu erarbeiten. Bisher habe einmal etwas „brauchbares“ (für mich brauchbar) auf Basis von Access erstellt wobei das da relativ einfach ging weil ich viel mit dem „Nachschlageassistenten“ von Access gemacht hab. Damals hab ich mir eine Access File aufgebaut in das ich div persönliche Bestzeiten die ich beim Sport aufgestellt hab eingetragen hab.

    Dieses Access File ist wirklich funktionell geworden, ob es aber den Anforderungen in Bezug auf gutes Datenbankdesign entspricht darf wohl bezweifelt werden.

    Wie auch immer, ich möchte nun erneut eine kleine Datenbank erstellen. Diesmal soll als Basis Microsoft SQL Server verwendet werden da ich genau in diesem Bereich mein Wissen erweitern will. Die ganzen Übungsdatenbanken sind zwar schön und gut, ich möchte aber was machen was mir in der Praxis hilft und wo ich auch selbst Lösungen finden muss.


    Also hab ich mir gedacht ich erstelle eine kleine Datenbank in der ich die Wettkampfergebnisse eintrage die ich so während des Jahres, in verschiedenen Sportarten, erringe.


    Ich mach mir im Moment Gedanken welche Tabellen ich brauche und da wärs nun schön wenn ihr Zeit und Lust hätten einen Unwissenden etwas zu unterstützen. Es sei erwähnt das ich von SQL im Moment noch wenig Ahnung hab, Video2Brain Schulungen werden aber gerade durchgearbeitet und für März habe ich bereits einen T-SQL Grundlagenkurs gebucht.

    Ok, nun zu meinem Plan.


    Ich will in meiner Datenbank meine Wettkampfergebnisse mit allen nötigen Informationen versehen die irgendwie Auswirkungen auf das Wettkampfergebnis haben.

    Soll heissen: zu jedem Ergebnis soll auhc gespeichert werden welches Sportgerät ich verwendet habe, welches Wetter es gehabt hat, welche Art Wettkampf es war (also zb. Berglauf, Straßenlauf, Rennrad-Rennen…usw).

    Nun bin ich sehr sehr unsicher wie ich das genau angehen soll und wollte mal fragen wie ihr untenstehende Tabellen einstuft.



    Folgende Tabellen kamen mir da in den Sinn:

    Tabelle „Wettkampf“
    Spalten:
    WK-ID
    Wettkampfname (zb "Vienna City Marathon", "Grazer Stadtlauf"...usw)
    Wettkampftyp
    Streckenlänge

    Tabelle „Wettkampftyp“
    Spalten:
    WK-Typ-ID
    Wettkampf-Typ (Stadtlauf, Rennradrennen, Bikerennen.....usw)

    Tabelle „Sportgeräte“
    Spalten:
    Sportgeräte-ID
    Sportgeräteart (zb Laufschuh, Rennrad, Bike)
    Sportgerätebezeichnung ( „Salomon S-LAB“ / Rose Bike / Scott Rennrad)

    Tabelle „Wettkampfergebnis“
    Spalten:
    Ergebnis-ID
    Wettkampf
    Datum
    Gesamtrang
    Klassenrang
    Gesamtzeit
    Sportgerät
    Notizen
    Zwischenzeit 1
    Zwischenzeit 2
    Zwischenzeit 3 ……usw bis Zwischenzeit 15

    In der Tabelle "Wettkampfergebnisse" sollen dann in den Spalten "Wettkampf" und Sportgerät nur die Daten eingetragen werden können die in den entsprechenden Tabellen "Wettkampf" und "Sportgeräte" bereits angelegt wurden.

    Würd mich freuen wenn sich jemand die Zeit nehmen würde sich das durchzudenken und mich aufzuklären ob ich mit meinen ersten Überlegungen total daneben liege oder ob ich grundsätzlich auf nem halbwegs richtigen Weg bin.

    Das ich zwischen den Tabellen noch Beziehungen erstellen muss ist mir klar.

    Vielen Dank schon mal

    lg
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Dann verwende Foreign Keys (Achtung: Trump DBA on Twitter ) dafür. Was machst Du, wenn Du mal 16 oder nur 3 Zwischenzeiten hast?
     
  3. ukulele

    ukulele Datenbank-Guru

    Normalisierung (und das was auf Wikipedia dazu steht) sollte man verstehen und beherschen. Bei vielen verschiedenen Sportarten könnte man sich das EAV-Prinzip angucken, auch wenn akretschmer sagen würde es gibt bessere Möglichkeiten.

    Du hast dir viel Mühe gegeben dein Vorhaben zu beschreiben, allerdings kann man hier wirklich nur Details anmerken. Skizziere deine DB als ERD und wenn du das Gefühl hast es passt musst du einfach anfangen :) Arbeite zunächst nur mit SQL Syntax ohne irgendeine Oberfläche, das übt. Bei Syntax Fragen kann man auch viel besser helfen.
     
  4. Wettkämpfer

    Wettkämpfer Guest

    Grüß euch,

    und danke für die Antworten. Ich hab gesehen das man in Visio schöne Übersichten generieren kann, ich lese mich grad weiter ein, schaue das ich das in Visio so abbilden kann das man weiß was ich erreichen will.

    Sobald ich das habe werde ich mich hier nochmal, mit grafischer Darstellung, melden.

    lg
     
  5. ukulele

    ukulele Datenbank-Guru

    Es geht nicht so sehr darum uns das visuell zu präsentieren sondern es hilft einfach beim Verständnis. Da tuts auch das gute alte Papier am Anfang :)
     
  6. Wettkämpfer

    Wettkämpfer Guest

    Morgen ukulele,

    das Problem ist halt das es beim Einstieg "etwas" schwierig ist die Dinge zu verstehen. Man sollte sich mit dem DBMS etwas auskennen, man sollte das eigentliche Vorhaben halbwegs gut beschreiben können, man sollte die Sache mit der Normalisierung verstehen usw. Da wirds, grad wenn man "alleine" ist, im Freundeskreis niemanden hat, etwas unübersichtlich. Denn man kann sicher viel lesen, man kann aber nur schwer prüfen ob man das gelesene auch wirklich richtig verstanden hat.

    So wie ich das verstehe entspricht die Sache mit den verschiedenen Zwischenzeiten in der Tabelle nicht der ersten Normalform, ich hab aber keine Ahnung wie ich das lösen kann.
    Darum eben mein "Ergebnis" mit "Zwischenzeit 1" usw. Hätte ich mal nur zwei Zwischenzeiten würden die restlichen eben leer bleiben. Ich versteh das dies nicht optimal ist, aber Plan wie ich das lösen kann hab ich keinen.

    In div Beispielen die ich finden kann gehts zb sehr oft um mehrere Mailadressen für eine Person, da wird das über eine weitere Tabelle gelöst. Aber ich weiß nicht wie ich das auf mein Beispiel umlegen kann denn Mailadressen kann ich jo in eine weitere Tabelle ablegen, die bleiben dann ja gleich. Aber Zwischenzeiten kommen in der selben Form ja nie wieder vor, es ist kaum anzunehmen das ich eine bereits erreichte Zwischenzeit in Zukunft nochmal, auf Hundertstel genau, erreichen werde und somit diese Zwischenzeit aus einer anderen Tabelle nochmal nutzen kann.

    Ich hab in Visio gesehen das man da auch Primär und Fremdschlüssel eintragen kann, die Datentypen ebenfalls angeben kann. Darum dachte ich das so eine Übersicht generell besser darstellen würde was ich machen will und auch besser zeigen könnte wie "weit" ich mit meinen Überlegungen gekommen bin.

    lg
     
  7. ukulele

    ukulele Datenbank-Guru

    Also wenn du jetzt eine Datenbank hättest die genau zwei Wettkämpfe abbildet, einen 500m Lauf und einen 1000m Lauf wo nur der 500m Lauf eine Zwischenzeit hat und der 1000m Lauf drei, und auch nie ein anderes Wettkampf Format hinzu kommt, dann könnte man das vielleicht so machen (aus Faulheit). Sobald du aber mehrere Formate hast, (ob verschiedenste Strecken oder Sportarten) wirst du immer wieder neue Spalten einfügen müssen und 90% deiner Tabelle bestehen aus leeren Feldern, das ist Murks. Oder um es mit politisch aktuellen Folskeln zu beschreiben: Katastrophe, so schlimm.

    Beispiel 1: Du bildest nur Wettkämpfe des selben Typs ab, z.B. Wettrennen, Wettlauf, etc. eben mit Zeiten und nicht Distanzen oder Anderes als Resultat.
    Du hast eine Tabelle für Ergebnisse, die Zwischenzeiten sind auch Ergebnisse und eigene Einträge in der Tabelle. Du hast drei Spalten: PK, FK auf Wettkampf, Zeit. Der PK muss eindeutig sein und nichts weiter. Der FK zeigt dir den Wettkampf zu dem die Zeit gehört. Wann dieser Wettkampf statt gefunden hat, wo, mit welchen Hilfsmitteln, wer noch da war hat mit der Zeit nichts zu tun sondern steht in der Wettkampftabelle oder anderen Tabellen. Die höchste Zeit ist in der einfachsten Form erstmal das Endergebnis, alle anderen Zeiten zum selben Wettkampf sind Zwischenzeiten. Jeder Lauf auf deinem Turnier ist ein eigener Wettkampf.

    Als Besonderheit könntest du jetzt noch den Rang als Spalte mit abbilden, da du ja nur deine Wettkampfdaten hast und nicht alle Teilnehmer abbildest (dann ließe sich der Rang ja aus den Daten ermitteln und müsste nicht redundant gespeichert werden).

    Beispiel 2: Du bildest verschiedeneste Formate ab, z.B. Turmspringen (Note), Gewichtheben (Gewicht in KG) und Pfahlsitzen (Zeit).
    Du hast sehr viele verschiedene Atribute in unterschiedlicher Anzahl. Du kannst das EAV Prinzip nutzen und hast eine Tabelle mit vier bis fünf Spalten: PK, FK auf Wettkampf, Typ, Wert, Einheit und beliebig vielen Zeilen. Jede Zeile bildet ein Attribut ab. Das hat natürlich auch Nachteile aber kann alles sehr flexibel abbilden.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden