1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
|
<!--
<!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 tdelistra in i ett annat kalkylblad och efter redigering tdelistra 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>
|