Avatar billede jytte Nybegynder
08. juni 2004 - 14:29 Der er 9 kommentarer og
1 løsning

hvordan laver man et versioneringssystem

Jeg har lavet et større testsystem hvori man kan lave test som kan tages og resultaterne lagres i en database.

Jeg har lavet det sådan at hvis en test er låst kan den tages, men hvis en test er taget kan den ikke låses og og ændre uden først at slette testresultaterne -- ideen er at man ikke skal kunne lave "historieforfalskning" ved efterfølgende at ændre i testens opgaveformulering(er).

Men det jeg allerhelst vil have er en form for versioneringssystem.

Så jeg vil gerne høre om der er nogen der har nogle gode overvejelser omkring hvordan man griber dette an eller nogle gode links til nogen der har skrevet om hvordan man laver et versioneringssystem.
Avatar billede arne_v Ekspert
08. juni 2004 - 14:34 #1
Er det ikke bare at have en versions nummer for testen og så gemme samme versions nummer
sammen med alle resultater, så man altid kan se hvilken test resulatet er opnået med ?
Avatar billede bufferzone Praktikant
08. juni 2004 - 14:44 #2
Et sådant findes allerede gratis til linux. Du kan opstille en cvs server, der via samba kan tilgås af windows maskiner. Jeg mener der findes en beskrivelse af hvordan det gøres på www.linuxbog.dk
Avatar billede arne_v Ekspert
08. juni 2004 - 14:48 #3
Jeg gik udfra at testen også lå i databasen.

Man vil næppe bruge Samba til at tilgå en CVS server på Linux fra Windows
(CVS har udover fil tilgang også indbygget net protokol, så CVS client
på Windows kan snakke direkte med CVS server på Linux).
Avatar billede jytte Nybegynder
08. juni 2004 - 14:51 #4
min test består af en række forskellige testopgaver fra almindelig multiplechoice til drag and dropøvelser.

hver testopgavetype ligger i egne tabeller med en testopgave_id der er nøgle til testopgave-tabellen. testopgavetabellen har et testid der er nøgle til test-tabellen

hvis jeg laver en ny version af en test må jeg ikke ændre den gamle version -- dvs jeg må ikke ændre i de tabelindgange hvor f.eks de enkelte svarmuligheder til min multiplechoice ligger.

Jeg tror derfor ikke jeg kan lave et versioneringssystem uden på en eller anden måde at lave kopier af alle indgangene i mine tabeller som refererer til testopgaver hørende til min test
Avatar billede arne_v Ekspert
08. juni 2004 - 14:54 #5
Du vil skulle gå fra en simple primær nøgle id til en sammensat primærnøgle
id + version.
Avatar billede arne_v Ekspert
08. juni 2004 - 14:54 #6
Ditto med fremmednøgler.
Avatar billede jytte Nybegynder
08. juni 2004 - 15:10 #7
arne: Mener du noget i retning af nedenstående:

Jeg udvider min test-tabel med et versionsnummer.

min testopgavetabel får også et versionsnummer og det gør de tabeller der har testopgave_id som fremmednøgle også. Alle disse tabeller får en sammensat primær nøgle : nuværende nøgle + versionsnummer

Når jeg så laver en ny version af en test tæller jeg versionsnummeret i test-tabellen op mens jeg laver kopier af alle indgange i testopgavetabellen i nuværende version så den eneste forskel fra dem jeg kopierer fra er at versionsnummeret er talt op. Da det jo er en sammensat primærnøgle får jeg ingen konflikter af den grund

Nu kan jeg så ændre i den nye version uden at det går ud over visningen af gamle versioner.
Avatar billede arne_v Ekspert
08. juni 2004 - 16:14 #8
Ja.

Jeg tror at det vil virke fornuftigt.

Men SQL sætningerne bliver ikke kønnere af det.
Avatar billede jytte Nybegynder
09. juni 2004 - 10:20 #9
Nej det ved jeg og jeg har desværre over 250 SQL-sætninger jeg skal til at lave om i!
- og det bare for at forberede systemet til mulighed for versionering.

Derefter skal jeg så til at overveje brugergrænsefladen.

Men din sammensatte nøgle tror jeg på, så læg et svar Arne.
Avatar billede arne_v Ekspert
09. juni 2004 - 10:34 #10
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester