Databaser og regneark

Det er troligt at du allerede har benyttet regneark såsom Kspread, OpenOffice.org Calc eller Microsoft Excel. Hvis du har gjort det, undrer du dig nok: eftersom både regneark og databaser har tabeller, hvorfor skal jeg bruge de sidste?

Ved sammenligning af regneark og databaser kan du støde på følgende emner som du senere vil få at se mere detaljeret:

Hvordan adskiller en database sig fra et regneark?

Udvid gradvis tabellen Kontakter ved at tilføje en søjle (et felt) Adresse, så den overskrider kapaciteten hos en mobiltelefon. Tilføj flerr telefonnumre (kontor, hjem) for hver person og tilføj efternavn til navnene. For at gøre det enklere antager vi følgende:

  • tabellen er begrænset til to personer (åbenbart kan der være hundredvis eller tusindvis i en rigtig database)

  • at der ikke findes to personer med samme for- og efternavn

Kontakttabel

For- og efternavnTlfAdresse
Anna Stricker699 23 43 12Vesterport 1, Helsingør
Emil Pedersen711 19 77 21Odense, Madsensvej 15
Anna Stricker10 98 98 00Vesterport 1
Stricker, Anna12 43 42 22Helsingør, Væsterport 1
EMIL Pedersen31 83 02 04Madsensvej 15, Odense

En sådan tabel kan både laves i et regneark og i en database. Det er naturligvis meget enkelt at bruge et regneark. Hvilke problem støder man på i dette stadie?

Datahenvisningsintegritet

Antag at du bruger et regneark og skal ændre adressen for mindst en person. Du har et lille problem: du skal ofte ændre adressen på flere linjer. Anna bruger for eksempel tre linjer. Et rigtigt problem opstår hvis du glemmer at ændre en af de tre linjer: adressen som hører sammen med personen bliver tvetydig, så på den måde går dataintegriteten tabt.

Derudover er det ingen enkelt måde at fjerne en valgt person fra tabellen, eftersom du skal huske at fjerne alle linjer som hører sammen med ham eller hende.

Dataredundans

Dette hører direkte sammen med foregående problem. I felterne For- og efternavn samt Adresse skrives samme data ind mange gange. Dette er typisk i regneark, og er en ineffektiv måde at opbevare data eftersom databasen vokser unødigt, og på den måde kræver flere maskineressourcer (større datastørrelse og langsommere adgang).

Hvordan kan du løse disse problemer med en database? Du kan dele information i mindre dele ved at oprette en yderligere tabel Personer med kun to søjler: For- og efternavn samt Adresse:

Persontabel

For- og efternavnAdresse
Anna StrickerVesterport 1, Helsingør
Emil PedersenMadsensvej 15, Odense

Hver linje i tabellen Personer svarer til en enkelt person. Tabellen Kontakter er fra og med nu i en relation til tabellen Personer (se næste paragraf).

Dataintegritet og gyldighed

Bemærk måden som data skrives ind i felterne For- og efternavn samt Adresse. De som skriver data ind kan lave fejl, eller sommetider til og med være sløsede. I vor eksempeldata har vi både forskellige rækkefølge når for- og efternavn skrives ind (Anna Stricker og Stricker, Anna, Emil og EMIL) og endnu flere måder at indtaste samme adresse. Du kan sikkert tænke dig mange andre varianter.

Ovenstående problem viser at ved søgning efter telefonnummeret til en person hvis adresse for eksempel er "Vesterport 1, Helsingør" får du ikke et fuldstændigt resultat. Du får kun en linje i stedet for tre. Desuden finder du heller ikke alle telefonnumre ved søgning efter værdien "Anna Stricker" i feltet For- og efternavn, eftersom "Stricker, Anna" ikke stemmer overens med "Anna Stricker".

Hvordan kan man løse disse problemer ved at bruge en database? Du kan gøre dette ved at ændre design af tabellen Personer ved at:

  1. Opdele data i feltet For- og efternavn i to separate felter: Fornavn og Efternavn.

  2. Opdele data i feltet Adresse i tre separate felter: Gade, Husnummer og By.

  3. Garantere at data er rigtig: ved at sikre dig at ingen felter er tomme, f.eks. skal husnummeret altid skrives ind.

En ændret tabel ser ud cirka sådan her:

Persontabel

NavnEfternavnGadeHusnummerBy
AnnaStrickerVesterport1Odense
EmilPedersenMadsensvej15Odense
Betingelser
krævet feltkrævet feltkrævet feltkrævet feltkrævet felt

På grund af at betingelser nødvendigt felt er introduceret kan vi være sikre på at indskrevne data er fuldstændige. I tilfælde af andre tabeller kan man naturligvis fortsætte med at udelukke visse felter når data skrives ind.

Begrænset datavisning

Regneark viser alle rækker og søjler i tabellen, hvilket er besværligt i tilfælde af meget store datamængder. Du kan naturligvis filtrere og sortere rækker i regneark, men du skal være ekstra forsigtig når du gør det. Brugere af regneark løber risikoen for at glemme at datavisningen er filtreret, hvilket kan forårsage fejl. Når du beregner summer, tror du måske at du har 100 rækker med data, mens der i virkeligheden er yderligere 20 skjulte rækker.

Hvis du vil arbejde med en lille delmængde af data, f.eks. for at sende dem til andre for redigering, kan du kopiere og indsætte i et andet regneark og efter redigering indsætte ændrede data i hovedregnearket. Sådan "manuel" redigering kan forårsage datatab eller fejlagtiga beregninger.

