Kursusbeskrivelse Oprettelse af en Access-database Som eksempel på en Access-database oprettes en simpelt system til administration af kurser. Access-databasen skal indeholde: et instruktørkartotek et kartotek over kurser et kartotek over tilmeldinger Forarbejde Inden arbejdet med udviklingen af kursusadministrationen går i gang skal du hente en færdig liste over postnumre: Postnumre.mdb på adressen: http://web-uv.acu-vejle.dk/databasekursus/materialer/postnumre.mdb Gem filen på Skrivebordet! file://///server8/brugere/helge/skrivebord/kursus.htm22-10-2004 12:31:53
Tabeller 1 En database består ofte af mange tabeller. Tabellerne kan arbejde sammen dels ved at hente oplysninger fra hinanden, dels ved at man kan oprette relationer mellem den og udnytte dette i forespørgsler. Redundans I instruktørtabellen til højre mangler der tilsyneladende en kolonne, der viser bynavnet. Hvis der havde være en kolonne for bynavne ville sammen bynavn have optrådt flere steder i samme tabel. Man ville altså kunne læse flere steder at fx postnummer 6000 betyder Kolding. Dette fænomen kaldes REDUNDANS. Redundans betyder at samme oplysning er registreret flere gange. http://web-uv.acu-vejle.dk/databasekursus/teori/2.htm22-10-2004 12:10:29
Tabeller - 2 Redundans Redundans skal undgås. Dels kræver det plads på computeren, dels kan det let give et stort vedligeholdelsesarbejde hvis et redundant data skal ændres. Prøv at forestil dig et arbejde, hvis instruktørtabellen indeholdt 687 poster over instruktører og de 122 af dem kom fra Aalborg. Hvis man besluttede at Aalborg fremover skulle hedde Ålborg skulle man rette 122 steder i denne tabel. Hvis man i stedet anvender en særskilt postnummertabel som hovedtabellen kan slå op i, kan man nøjes med at rette et (fem) sted(er). http://web-uv.acu-vejle.dk/databasekursus/teori/3.htm22-10-2004 12:10:30
Tabeller - 3 Normalisering Der findes en teknik til at undgå redundans i eksisterende tabeller. Den kaldes normalisering og består i en række trin, der hver især består i at dele en tabel op i mindre tabeller. Det vil føre for vidt kan komme ind på denne teknik her. I stedet sørger vi for at opbygge databasen således at den kommer til at bestå af flest mulig tabeller der i videst mulig omfang kan stå alene. Sådanne tabeller kalder vi stærke tabeller. Postnummertabellen er en stærk tabel, da den kan bruges uden at den skal hente oplysninger andre steder. http://web-uv.acu-vejle.dk/databasekursus/teori/4.htm22-10-2004 12:10:30
Tabeller - 4 Instruktørtabellen er en næsten stærk tabel, da den kan give alle relevante oplysninger om instruktørerne - dog ikke bynavn, som denne tabel skal slå op i postnummertabellen. Kurser-tabellen er også en næsten stærk tabel, da den kan give alle relevante oplysninger om kurserne instruktørerne - dog ikke instruktørdata, som denne tabel skal slå op i instruktørtabellen. Tilmeldinger-tabellen er en svag tabel, da den kræver opslag i flere andre tabeller for at give mening. http://web-uv.acu-vejle.dk/databasekursus/teori/5.htm22-10-2004 12:10:31
Tabeller - 5 For at Instruktørtabellen kan vise det rigtige bynavn fra Postnummertabellen skal der være en forbindelse mellem tabellerne - en nøgle. I postnummertabellen er postnummeret en unik nøgle og denne kaldes en primær nøgle. Her ses hvorledes Instruktørtabellen slår bynavnet op i Postnummertabellen ved brug af den primære nøgle. Tilsvarende ses hvorledes Kurser-tabellen slår Instruktørnavnet op i Instruktørtabellen ved brug af den primære nøgle som er et unikt nummer der tildeles hver instruktør. http://web-uv.acu-vejle.dk/databasekursus/teori/6.htm22-10-2004 12:10:31
Eksempel på link der åbner lille windue Relationer Man ønsker ofte at kunne fremvise et samlet udvalg af informationer fra flere tabeller samtidig. Det kan gøres i en forespørgsel. En forespørgsel, der samtidig viser et data for et kursus fra kurser-tabellen og oplysninger om instruktøren fra instruktørtabellen, kræver at de to tabeller er forbundet ved med en relation. I figuren ses relationer mellem flere tabeller. Relationen går fra et felt i den svagere tabel til den primære nøgle i den stærkere tabel. Relationen har en 1-side og en mange-side. Det skal forstås på den måde at én instruktør i tabellen instruktører godt kan fungere som instruktør på flere kurser i tabellen kurser. Referentiel Integritet Man kan sikre sig at det ikke tillades, at der findes kurser Kurser-tabellen uden at der også er tilknyttet en instruktør i Instruktørtabellen. Dette indebærer Referentiel Integritet. http://web-uv.acu-vejle.dk/databasekursus/teori/7.htm22-10-2004 12:10:31
Oprettelse af simpel database Som eksempel på oprettelse af en database vil vi fremstille et simpelt kursusadministrationssystem. Databasen skal indeholde 1. En tabel over instruktører 2. En tabel over aktuelle kurser 3. En tabel over tilmeldinger Desuden skal der oprettes to forespørgsler til hhv. administration af instruktørregistret og til tilmelding til kurser via en webside. ------------------------------------------------------- Åben Access Vælg Filer Ny Tom database Navngiv databasen KursusAdm Tryk Opret http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/1.htm22-10-2004 12:18:41
Opret en tabel i designvisning 1 Dobbeltklik på Opret en tabel i designvisning Herved fremkommer designvinduet for tabellen Skriv ID i første feltnavn Klik yderst til højre i feltet under datatype Vælg Autonummerering http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/2.htm22-10-2004 12:18:42
Opret en tabel i designvisning 2 Udfyld de øvrige 4 feltnavne som vist i (1) (Bemærk at feltstørrelsen automatisk sættes til 50 karakterer. Tekstfelter kan være op til 255 karakterer) Vælg feltstørrelse 4 for postnummer (2) 1 2 http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/3.htm22-10-2004 12:18:43
Opret en tabel i designvisning 3 Tryk Gem - Tabelnavn: Instruktører Access meddeler nu at der ikke er defineret en primær nøgle Tryk Ja for at oprette en primær nøgle Bemærk nøglesymbolet ud for feltnavnet Tryk Visning i værktøjslinien menuen Filer Luk tabellen Instruktører Den primære nøgle gør det muligt at oprette relationer mellem tabeller. Ved at vælge Autonummerering kan man tilføje nye poster uden selv at skulle indtaste en identifikator. Der er ikke defineret et felt for bynavn. Det er ikke nødvendigt fordi der er en en-entydig sammenhæng mellem postnummer og bynavn. Vi har derfor mulighed for at få bynavnet vist, hvis vi har en postnummer tabel, hvor Access kan slå bynavnet op. Højreklik på dette link til en færdig postnummerdatabase og vælg gem destination som i genvejsmenuen. Gem denne database på skrivebordet. http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/4.htm22-10-2004 12:18:43
Opret en tabel i designvisning 4 Vælg menuen Filer Hent eksterne data Importer... Find filen postnumre.mdb på skrivebordet Tryk Importer Marker tabellen postnumre i boksen Importer objekter Tryk OK Nu importers tabellen postnumre til databasen http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/5.htm22-10-2004 12:18:44
Opret en tabel i designvisning 5 Marker tabellen Instruktører Tryk Design Klik i feltnavnet Postnummer Vælg fanen Opslag Klik yderst til højre i feltet VisKontrolelement Vælg Kombinationsboks http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/6.htm22-10-2004 12:18:44
Opret en tabel i designvisning 6 Klik yderst til højre i feltet Rækkekilde(1) Vælg postnumre Udfyld som vist i fig. (2) Tryk Gem og Luk 1 2 http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/7.htm22-10-2004 12:18:44
Opret en tabel i designvisning 7 Dobbeltklik på Tabellen Instruktører Klik yderst til højre i feltet under Postnummer Nu kan man se opslaget i postnummertabellen og man kan vælge et af postnumrene fra listen. Hvis man prøver at skrive et andet nummer og klikke i et nyt felt får man en besked om at nummeret ikke findes i listen. Skriv nogle fiktive navne og adresser i tabellen og vælg tilhørende postnumre enten ved at skrive eller ved at vælge på rullelisten. Luk alle tabeller http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/8.htm22-10-2004 12:18:45
Opret en tabel i designvisning 8 Højreklik på Tabellen Instruktører Vælg Designvisning Klik i feltet Efternavn Vælg Indekseret Ja - dubletter tillades Egenskaberne for tabellen er opsummeret i nedenstående egenskabsark. Vælg egenskaber for de andre felter som vist herunder Nu har vi foreløbig to tabeller. For at vi senere kan oprette en forespørgsel, hvor vi også kan se By er det nødvendigt at oprette en relation mellem tabellen Instruktører og tabellen postnummer. http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/9.htm22-10-2004 12:18:45
Opret flere tabeller Vi har brug for yderligere to tabeller som vist i nedenstående egenskabsark. Opret de to tabeller som gennemgået tidligere. Vælg opslag og kombinationsboks for Postnummer som vist tidligere Tryk Gem http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/10.htm (1 af 2)22-10-2004 12:18:46
http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/10.htm (2 af 2)22-10-2004 12:18:46
Opret flere tabeller 2 Åben tabellen Kurser, hvis den ikke allerede er åben Tryk Visning i værktøjslinien menuen Filer Klik i feltet InstruktørID Afmærk felterne under fanen Opslag som vist på figuren http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/11.htm22-10-2004 12:18:46
Opret flere tabeller 3 Klik i feltet Kategori Afmærk felterne under fanen Opslag som vist på figuren Tryk Visning i værktøjslinien menuen Filer Indtast fiktive data i tabellen Kurser Tryk Gem Luk tabellen http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/12.htm22-10-2004 12:18:47
Opret flere tabeller 4 Åben tabellen Tilmeldinger, hvis den ikke allerede er åben Tryk Visning i værktøjslinien menuen Filer Klik i feltet Kursusnr Vælg fanen Opslag og Afmærk felterne som vist på figuren Vælg kombinationsboks for Postnummer som vist tidligere Tryk Gem og luk Åben tabellen Tilmeldinger Indtast fiktive data i tabellen Tilmeldinger Luk tabellen http://web-uv.acu-vejle.dk/databasekursus/opret_database/tabel/13.htm22-10-2004 12:18:47
Oprette relationer Luk alle åbne tabeller Tryk på knappen Relationer i værktøjslinien http://web-uv.acu-vejle.dk/databasekursus/opret_database/relation/1.htm22-10-2004 12:21:34
Oprette en relation 2 Herved åbner vinduet Relationer med dialogen Vis tabel åben. (Hvis ikke Vis tabel vises, skal du højreklikke i vinduet Relationer og vælge Vis tabel) Marker alle tabellerne Tryk Tilføj Tryk Luk http://web-uv.acu-vejle.dk/databasekursus/opret_database/relation/2.htm22-10-2004 12:21:35
Oprette en relation 3 Træk Postnummer fra tabellen Instruktører over på Postnummer i tabellen postnumre http://web-uv.acu-vejle.dk/databasekursus/opret_database/relation/3.htm22-10-2004 12:21:35
Oprette en relation 4 Herved åbner dialogen Rediger relationer Afmærk Gennemtving referentiel integritet Hermed sikres at instruktører kun kan tildeles postnumre som findes i tabellen postnumre Bemærk relationstype: En-til-mange Det betyder at et postnummer i tabellen postnumre kan relatere til mange postnumre i tabellen Instruktører Tryk Opret http://web-uv.acu-vejle.dk/databasekursus/opret_database/relation/4.htm22-10-2004 12:21:35
Oprette en relation 5 I vinduet relationer ses en grafisk illustration af relationen. Bemærk at 1-siden af relationen peger på den primære nøgle i den stærke tabel, mens mange-siden peger på det tilsvarende felt i den svagere tabel. http://web-uv.acu-vejle.dk/databasekursus/opret_database/relation/5.htm22-10-2004 12:21:36
Oprette en relation 6 Træk KursusID fra tabellen Kurser over på KursusNr i tabellen Tilmeldinger Afmærk Gennemtving referentiel integritet Træk ID fra tabellen Instruktører over på InstruktørID i tabellen Kurser Afmærk Gennemtving referentiel integritet Luk boksen Relationer og Vælg Gem Ved hjælp af relationen er vi nu i stand til at oprette en forespørgsel. http://web-uv.acu-vejle.dk/databasekursus/opret_database/relation/6.htm22-10-2004 12:21:36
Oprette en forespørgsel 1 Forespørgslen oprettes vha. en guide Vælg objektet Forespørgsel i databasevinduet (1) Dobbeltklik på Opret en forespørgsel vha. en guide 2 Herved åbner Guiden Simpel forespørgsel Vælg tabellen Kurser under Tabeller/ forespørgsel (2) Tryk http://web-uv.acu-vejle.dk/databasekursus/opret_database/foresporgsel/6.htm22-10-2004 12:23:55
Oprette en forespørgsel 2 Vælg tabellen Tilmeldinger under Tabeller/ forespørgsel Overfør alle felter på nær TilmeldID Vælg tabellen Instruktører Overfør felterne Fornavn og Efternavn Vælg tabellen Postnumre Overfør feltet By Tryk Næste Tryk Næste i næste trin i guiden Navngiv forespørgslen Tilmeld FS Tryk Udfør Luk forespørgslen http://web-uv.acu-vejle.dk/databasekursus/opret_database/foresporgsel/7.htm22-10-2004 12:23:56
Oprette en forespørgsel 3 Højreklik i databasevinduet på forespørgslen Tilmeld FS Vælg Designvisning i genvejsmenuen Arranger tabellerne som vist øverst http://web-uv.acu-vejle.dk/databasekursus/opret_database/foresporgsel/8.htm22-10-2004 12:23:56
Oprette en forespørgsel 4 Få figuren overfor er forespørgselsvinduet opdelt i to. Hvis kolonnerne ikke står i den rigtige rækkefølge kan du ændre dem så de står i en logisk rækkefølge: Markér kolonnerne Fornavn og Efternavn fra Instruktører og træk dem hen efter kursusnummer Træk tilsvarende By på plads så den kommer til at står efter Postnummer Afmærk Sorter: Stigende under Dato Fjern Flueben for KursusID fra tabellen Kurser (her er en gentaget oplysning) Gem forespørgslen Luk forespørgslen http://web-uv.acu-vejle.dk/databasekursus/opret_database/foresporgsel/9.htm22-10-2004 12:23:57
Oprette en forespørgsel 5 Opret på samme måde en forespørgsel (Kurser FS), der sammenkæder tabellen Kurser og tabellen Instruktører. Forespørgslen skal have designet som vist herunder, Sortering: Dato= Stigende og Kriterier: Dato > Now() http://web-uv.acu-vejle.dk/databasekursus/opret_database/foresporgsel/10.htm22-10-2004 12:23:57
Oprette en formular Formularen oprettes vha. en guide 1 Vælg objektet Formularer i databasevinduet (1) Dobbeltklik på Opret en forespørgsel vha. en guide Herved åbner Guiden Simpel forespørgsel Vælg forespørgslen Tilmeld FS under Tabeller/ forespørgsel (2) Tryk Tryk Næste og afmærk således 2 Tryk Udfør http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/1.htm22-10-2004 12:25:21
Oprette en formular 2 Nu fremkommer en formular der kan se således ud. Prøv at bladre i formularen med de små listepile nederst. Inden formularen skal anvendes skal den rettes lidt til. Højreklik i formularen og vælg Formulardesign http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/2.htm22-10-2004 12:25:22
Oprette en formular 3 Her ses formularens design: Man kan redigere eller slette etiketterne og flytte felterne rundt i gitteret Når man klikker i en etikette markeres den. Når man klikker endnu en gang inde i etiketten kan den redigeres. http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/3.htm22-10-2004 12:25:23
Oprette en formular 4 Når man trækker et af markeringspunkterne kan objektets størrelse ændres Når man trykker musen ned og holder den nede i et felt der ikke er markeret i forvejen kan det flyttes. Under menuen Formater findes nogle nyttige redskaber til formularens design (se fig. til højre) http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/4.htm22-10-2004 12:25:23
Oprette en formular 5 Rediger formularen så de kommer til at ligne eksemplet til højre Tryk Gem Tryk Visning i værktøjslinien menuen Filer Afprøv formularen ved http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/5.htm22-10-2004 12:25:23
Oprette en formular 6 Felterne under kursus er alene bestem af kursusnummeret og må derfor ikke kunne ændres i formularen Højreklik i formularen og vælg Formulardesign Højreklik i Feltet Kursusnavn Vælg Egenskaber i genvejsmenuen K Låst Ja i boksen Sammensat område Lås på tilsvarende måde felterne By, Kategori, Beskrivelse, Fornavn, Efternavn, Dato og Sted Tryk Visning i værktøjslinien menuen Filer http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/6.htm22-10-2004 12:25:24
Oprette en formular 7 Afprøv formularen: Tryk næste post - bemærk hvorledes tabellerne relaterer til hinanden Opret en ny post og indtast fiktive data http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/7.htm22-10-2004 12:25:24
Oprette en formular 8 I værktøjslinien formulardesign findes en Kommando knap Højreklik i formularen og vælg Formulardesign Tryk Kommandoknap - markøren laves om til en kryds med et knapsymbol Træk en firkant et bart sted i gitteret http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/8.htm22-10-2004 12:25:25
Oprette en formular 9 Tryk Visning i værktøjslinien menuen Filer Vælg Postnavigation og Søg efter post i Guiden Kommandoknap Tryk udfør Gem Vælg formularvisning Afprøv den ny knap Indsæt på tilsvarende måde en knap der sletter den aktuelle post Ekstra opgave Opret formularer der kan bruges til oprettelse af kurser og til vedligeholdelse af et intruktørkartotek http://web-uv.acu-vejle.dk/databasekursus/opret_database/formular/9.htm22-10-2004 12:25:25