<!--
  <!DOCTYPE appendix PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd">
-->

<appendix id="database">
<title
>Introduktion till databaser</title>

<sect1 id="what-is-a-database">
<title
>Vad är en databas?</title>
<para
>Man kan definiera en databas som en samling data om ett ämne. Den är organiserad på ett sätt som gör det möjligt att enkelt bläddra bland informationen, göra ändringar eller lägga till ny data. </para>
<para
>Titta på diagrammet för ett av de ovanstående exemplen: en enkel telefonkatalog. </para>
<screenshot>
  <screeninfo
>Ett diagram av en databas med telefonnummer</screeninfo>
    <mediaobject>
        <imageobject>
            <imagedata fileref="contact-example.png" format="PNG"/>
        </imageobject>
        <textobject>
            <phrase
>Ett diagram av en databas med telefonnummer</phrase>
        </textobject>
    </mediaobject>
</screenshot>
<para
>Bilden ovan visar en uppsättning med två kontakter, där var och en visas på ett separat kort. Det verkar som ett sådan kort kan utgöra en enstaka rad i en tabell: </para>

<para
><emphasis
>Tabellen <guilabel
>Kontakter</guilabel
></emphasis
></para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><guilabel
>Namn</guilabel
></entry>
<entry
><guilabel
>Tel nr.</guilabel
></entry>
</row>
<row>
<entry
>Anna</entry>
<entry
>699 23 43 12</entry>
</row>
<row>
<entry
>Stefan</entry>
<entry
>711 19 77 21</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
><emphasis
>Termer och definitioner</emphasis
>: Ett ensamt dataobjekt som utgör en del av en större samling kan kallas en <firstterm
>rad</firstterm
>, eller mer professionellt en <firstterm
>post</firstterm
>. Samlingen kallas normalt en <firstterm
>tabell</firstterm
>. Dessutom är det mest naturliga namnet på tabellen det som beskriver data som den erbjuder/lagrar, vilket är <guilabel
>Kontakter</guilabel
>. Förutom detta, består varje rad i tabellen av <firstterm
>kolumner</firstterm
> som ofta också kallas <firstterm
>fält</firstterm
>. Det finns två kolumner (fält) i tabellen <guilabel
>Kontakter</guilabel
>: <guilabel
>Namn</guilabel
> och <guilabel
>Tel nr.</guilabel
>. </para>
<para
>För enkla användningar kan en enda tabell utgöra en <firstterm
>databas</firstterm
>. Många anser de båda ekvivalenta. Som du kommer att se, behövs det oftast mer än en tabell i riktiga databaser. </para>
<para
>För att summera, har du redan en enkel databas med en tabell, <guilabel
>Kontakter</guilabel
>. </para>
</sect1>


<sect1 id="database-and-spreadsheet">
<title
>Databaser och kalkylblad</title>
<para
>Det är troligt att du redan har använd kalkylprogram som Kspread, OpenOffice.org Calc eller Microsoft Excel. Om du har gjort det, undrar du nog: eftersom både kalkylblad och databaser har tabeller, varför ska jag använda de senare? </para>
<para
>Vid jämförelse av kalkylblad och databaser kan du stöta på följande saker som du senare kommer att se mer detaljerat: </para>
<itemizedlist>
<listitem
><para
><link linkend="referential-data-integrity"
>Datahänvisningsintegritet</link
></para
></listitem>
<listitem
><para
><link linkend="data-redundyncy"
>Dataredundans</link>
</para
></listitem>
<listitem
><para
><link linkend="data-integrity-and-validity"
>Dataintegritet och giltighet</link
></para
></listitem>
<listitem
><para
><link linkend="data-limiting"
>Begränsad datavisning</link
></para
></listitem>
<listitem
><para
><link linkend="performance-and-capacity"
>Prestanda och kapacitet</link
></para
></listitem>
<listitem
><para
><link linkend="convenient-data-entry"
>Bekväm inmatning av data</link
></para
></listitem>
<listitem
><para
><link linkend="reports"
>Rapporter</link
></para
></listitem>
<listitem
><para
><link linkend="programming"
>Programmering</link
></para
></listitem>
<listitem
><para
><link linkend="multiuse"
>Flera användare</link
></para
></listitem>
<listitem
><para
><link linkend="security"
>Säkerhet</link
></para
></listitem>
</itemizedlist>