For at begrænse datavisningen tilbyder databaseprogrammer forespørgsler, formularer og rapporter.

En meget praktisk måde at begrænse på er følgende udvidede version af tabellen Personer som tidligere beskrevet:

Persontabel

NavnEfternavnGadeHusnummerByIndkomst
AnnaStrickerVesterport1Odense23 000
EmilPedersenMadsensvej15Odense19 000

Lad os antage at den nys tilføjede søjle Indkomst indeholder fortrolige data. Hvordan kan du for eksempel dele personernes kontaktinformation med arbejdskolleger uden at afsløre deres indkomst? Dette er muligt hvis du kun deler en forespørgsel og ikke hele tabellen. Forespørgslen kunne vælge alle søjler undtagen søjlen Indkomst. I databaseverdenen er en sådan forespørgsel ofte kendt som en visning.

Ydelse og kapacitet

Din maskine er formodentlig ret hurtig, men du mærker let at dette ikke er nok med langsomme, store regneark. Deres lave effektivitet skyldes først og fremmest manglende af indeks som gør datasøgningsprocessen hurtigere (databaser tilbyder dem). Hvis du desuden bruger ting såsom systemets klippebord, kan til og med kopiering af data blive besværlig med tiden.

Regneark som indeholder store datamængder kan tage enorm tid at åbne. Regneark indlæser mængder med data i maskinens hukommelse når de åbnes. Det meste data som indlæses er for formodentlig unyttigt indtil videre eller ikke nødvendigt for dig. I modsætning til regneark indlæser databaser kun data fra maskinens lagringsmedier når de behøves.

I de fleste tilfælde behøver du ikke bekymre dig om hvordan databasen opbevarer sine data. Dette betyder at i modsætning til regneark, er databaser ligeglade med:

  • Sekvensen af rækker, eftersom du kan ordne rækker efter dine behov. Desuden kan du kigge på samme data i mange visninger med forskellige rækkefølge.

  • Det samme gælder for søjler (felter) i tabellen.

Sammen med Begrænset datavisning beskrevet i foregående paragraf, udgør disse kvaliteter fordelene ved databaser.

Dataindtastning

De seneste udgaver af programmer til at oprette regneark gør det muligt for dig at oprette dataindtastningsformularer. Sådanne formularer er mest nyttige hvis data ikke kan vises bekvemt i en tabelvisning, f.eks. hvis teksten optager for mange linjer eller hvis alle søjler ikke får plads på skærmen.

I dette tilfælde er selve måden som regneark fungerer problematisk. Felter for dataindtastning placeres frit inde i regnearket og er oftest ikke sikrede mod brugerens indgriben (med vilje eller af fejl).

Rapporter

Databaser muliggør gruppering, begrænsning og opsummering af data i form af en rapport. Regneark skrives ofte ud i form af små tabeller uden fuldstændig automatisk styring af sidebrud og layout af felter.

Programmering

Programmer til at oprette databaser indeholder ofte fuldstændige programmeringssprog. Nyere regneark har også den mulighed, men alligevel består beregninger i at ændre regnearkets felter og enkel datakopiering, uafhængig af relevans og integritetsregler som nævnt i foregående paragraf.

Databehandling i et regneark gøres ofte via en grafisk brugergrænseflade, som kan gøre databehandlingens hastighed langsommere. Databaser har mulighed for at arbejde i baggrunden, udenfor den grafiske grænseflade.

Flere brugere

Det er svært at forestille sig flere brugere af et regneark. Selvom det er teknisk muligt med de seneste programmer, kræver det meget disciplin, opmærksomhed og kundskab af brugerne, og det kan ikke altid garanteres.

En klassisk måde at dele data som er gemt i et regneark med andre er at sende filen i sin helhed (oftest med e-mail) eller sørge for en fil med et regneark i et maskinenetværk. Denne måde at arbejde er ineffektiv for større grupper: data som kan behøves et bestemt øjeblik kan for øjeblikket være låst af en anden.

På den anden side er databaser i hovedsagen konstrueret med adgang af flere brugere fra begyndelsen. Til og med i de aller enkleste versioner er det muligt at låse på niveau af en bestemt tabelrække, hvilket gør det muligt let at dele data.

Sikkerhed

At sikre et regneark eller dets forskellige dele med et kodeord er kun en symbolsk aktivitet. Efter en fil med regnearket er sørget for i et maskinenetværk, kan hvem som helst som kan kopiere filen forsøge at knække kodeordet. Det er sommetider ikke så svært eftersom kodeordet opbevares i samme fil som regnearket.

Funktioner for at låse ved redigering eller kopiering af et regneark (eller en del af det) er lige så enkle at knække.

Databaser (undtagen dem som opbevares i en fil i stedet for på en server) behøver ikke at være tilgængelige i en enkelt fil. Du kommer til dem via et maskinenetværk, oftest ved at sørge for et brugernavn og kodeord. Du får kun adgang til de områder (tabeller, formularer og til og med udvalgte rækker og søjler) som blev tildelt dig ved at indstille passende adgangsrettigheder.

Adgangsrettigheder kan påvirke muligheden for at redigere data, eller mulighed til kun at læse data. Hvis noget data ikke er tilgængelig for dig, sendes det ikke engang til din maskine, så der er ingen mulighed for at lave en kopi af data på en så enkel måde som for filer i et regneark.