Just nu i M3-nätverket
Gå till innehåll

Hjälp med tabeller


FreThor

Rekommendera Poster

Hej!

 

Jag är total nybörjare på MySQL, men ska göra ett försök nu. Jag har i år varit ansvarig för att uppdatera en hemsida med tävlingsresultat och det har varit ett tjorvande med att lägga till nya resultat och uppdatera totalställningen under året så jag behöver ordna det på ett smartare sätt till 2010 och tänkte försöka med en MySQL-databas istället.

 

Inledningsvis behöver jag lite hjälp med vilka tabeller jag ska skapa för att få resten att flyta på...

 

Det är alltså ett antal deltävlingar under året och det ska dels tas fram resultat för varje enskild tävling och dels serietabeller som visar totalställningen under året.

Varje deltagare har ett unikt startnummer, men kan under året tävla i tre olika klasser och totalresultaten hör samman med vilken klass man tävlat i (det blir alltså tre serietabeller och varje deltagare kan i teorin vara med i alla tre klasserna).

Placeringen i varje tävling ger ett antal poäng som räknas ihop i serietabellen.

 

Se www.themoptoppz.net och kolla serietabellen och raceresultat för 2009 för att se vad jag vill åstadkomma för nästa år!

 

Så, vilka tabeller bör jag skapa? En med startnummer och namn? En med placering och motsvarande poäng? En med startnummer, klass, race och placering? Låter det vettigt eller bör jag göra på nåt annat sätt?

 

Tacksam för alla tips så här i början, även tips på nåt liknande exempel (tutorial eller hemsida) vore fint!

 

Tråden flyttad från Databaser - övriga av moderator

 

[inlägget ändrat 2009-12-31 12:20:49 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Mitt förslag är inledningsvis följande tabeller (enbart med grundfält i sig, fler fält kan förstås lägga till, såsom personers adresser, tävlingsdatum i Event osv.) Participant är den tävlande, Class innehgåller de olika klasserna, Event varje deltävling samt Result för reultatet för en enskild deltagare i en deltävling. Relationerna mellan tabellerna framgår av fältnamnen.

 

Participant

------------

ParticipantId (primär/unik)

StartNo

Name

 

Class

------

ClassId

Name

 

Event

-------

EventId

ClassId

 

Result

-------

ParticipantId

EventId

Score

 

[inlägget ändrat 2009-12-31 13:51:41 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Ok, låt oss se om jag förstår dig rätt!

Jag lägger in exempelvärden för att visa hur jag uppfattat det.

 

Participant

------------

ParticipantId (primär/unik) = nåt löpnummer

StartNo = 35

Name = Kalle Karlsson

 

Class

------

ClassId = nåt löpnummer

Name = 50cc, 70cc eller 90cc (dvs de klasser vi har att välja på)

 

Event = den här förstår jag inte riktigt hur jag ska använda...

-------

EventId = nåt löpnummer

ClassId = ? man kan alltså köra i 50cc i Race1, 3, 4 och t ex i 70cc i Race2, 5 osv. Varje Event kör alla tre klasserna, så ett Event kan inte bara kopplas mot en viss klass.

EventName (mitt förslag) = Race1 2010, Race2 2010 osv, dvs de race vi kör under säsongen

 

Score = mitt förslag

-------

ScoreId = nåt löpnummer

Result = placering, dvs 1:a, 2:a, 3:a osv

Score = 15 (poängen för 1:a plats), 12 (p för 2:a) osv, dvs poängskalan

 

Result = Här måste jag alltså på nåt vis få ihop en person med en viss tävling, med den klass han valde att köra i den tävlingen och vilken placering han fick (och därmed poängen).

-------

ParticipantId = Kalles Id-nr

EventId = Race1 2010 Id-nr

Result = 1 (1:a plats)

Score = 15

ClassId = 50cc:s Id-nr

 

Rätta mig gärna där jag schabblat till det!

 

Länk till kommentar
Dela på andra webbplatser

Varje Event kör alla tre klasserna, så ett Event kan inte bara kopplas mot en viss klass.

Ok, jag är inte riktigt insatt i sporten =)

Din variant med att lägga in ClassId i Result fungerar bra. Då kan du även slopa tabellen Score (du har ju lagt in Result och Score i Result-tabellen.

I tabellen Event plockar du även bort ClassId, den hör ju inte dit längre.

Du verkar vara på rätt spår.

 

Länk till kommentar
Dela på andra webbplatser

En fundering kring Result-tabellen:

Det känns som om det blir lite tjorvigt att ta fram en total serietabell med det upplägget eftersom jag då måste filtrera fram alla individuella resultat och konstruera serietabellen i efterhand.

En fundering är om jag skulle tjäna på att göra så här istället:

 

Result_50cc_2010

--------------

ParticipantId

Totalpoäng

Race1Result

Race2Result

osv, och sen lägga till kolumner i tabellen för de olika tävlingarna allt eftersom tävlingarna genomförs. Då skulle Result_50cc_2010 i stort vara en färdig serietabell för 50cc-klassen och enklare att visa på hemsidan.

Sen ha två tabeller till för motsvarande Result_70cc_2010 och Result_90cc_2010.

 

Några funderingar kring om vilken variant som är att föredra???

 

Länk till kommentar
Dela på andra webbplatser

Några funderingar kring om vilken variant som är att föredra???

Japp.

Ditt förslag är väldigt vanligt och lockande att ta till, inte mins hos nybörjare, men det är dålig databasdesign.

Nu gissar jag dock att vi pratar om väldigt små datamängder och inte rör en professionell situation, så det är förstås inget som hindrar dig från att gå på det spåret om du vill.

 

Men om du har tankar på att arbeta med systemutveckling som karriär är det bäst att lära och göra rätt från start, annars hamnar man i dåliga beteendemönster som blir svåra att bryta med tiden (något jag sett alltförmånga exempel på i min bransch)

 

Länk till kommentar
Dela på andra webbplatser

Hmm, vi får se vilket alternativ jag väljer...

Nån SQL-kurs har jag inte hunnit med än (och det har ju tydligt framgått redan), men det är ju liksom inte några större datamängder och de ska inte ändras efter att de är inmatade heller. Huvudsyftet är att få nåt fungerande ganska omgående och då kanske min ful-variant är enklare, så kan jag labba med den "riktiga" vid sidan om när jag fattat hur saker funkar inom SQL...

Du har varit ovärderlig hjälp Anjuna Moon, jag ska testa på egen hand nu, så får jag väl återkomma när jag trasslat till det för mig! Tusen tack!

 

Länk till kommentar
Dela på andra webbplatser

  • 1 month later...

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...