<sect2 id="difference-database-and-spreadsheet">
<title
>Hur skiljer sig en databas från ett kalkylblad?</title>

<para
>Utöka tabellen <guilabel
>Kontakter</guilabel
> genom att lägga till en kolumn (ett fält) <guilabel
>Adress</guilabel
>, så att den gradvis överskrider kapaciteteten hos en mobiltelefon. Lägg till fler telefonnummer (kontor, hem) för varje person och lägg till efternamn till namnen. För att göra det enklare antar vi följande: </para>
<itemizedlist>
<listitem
><para
>tabellen är begränsad till två personer (uppenbarligen kan det finnas hundratals eller tusentals i en riktig databas)</para
></listitem>
<listitem
><para
>att det inte finns två personer med samma för- och efternamn</para>
</listitem>
</itemizedlist>
<para
><emphasis
>Kontakttabell</emphasis
></para>
<informaltable>
<tgroup cols="3">
<tbody>
<row>
<entry
><emphasis
>För- och efternamn</emphasis
></entry>
<entry
><emphasis
>Tel</emphasis
></entry>
<entry
><emphasis
>Adress</emphasis
></entry>
</row>
<row>
<entry
>Anna Johansson</entry>
<entry
>699 23 43 12</entry>
<entry
>Västerport 1, Grönköping</entry>
</row>
<row>
<entry
>Stefan Andersson</entry>
<entry
>711 19 77 21</entry>
<entry
>Wadköping, Klockargränd 5</entry>
</row>
<row>
<entry
>Anna Johansson</entry>
<entry
>110 98 98 00</entry>
<entry
>Västerport 1</entry>
</row>
<row>
<entry
>Johansson, Anna</entry>
<entry
>312 43 42 22</entry>
<entry
>Grönköping, Västerport 1</entry>
</row>
<row>
<entry
>STEFAN Andersson</entry>
<entry
>231 83 02 04</entry>
<entry
>Klockargränd 5, Wadköping</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>En sådan tabell kan både skapas i ett kalkylblad och i en databas. Det är förstås mycket enkelt att använda ett kalkylblad. Vilka problem stöter man på i detta stadium? </para>

<sect3 id="referential-data-integrity">
<title
>Datahänvisningsintegritet</title>
<para
>Antag att du använder ett kalkylblad och måste ändra adressen för minst en person. Du har ett litet problem: du måste ofta ändra adressen på flera rader. Anna använder till exempel tre rader. Ett riktigt problem uppstår om du glömmer att ändra en av de tre raderna: adressen som hör ihop med personen blir <emphasis
>tvetydig</emphasis
>, på så sätt går <emphasis
>dataintegriteten</emphasis
> förlorad. </para>
<para
>Förutom det finns det inget enkelt sätt att ta bort en vald person från tabellen, eftersom du måste komma ihåg att ta bort alla rader som hör ihop med honom eller henne. </para>
</sect3>


<sect3 id="data-redundyncy">
<title
>Dataredundans</title>
<para
>Det hör direkt ihop med föregående problem. I fälten <guilabel
>För- och efternamn</guilabel
> samt <guilabel
>Adress</guilabel
> skrivs samma data in många gånger. Det är typiskt i kalkylblad, och ett ineffektivt sätt att lagra data eftersom databasen växer i onödan, och kräver på så sätt mer datorresurser (större datastorlek och långsammare åtkomst). </para>
<para
>Hur kan du lösa problemen med en databas? Du kan dela information i mindre bitar genom att skapa ytterligare en tabell <emphasis
>Personer</emphasis
> med bara två kolumner: <guilabel
>För- och efternamn</guilabel
> samt <guilabel
>Adress</guilabel
>: </para>

