Noget om databaser

Databaser kan i mine øjne ikke besynges højt nok. De er den perfekte opbevaringsplads for de fundamentale data til et websted. Det her handler om hvad de er og hvordan de virker.

Oversigt <

Denne artikel var oprindeligt et oplæg til CFJE's diplomuddannelse 2001.
Oversigt over alt materialet

Hvad det er <

En database er ikke andet end en struktureret samling information. Din computer har en håndfuld databaser allerede, hvoraf filsystemet er det bedste eksempel. Filsystemet er med sine filer, mapper, oversigter, søgesystemer og så videre et godt eksempel på, hvordan data kan opbevares i en struktur, der gør dem nemmere at have med at gøre og samtidig stiller dem til rådighed for andre processer, for eksempel tekstbehandlingsprogrammet eller kopieringsfunktionen. Andre databaser kan være OutLooks adressebog, en oversigt over musik-cd'er, som du spiller på computeren eller andet. Dette er alle eksempler på ganske primitive databaser, men alligevel.

En avanceret database har nogle særlige faciliteter:

  • Den kan opbevare mange former for data i såkaldte felter, der samles i knolde kaldet records
  • Records samles i tabeller eller skemaer, som egentlig er den rette oversættelse af tables.
  • Der kan være sammenhænge — relationer — mellem elementer i databasen, hvilket gør koordination af data nemmere
  • Data kan indekseres, hvilket gør søgningen i dem lettere og hurtigere
  • Databasen har normalt nogle indbyggede egenskaber, som gør den til et sikkert og effektivt sted at opbevare information

Disse punkter er alle en del af databaseprogrammet, og behøver altså normalt ikke kodes af nogen i forbindelse med opbygningen af for eksempel et websted.

Hvordan de virker <

Vi ser på data i databaserne ved at lave udtræk af dem. Man behøver nemlig ikke at se på alle data på en gang, og man behøver heller ikke gøre det på en bestemt måde.
Udtrækkene bestilles normalt af et program, som ikke nødvendigvis er selve databasen. Det kan for eksempel være et regneark, et bogholderiprogram eller et script, der skal lave en webside.
Bestillingen modtages af databasen, som kvitterer med et resultat. Sådan en bestilling kan for eksempel se således ud:

SELECT navn FROM adresseliste WHERE postnummer

Denne forespørgsel er i databasesproget SQL, og henter oplysninger om personer, der bor i indre København og på Frederiksberg i en tabel som hedder adresseliste forventes at rumme i hvert fald to oplysninger om hver person, nemlig navn og postnummer. Et mere relevant eksempel kunne være:

SELECT rubrik, manchet FROM artikler WHERE forfatter='Martin Jørgensen' SORT BY dato_publiceret

Altså: hent rubrik og manchet fra mine artikler i kronologisk rækkefølge. Hvis nu jeg tilføjede DESC (descending) ville jeg få dem i omvendt kronologisk rækkefølge ligesom jeg selvfølgelig kunne vælge en anden forfatter eller helt udelade kravet om en bestemt forfatter og få alle artikler.

Dette eksempel illustrerer netop hvordan de samme data kan trækkes frem på mange måder, og dermed ikke blot danne én webside, men mange forskellige.

Hvis man skal bruge en database på web skal man binde det sammen med et såkaldt scriptsprog som ASP, PHP eller CGI eller et system som Lotus Notes, der rummer sit eget sprog og sine egne faciliteter. Heri beskriver man hvordan data skal hentes og hvordan resultaterne skal skrives på brugerens skærm i HTML.

Hvori fordelene består <

Fordelene er altså at man kan danne mange forskellige sider ud fra de samme data, og at siderne ændrer sig, når data ændres. Det vil sige at siden med 20 navne i en liste kommer til at rumme 30, når man tilføjer 10. Uden yderligere tilføjelser. Den kan også sorteres og vises i større eller mindre portioner uden at der skal ændres ved koden. Det vil sige at én basisside kan blive til mange websider.

I et artikelsystem kunne man forestille sig, at man havde et par felter der hed skjult og publiceres_den. Her kunne man lade scriptet hente de artikler, der ikke var skjult og hvis publiceringsdato var overskredet. På denne måde kunne man altså nemt fjerne en artikel — klikke den på skjult — og have artikler liggende klar i en pipeline, så de blev publiceret efterhånden, som deres dato blev nået. De første er smart, når man finder en graverende fejl, og gerne vil fjerne artikler midlertidigt. Det sidste kunne være praktisk, hvis man var væk et par dage, men danner faktisk fundamentet for mange af de helt store systemer.

Databaserne har yderligere fordele. De er så at sige intelligente lagrer, hvor man kan gemme data, men samtidig forvente, at databasen selv gør noget arbejde for én. På den banale side kan en database for eksempel genkende lovlige datoer, og indstilles til ikke at tillade ulovlige kalenderdage. I den mere avancerede ende kan en database sikre integriteten i data. Lad os for eksempel antage at en bruger skal se på en artikel, der skal betales for. Brugeren taster sine oplysninger ind, systemet godkender brugeren, beløbet debiteres brugerens konto, og siden vises. Men hvad nu hvis siden, der skal vises, er lås af en journalist, så den ikke kan ses? Så har beugeren betalt, men ser ikke artiklen. Den gode database kan så selv tilbegføre systemet, så betalingen ikke længere trækkes. Det programmeres simpelthen ind i systemet.

Træerne vokser selvfølgelig ikke ind i himlen, med mindre man ofrer rigtigt mange ressourcer på udviklingsarbejdet. Det er ikke nogen triviel opgave at lave et databasebaseret system. Og det er ikke noget man som journalist bør kaste sig over med mindre man har en stor nørd gemt inden i — og masser af tid!

Hvilke systemer der findes <

Der findes en række forskellige typer af databaser og en række forskellige producenter. Mange kender sikkert Microsoft Access og Lotus Notes som begge er databaser. De bruger hver deres ikke-standardiserede og meget forskellige format.

SQL-databaser er en familie af databaser fra mange forskellige producenter, der alle (stort set) overholder SQL-standarden. Producenterne tæller Microsoft, Oracle, MySQL og mange andre. SQL har den fordel at det er en anerkendt standard, der har eksisteret i mange år, og er i mine øjne det sikre bud på en database. Hvem der fremstiller den database, man vælger, er et spørgsmål om præferencer og penge.

Hvor meget man bør vide om databaser <

Som journalist bør man vide cirka så meget som står her. Et begrænset kendskab er OK, blot man forstår principperne og ved at man kan stille krav. Hvis man vil sætte sig yderligere ind i databaser, så er der masser af introduktioner på nettet. Søg efter "introduction relational databases", så skulle der være en chance. Der er ikke rigtigt noget på dansk.

Vi sælger skamløst viden og assistance vedrørende