Otto skrev:
>> Er '1a hi' etc. nøgleværdier? (eller findes der en anden
>> primærnøgle i den tabel hvor værdierne hører hjemme).
>
> Ja der er et nøglefelt 'ID' til alel poster. Men det kan jeg
> vist ikke bruge - da et hold/klasse som f.eks '1a hi' har
> timer fordelt over flere lektioner i unes løb.
Hvor mange tabeller har du? I en relationel database skal hver
entitet have sin egen tabel. En entitet er fx en klasse, et lokale
eller et fag.
> En post i databasen repræsentaerer en bestemt lektion i ugens
> skema. f.eks :
> ID hold fag navn dag lektion lokale
> 1 1dk fk fy ALU 1 1 fys
Det jeg mener er at hold, fag, lokale og muligvis navn (er det navn
på læreren eller hvad?) er selvstændige entiteter som hører til i
separate tabeller. Man kan gemme mange oplysninger for hver
entitet, men når man bruger en entitet uden for dens egen tabel
sker det altid kun ved hjælp af primærnøglen.
Et eksempel med udgangspunkt i din nuværende tabel kunne være
følgende:
tbl_hold (indeholder oplysninger om hold)
Felter: holdID, holdnavn, maxpladser
tbl_fag
Felter: fagID, fagnavn, fagkode
tbl_lokaler
Felter: lokaleID, lokaleNavn, beskrivelse
tbl_undervisere
Felter: uID, uKode, Fornavn, Efternavn, Adresse,...
tbl_lektioner (svarer til din nuværende tabel)
Felter lektionsID, holdID, fagID, uID, dag, lektion, lokaleID
Lektionstabellen refererer til alle de andre tabeller ved hjælp af
fremmednøgler - dvs. primærnøglerne fra de forskellige tabeller. På
den måde kan man på samme tid gemme mange forskellige oplysninger
(fx adresseoplysninger på lærere) uden at skulle indtaste en eneste
oplysning mere end én gang.
>> Hvis du ikke allerede har en klassetabel, så opret en nu.
>> Hver klasse har et id-nr (primærnøgle, autonummer), et navn
>> og evt. andre egenskaber.
>
> Ja det gør jeg også normalt - problemet er at data allerede
> findes og der er 527 poster.
Man kan godt normalisere data fra en stor tabel til flere små. Jeg
tror faktisk at Access har en guide indbygget til netop det - spørg
evt. i Accessgruppen.
> Jeg har prøvet at kopiere posterne ID og hold over i ny tabel
> - men Access tager kun 22 poster med . ...så... det kan jeg
> åbenbart ikke.
Du skal ikke kopiere id-numrene - de er gode nok til den tabel der
bliver tilbage efter normaliseringen. Du skal derimod kopiere alle
værdier af fx hold over i en ny tabel og så lave nye id-numre dér
(alle tabeller skal bruge en primærnøgle/id-felt).
Det kunne fx være
SELECT DISTINCT hold
INTO tbl_hold
FROM gammelTabel
Så skulle du få en række for hvert holdnavn. Åbn tabellen i
designvisning, tilføj et autonummerfelt og gør det til primærnøgle
- så har du id-numre til tbl_hold.
Men som du måske kan ane er det en stor opgave at normalisere en
database - ikke mindst når der indgår så mange entiteter som det er
tilfældet her. Det vil stadig være den mest elegante måde at
organisere databasen på, men det kan anbefales at købe en bog om
databaser inden du går i gang.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html