<para
><emphasis
>Tabellen <guilabel
>Personer</guilabel
></emphasis
></para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><emphasis
>För- och efternamn</emphasis
></entry>
<entry
><emphasis
>Adress</emphasis
></entry>
</row>
<row>
<entry
>Anna Johansson</entry>
<entry
>Västerport 1, Grönköping</entry>
</row>
<row>
<entry
>Stefan Andersson</entry>
<entry
>Klockargränd 5, Wadköping</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Varje rad i tabellen <guilabel
>Personer</guilabel
> motsvarar en <emphasis
>enda person</emphasis
>. Tabellen <guilabel
>Kontakter</guilabel
> är från och med nu i en relation till tabellen <guilabel
>Personer</guilabel
>. </para>

</sect3>

<sect3 id="data-integrity-and-validity">
<title
>Dataintegritet och giltighet</title>
<para
>Observera sättet som data skrivs in i fälten <guilabel
>För- och efternamn</guilabel
> samt <guilabel
>Adress</guilabel
>. De som skriver in data kan göra misstag, eller ibland till och med vara vårdslösa. I vår exempeldata har vi både olika ordning när för- och efternamn skrivs in (Anna Johansson och Johansson, Anna, Stefan och STEFAN) och ännu fler sätt att skriva in samma adress. Du kan säkert tänka dig många andra varianter. </para>
<para
>Ovanstående problem visar att vid sökning efter telefonnumret till en person vars adress till exempel är "Västerport 1, Grönköping" får du inte ett fullständigt resultat. Du får bara en rad istället för tre. Dessutom hittar du heller inte alla telefonnummer vid sökning efter värdet "Anna Johansson" i fältet <guilabel
>För- och efternamn</guilabel
>, eftersom "Johansson, Anna" inte stämmer med "Anna Johansson". </para>
<para
>Hur kan man lösa problemen genom att använda en databas? Det går att göra genom att ändra konstruktion av tabellen <guilabel
>Personer</guilabel
> för att: </para>
<orderedlist>
<listitem
><para
><emphasis
>Dela upp data</emphasis
> i fältet <guilabel
>För- och efternamn</guilabel
> i två separata fält: <guilabel
>Förnamn</guilabel
> och <guilabel
>Efternamn</guilabel
>. </para
></listitem>
<listitem
><para
><emphasis
>Dela upp data</emphasis
> i fältet <guilabel
>Adress</guilabel
> i tre separata fält: <guilabel
>Gatuadress</guilabel
>, <guilabel
>Gatunummer</guilabel
> och <guilabel
>Postort</guilabel
>. </para
></listitem>
<listitem
><para
><emphasis
>Garantera att data är riktig:</emphasis
> genom att försäkra dig om att inga fält är tomma, t.ex. måste alltid gatunummer skrivas in. </para
></listitem>
</orderedlist>

<para
>En ändrad tabell ser ut ungefär så här: </para>

<para
><emphasis
>Persontabell</emphasis
></para>
<informaltable>
<tgroup cols="5">
<colspec colnum="1" colname="c1"
></colspec>
<colspec colnum="2" colname="c2"
></colspec>
<colspec colnum="3" colname="c3"
></colspec>
<colspec colnum="4" colname="c4"
></colspec>
<colspec colnum="5" colname="c5"
></colspec>
<tbody>
<row>
<entry
><emphasis
>Namn</emphasis
></entry>
<entry
><emphasis
>Efternamn</emphasis
></entry>
<entry
><emphasis
>Gatuadress</emphasis
></entry>
<entry
><emphasis
>Gatunummer</emphasis
></entry>
<entry
><emphasis
>Postort</emphasis
></entry>
</row>
<row>
<entry
>Anna</entry>
<entry
>Johansson</entry>
<entry
>Västerport</entry>
<entry
>1</entry>
<entry
>Grönköping</entry>
</row>
<row>
<entry
>Stefan</entry>
<entry
>Andersson</entry>
<entry
>Klockargränd</entry>
<entry
>5</entry>
<entry
>Wadköping</entry>
</row>
<row>
<entry namest="c1" nameend="c5"
><emphasis
>Villkor</emphasis
></entry>
</row>
<row>
<entry
>nödvändigt fält</entry>
<entry
>nödvändigt fält</entry>
<entry
>nödvändigt fält</entry>
<entry
>nödvändigt fält</entry>
<entry
>nödvändigt fält</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>På grund av att villkoret <guilabel
>nödvändigt fält</guilabel
> introducerades kan vi vara säkra på att inskriven data är fullständig. I fallet med andra tabeller kan man förstås fortsätta att utesluta vissa fält när data skrivs in. </para>

</sect3>

<sect3 id="data-limiting">
<title
>Begränsad datavisning</title>
<para
>Kalkylblad visar alla rader och kolumner i tabellen, vilket är besvärligt i fallet med mycket stora datamängder. Du kan förstås filtrera och sortera rader i kalkylblad, men du måste vara extra försiktig när du gör det. Användare av kalkylblad löper risk att glömma att datavyn har filtrerats, vilket kan orsaka misstag. När du beräknar summor, kanske du tror att du har 100 rader med data, medan det i själva verket finns ytterligare 20 dolda rader. </para>
<para
>Om du vill arbeta med en liten delmängd av data, t.ex. för att skicka den till andra för redigering, kan du kopiera och klistra in i ett annat kalkylblad och efter redigering klistra in ändrad data tillbaka i huvudkalkylbladet. Sådan "manuell" redigering kan orsaka dataförlust eller felaktiga beräkningar. </para>
<para
>För att begränsa <emphasis
>datavyn</emphasis
> erbjuder databasprogram <emphasis
>förfrågningar</emphasis
>, <emphasis
>formulär</emphasis
> och <emphasis
>rapporter</emphasis
>. </para>
<para
>Ett mycket praktiskt sätt att begränsa är följande utökade version av tabellen <guilabel
>Personer</guilabel
> som tidigare beskrivits: </para>

<para
><emphasis
>Persontabell</emphasis
></para>
<informaltable>
<tgroup cols="6">
<tbody>
<row>
<entry
><emphasis
>Namn</emphasis
></entry>
<entry
><emphasis
>Efternamn</emphasis
></entry>
<entry
><emphasis
>Gatuadress</emphasis
></entry>
<entry
><emphasis
>Gatunummer</emphasis
></entry>
<entry
><emphasis
>Postort</emphasis
></entry>
<entry
><emphasis
>Inkomst</emphasis
></entry>
</row>
<row>
<entry
>Anna</entry>
<entry
>Johansson</entry>
<entry
>Västerport</entry>
<entry
>1</entry>
<entry
>Grönköping</entry>
<entry
>23 000</entry>
</row>
<row>
<entry
>Stefan</entry>
<entry
>Andersson</entry>
<entry
>Klockargränd</entry>
<entry
>5</entry>
<entry
>Wadköping</entry>
<entry
>19 000</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Låt oss anta att den nytillagda kolumnen <guilabel
>Inkomst</guilabel
> innehåller konfidentiell data. Hur kan du till exempel dela personernas kontaktinformation med arbetskollegor utan att <emphasis
>avslöja deras inkomst</emphasis
>? Det är möjligt om <emphasis
>du bara delar en förfrågan och inte hela tabellen</emphasis
>. Förfrågan kunde välja alla kolumner utom kolumnen <guilabel
>Inkomst</guilabel
>. I databasvärlden är en sådan förfrågan ofta känd som en <guilabel
>vy</guilabel
>. </para>

</sect3>

<sect3 id="performance-and-capacity">
<title
>Prestanda och kapacitet</title>
<para
>Din dator är troligen rätt snabb, men du märker lätt att det inte hjälper med långsamma, stora kalkylblad. Deras låga effektivitet beror först av allt på avsaknaden av index som snabbar upp datasökningsprocessen (databaser erbjuder dem). Om du dessutom använder saker som systemets klippbord, kan till och med kopiering av data bli besvärlig med tiden. </para>
<para
>Kalkylblad som innehåller stora datamängder kan ta enorm tid att öppna. Kalkylblad laddar mängder med data i datorns minne när de öppnas. Det mesta data som laddas är för tillfället troligen oanvändbar eller onödig för dig. I motsats till kalkylblad laddar databaser bara data från datorns lagringsmedia när den behövs. </para>
<para
>I de flesta fall behöver du inte bekymra dig om hur databasen lagrar sina data. Det betyder att i motsats till kalkylblad, bryr sig inte databaser om: </para>
<itemizedlist>
<listitem
><para
>Sekvensen av rader, eftersom du kan ordna rader efter dina behov. Dessutom kan du titta på samma data i många vyer med olika ordning. </para
></listitem>
<listitem
><para
>Samma sak gäller för kolumner (fält) i tabellen. </para
></listitem>
</itemizedlist>

<para
>Tillsammans med <link linkend="data-limiting"
>Begränsad datavisning</link
> beskriven i föregående stycke, är utgör dessa kvaliteter fördelarana med databaser. </para>

</sect3>

<sect3 id="convenient-data-entry">
<title
>Datainmatning</title>
<para
>De senaste utgåvorna av program för att skapa kalkylblad gör det möjligt för dig att skapa datainmatningsformulär. Sådana formulär är mest användbara om data inte kan visas bekvämt i en tabellvy, t.ex. om texten upptar för många rader eller om alla kolumner inte får plats på skärmen. </para>
<para
>I det här fallet är själva sättet som kalkylblad fungerar problematiskt. Fält för datainmatning placeras fritt inne i kalkylbladet och är oftast inte säkrade mot användarens ingripande (avsiktligt eller av misstag). </para>
</sect3>

<sect3 id="reports">
<title
>Rapporter</title>
<para
>Databaser möjliggör gruppering, begränsning och summering av data i form av en <emphasis
>rapport</emphasis
>. Kalkylblad skrivs ofta ut i form av små tabeller utan fullständig automatisk styrning av sidbrytningar och layout av fält. </para>
</sect3>

<sect3 id="programming">
<title
>Programmering</title>
<para
>Program för att skapa databaser innehåller ofta fullständiga programmeringsspråk. Nyare kalkylblad har också den möjligheten, men dock består beräkningar i att ändra kalkylbladets fält och enkel datakopiering, oberoende av relevans och integritetsregler som nämnts i föregående stycken. </para>
<para
>Databehandling i ett kalkylblad görs ofta via ett grafiskt användargränssnitt, som kan göra databehandlingens hastighet långsammare. Databaser har möjlighet att arbeta i bakgrunden, utanför grafiska gränssnitt. </para>
</sect3>

<sect3 id="multiuse">
<title
>Flera användare</title>
<para
>Det är svårt att föreställa sig fleranvändning av ett kalkylblad. Även om det är tekniskt möjligt i fallet med de senaste programmen, kräver det mycket disciplin, uppmärksamhet och kunskap av användarna, och det kan inte alltid garanteras. </para>
<para
>Ett klassiskt sätt att dela data som sparats i ett kalkylblad med andra är att skicka filen i sin helhet (oftast med e-post) eller tillhandahålla en fil med ett kalkylblad i ett datornätverk. Detta sätt att arbeta är ineffektivt för större grupper: data som kan behövas ett visst ögonblick kan för närvarande vara låst av någon annan. </para>
<para
>Å andra sidan har databaser i huvudsak konstruerats med åtkomst av flera användare från början. Till och med i de allra enklaste versionerna är det möjligt att låsa på nivån av en viss tabellrad, vilket gör det möjligt att lätt dela data. </para>
</sect3>

<sect3 id="security">
<title
>Säkerhet</title>
<para
>Att säkra ett kalkylblad eller dess olika delar med ett lösenord är bara en symbolisk aktivitet. Efter en fil med kalkylbladet har tillhandahållits i ett datornätverk, kan var och en som kan kopiera filen försöka att knäcka lösenordet. Det är ibland inte så svårt eftersom lösenordet lagras i samma fil som kalkylbladet. </para>
<para
>Funktioner för att låsa vid redigering eller kopiering av ett kalkylblad (eller en del av det) är lika enkla att knäcka. </para>
<para
>Databaser (utom de som lagras i en fil istället för på en server) behöver inte vara tillgängliga i en enda fil. Du kommer åt dem via ett datornätverk, oftast genom att tillhandahålla ett användarnamn och lösenord. Du får bara åtkomst till de områden (tabeller, formulär och till och med utvalda rader och kolumner) som tilldelats dig genom att ställa in lämpliga åtkomsträttigheter. </para>
<para
>Åtkomsträttigheter kan påverka möjlighet att redigera data, eller möjlighet att bara läsa data. Om viss data inte är tillgänglig för dig, skickas det inte ens till din dator, så det finns ingen möjlighet att göra en kopia av data på ett så enkelt sätt som i fallet med filer för kalkylblad. </para>

</sect3>
</sect2>
</sect1>

<sect1 id="database-design">
<title
>Databaskonstruktion</title>
<para
>Databaskonstruktion kräver noggrann planering. Observera att omkonstruktion av tabellen <guilabel
>Kontakter</guilabel
> som föreslås i avsnittet ovan kan skapa problem när tabellen är fylld med data. Det är till exempel en enkel uppgift att byta namn på ett fält, men att dela fältet <guilabel
>Adress</guilabel
> i två särskilda fält kräver försiktigt och långtråkigt arbete. </para>
<para
>För att undvika sådana situationer, <emphasis
>tänk igenom databasprojektet</emphasis
> innan du skapar det i datorn, och innan du och andra börjar använda det. På så sätt, genom att investera en viss tid i början, sparar du troligen tid vid daglig användning. </para>
</sect1>

<sect1 id="who-needs-a-database">
<title
>Vem behöver en databas?</title>
<itemizedlist>
<title
>Bli kvar vid kalkylblad om:</title>
<listitem
><para
>Dina behov är begränsade och data aldrig växer till stora volymer (kan du verkligen förutsäga det nu?) </para
></listitem>
<listitem
><para
>Du kan inte inhämta metodiken för databaskonstruktion. Du kan dock fundera på att lägga ut aktiviteten hos någon annan, eller använda enklare verktyg. </para
></listitem>
<listitem
><para
>Du använder komplicerade kalkylblad och saknar tid eller pengar att byta till databaser. Tänk igenom eller fråga någon om detta inte är en återvändsgränd. Räkna inte med magiska verktyg som skulle kunna ändra ditt kalkylblad (oberoende av hur bra det är gjort) till en databas. </para
></listitem>
</itemizedlist>

<itemizedlist>
<title
>Fundera på att använda databaser om:</title>
<listitem
><para
>Din samling med data expanderar varje vecka.</para
></listitem>
<listitem
><para
>Du skapar ofta nya kalkylblad, kopierar mellan dem och märker att detta arbete blir mer och mer enformigt. I detta fall betalar sig ansträngningen att byta till databaser lätt. </para
></listitem>
<listitem
><para
>Du skapar rapporter och utdrag där tabellvyn i ett kalkylblad inte är lämpligt. Då kan du fundera på att byta till användning av en databas med formulärvyer. </para
></listitem>
</itemizedlist>
</sect1>

<sect1 id="database-software">
<title
>Programvara för att skapa databaser</title>
<para
>Hittills har du lärt dig de allmänna särdragen hos databaser utan att ha gått in mycket på detaljer om specifika program för att skapa dem. </para>
<para
>De första databaserna skapades tillsammans med stordatorer på 60-talet, t.ex. IBM System/360. Det var inte persondatorernas tid, och därför krävde databaserna mycket specialiserad personal. Även om de gamla datorernas hårdvara var otillförlitlig, de var gränslöst mycket långsammare och hade mindre lagringskapacitet, fanns funktion hos databaser som förblivit den mest attraktiva: dataåtkomst av många användare via nätverk. </para>
<para
>Under 70-talet formulerade vetenskapen teorin om relationsdatabaser (begrepp som <firstterm
>tabell</firstterm
>, <firstterm
>post</firstterm
>, <firstterm
>kolumn (fält)</firstterm
> och <firstterm
>relation</firstterm
> och många fler). Baserat på teorin skapades databaserna IBM DB2 och Oracle, som har utvecklats och använts fram till idag. Under sent 70-tal konstruerades de första persondatorerna. Deras användare kunde (gradvis) börja utnyttja många typer av program, inklusive de för databaskonstruktion. </para>
<para
>När det gäller stora databaser i företag, har inte situationen ändrats: de kräver fortfarande kraftfulla datorer eller datoranläggningar som kallas <firstterm
>kluster</firstterm
>. Det är dock utanför den här handbokens område. </para>
<para
>Inom området "åtkomliga" databaser med grafiska användargränssnitt för persondatorer kan du välja bland följande: </para>

<itemizedlist>
<listitem
><para
><ulink url="http://www.dbase.com/"
>DBase</ulink
>: ett verktyg för databasanvändning för DOS populärt under 80-talet. Filer med DBase-format används fortfarande i vissa specifika fall på grund av sin enkelhet. </para
></listitem>
<listitem
><para
><ulink url="http://msdn.microsoft.com/vfoxpro/productinfo/overview/"
>FoxPro</ulink
>: ett program som liknar DBase (tidigt 90-tal). Efter det togs över av Microsoft, introducerades ett grafiskt användargränssnitt och det används därför för att skapa databaser på persondatorer. Produkten säljs fortfarande, även om den verkar något föråldrad. </para
></listitem>
<listitem
><para
><ulink url="http://office.microsoft.com/access/"
>Microsoft Access</ulink
>: ett program för databaser (konstruktion av data och grafiskt gränssnitt) med många förenklingar, och därför lämpligt för nybörjare, konstruerat under tidigt 80-tal, baserat på en 16-bitars arkitektur. Produkten erbjuds och har bred användning fram till idag, särskilt av små företag, där effektivitet och krav på flera användare inte är särskilt krävande. </para
></listitem>
<listitem
><para
><ulink url="http://www.filemaker.com/"
>FileMaker</ulink
>: populärt program som liknar MS Acess i enkelhet, som fungerar på Windows och MacIntosh plattformar, erbjudet sedan 1985. </para
></listitem>
<listitem
><para
><ulink url="http://www.kexi.pl/"
>&kexi;</ulink
>: ett program för flera plattformar (Unix/Linux, Windows, MacOS X) konstruerat under 2003, utvecklat enligt principen med öppen källkod, del av det globala projektet <ulink url="http://www.kde.org/"
>K-skrivbordsmiljön</ulink
>, dvs. en grafisk miljö för system med Unix/Linux. En betydelsefull bidragsgivare till &kexi;s utveckling är företaget OpenOffice Poland. </para
></listitem>
</itemizedlist>

</sect1>

</appendix>
