Dokumentation
Dokumentationen nedan ingår i BeeBase-distributionen och finns även tillgänglig i PDF.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
5. Grundläggande Koncept
Innan du börjar sätta upp dina egna databasprojekt och mata in data för dem bör du känna till vissa grundläggande koncept som BeeBase bygger på.
| 5.1 Projects | BeeBase-projekt. | |
| 5.2 Tables | Grundläggande datahantering. | |
| 5.3 Records | En rad i en tabell. | |
| 5.4 Fields | En kolumn i en tabell. | |
| 5.5 Field types | Tillgängliga typer för fält. | |
| 5.6 Table of field types | Sammanfattning av fälttyper. | |
| 5.7 Relations | Koppla samman tabeller. | |
| 5.8 User interface | Element för layout. |
5.1 Projekt
Ett BeeBase-projekt består av all relevant information du behöver för att hantera din data. Detta inkluderar projektets användargränssnitt, den data du har matat in i projektet och programmen du har skrivit för projektet.
Ett projekt kan laddas från, sparas till och raderas från disken. Alla ändringar du gör i ett projekt görs endast i minnet. Du kan när som helst återgå till tillståndet för det senast sparade projektet genom att ladda om det.
BeeBase kan hantera flera projekt samtidigt. Därför är det inte nödvändigt att starta BeeBase två gånger bara för att ladda ett annat projekt.
Dessutom kan flera instanser av BeeBase komma åt samma projekt. Flera instanser kan läsa projektet, men endast en får göra ändringar. Detta bör också fungera över olika datorer i ett nätverk när projektet är placerat på en monterad nätverksenhet.
5.2 Tabeller
BeeBase hanterar data i tabeller. En tabell är organiserad i rader och kolumner, där rader kallas poster och kolumner kallas fält.
Se följande tabell för ett exempel på hur man kan strukturera en uppsättning adresser i en tabell.
Namn | Gata | Stad
------------------|---------------------|------------------------
Steffen Gutmann | Wiesentalstr. 30 | 73312 Geislingen/Eybach
Charles Saltzman | University of Iowa | Iowa City 52242
Nicola Müller | 21W. 59th Street | Westmont, Illinois 60559
|
Det finns en speciell tabelltyp som kan innehålla exakt en post. En tabell av denna typ är ibland användbar för att kontrollera databasprojektet, t.ex. kan du placera knappar i denna tabell för att utföra olika åtgärder, eller ett skrivskyddat fält för att visa projektrelaterad information.
Anta till exempel att du har en kontodatabas där du lagrar alla dina inkomster och utgifter. En exakt-en-tabell kan nu ha ett skrivskyddat fält av typ reellt tal för att visa det totala saldot.
Varje tabell har två postpekare, en pekare till den post som för närvarande visas i användargränssnittet (kallad GUI-postpekare) och en pekare till den post som är den aktuella under körning av ett BeeBase-program (kallad programpostpekare).
Du kan definiera valfritt antal tabeller för ett BeeBase-projekt. Tabeller kan läggas till, döpas om och raderas från ett projekt.
5.3 Poster
En post är en rad i en tabell. Den innehåller all information om en uppsättning, t.ex. i en tabell som hanterar adresser, en post innehåller en adress.
Varje post har ett postnummer som återspeglar postens position i tabellen. Detta nummer kan ändras när du lägger till eller tar bort poster.
För varje tabell finns en post som kallas initial post som innehåller standardvärdena för initialisering av nya poster. Den initiala posten har alltid postnummer 0.
Poster kan läggas till, ändras och tas bort från en tabell. Posterna hålls inte nödvändigtvis i minnet utan laddas från och lagras på disk vid behov. Det finns två begränsningar för det totala antalet poster i en tabell. Postnumret är ett 32-bitars heltalsvärde, vilket (teoretiskt) begränsar det totala antalet poster till 4294967295. En annan (och mer allvarlig) begränsning är att för varje post hålls en liten posthuvud i minnet. Dessa begränsningar gör fortfarande BeeBase användbart för postantal på 10 000 och fler.
5.4 Fält
Ett fält definierar en kolumn i en tabell. Det specificerar typen och utseendet för motsvarande kolumn.
Fält kan läggas till, döpas om och tas bort från en tabell. Det finns ingen övre gräns för antalet fält per tabell.
För varje fält måste du ange en typ som begränsar innehållet i detta fält. Se nästa avsnitt för en lista över tillgängliga fälttyper.
5.5 Fälttyper
För fält finns följande typer tillgängliga:
| 5.5.1 String type | Alla enstaka rader av text. Kan också användas för att lagra typsnittnamn, filnamn och externa bilder. | |
| 5.5.2 Integer type | Vanliga tal. | |
| 5.5.3 Real type | Flyttal. | |
| 5.5.4 Boolean type | Booleska värden. | |
| 5.5.5 Choice type | Ett objekt av många objekt. | |
| 5.5.6 Date type | Datumvärden. | |
| 5.5.7 Time type | Tidsvärden. | |
| 5.5.8 Memo type | Flerradig text. | |
| 5.5.9 Reference | Referens till en annan post. | |
| 5.5.10 Virtual | Beräkna värde i realtid. | |
| 5.5.11 Button | För att utlösa BeeBase-program. |
Vissa av fälttyperna stöder ett speciellt värde som kallas NIL. Detta speciella värde har betydelsen av ett odefinierat värde, t.ex. för en typ av datum betyder det ett okänt datum. NIL-värdet liknar NULL-värdet i andra databassystem.
Observera att när du väl har ställt in typen för ett fält, kan du inte ändra den senare.
5.5.1 Strängfält
Strängfält kan lagra vilken enradig text som helst (0 till 999 tecken). Strängar är den mest använda fälttypen i ett databasprojekt. Till exempel, en adressdatabas kan lagra namn, gata och stad för en person i varsitt strängfält.
För ett strängfält måste du ange det maximala antalet tecken som tillåts i strängen. Detta antal påverkar inte direkt mängden minne eller diskutrymme som används av detta fält eftersom endast det faktiska stränginnehållet lagras (andra databaser har kallat denna funktion komprimerade strängar). Om nödvändigt kan antalet ändras efter att du har installerat ett strängfält.
Strängfält kan också användas för att lagra typsnitt- och filnamn. För filnamn kan externa visningsprogram startas för att visa filinnehållet. Dessutom finns en inline-bildklass som tillåter visning av bilden av en fil.
Strängfält stöder inte NIL-värdet.
5.5.2 Heltalsfält
Heltalsfält lagrar heltalsvärden i intervallet -2147483648 till 2147483647. De används mest för att lagra kvantiteter av alla slag, t.ex. antalet barn hos en person, eller antalet låttitlar på en CD.
Heltalsfält stöder NIL-värdet som representerar ett odefinierat heltalsvärde.
5.5.3 Reella Talsfält
Reella talsfält lagrar flyttalsvärden i intervallet -3.59e308 till +3.59e308. De används för att lagra tal av alla slag, t.ex. summan pengar i ett inkomst-/utgiftsprojekt.
För varje reellt talsfält kan du ange antalet decimaler som används för att visa det reella värdet, även om internt sparas alltid full precision.
Reella talsfält stöder NIL-värdet som representerar ett odefinierat reellt värde.
5.5.4 Booleska Fält
Booleska fält lagrar en bit information. De används för att lagra ja/nej eller sant/falskt värden, t.ex. i ett projekt som hanterar fakturor kan ett boolesk fält lagra informationen `har betalat?'.
Booleska fält använder TRUE och NIL som booleska värden. NIL i detta fall står för ett värde av FALSE.
5.5.5 Valfält
Valfält lagrar ett objekt från en uppräkning av objekt. Till exempel, i ett adressprojekt kan ett valfält användas för att lagra ett landsnamn, där landet är ett av `USA', `Kanada', `Tyskland', eller `andra'.
Ett valfält lagrar inte själva objektsträngen utan objektnumret (index) i en post. Antalet objekt och objekten själva kan modifieras efter att fältet har skapats. När ändringar görs i ett valfält kommer dock värden i befintliga poster inte att ändras för att återspegla den nya märkningen.
Valfält stöder inte NIL-värdet.
5.5.6 Datumfält
Datumfält lagrar kalenderdatum. Till exempel kan ett datumfält användas för att lagra födelsedagar.
Formatet för att mata in och visa datumvärden kan vara ett av `DD.MM.ÅÅÅÅ', `MM/DD/ÅÅÅÅ', eller `ÅÅÅÅ-MM-DD', där `DD', `MM' och `ÅÅÅÅ' står för två och fyrsiffriga värden som representerar dag, månad och år för datumet respektive.
Datumfält stöder NIL-värdet som representerar ett odefinierat datum.
5.5.7 Tidfält
Tidfält lagrar tiden på dagen eller en tidsperiod. Till exempel kan ett tidfält användas för att lagra längden på musiktitlar på en CD.
Formatet för att mata in och visa tidsvärden kan vara ett av `HH:MM:SS', `MM:SS' eller `HH:MM', där `HH' representerar timmar, `MM' minuter, och `SS' sekunder. Internt lagras tidsvärden som antalet sekunder sedan kl. 00:00. Tidsvärden större än 23:59:59 upp till maxvärdet 596523:14:07 är möjliga men negativa värden stöds inte.
Tidfält stöder NIL-värdet som representerar en odefinierad tid.
5.5.8 Memofält
Memofält lagrar flerradig text av valfri storlek. Textstorlek hanteras dynamiskt vilket innebär att minne allokeras endast för den faktiska textstorleken. I ett projekt som hanterar filmer kan till exempel ett memofält användas för att lagra sammanfattningar av filmerna.
Memofält stöder inte NIL-värdet.
5.5.9 Referensfält
Referensfält är en speciell typ av fält, som normalt inte finns i andra databassystem. Referensfält lagrar en pekare till en annan post. Den refererade posten kan finnas i samma eller i vilken annan tabell som referensfältet tillhör.
Till exempel i ett släktträdsprojekt kan två referensfält användas för att lagra pekare till far- och morposten. Eller i ett projekt som hanterar CD-skivor och musikspår kan ett referensfält i tabellen som innehåller musikspåren användas för att peka till posterna för motsvarande CD-skivor.
För att visa ett referensfält kan alla fält i den refererade posten specificeras. Inmatning i ett referensfält kan göras genom att välja en post från en lista av poster.
Referensfält stöder NIL-värdet. Här står ett värde av NIL för en pekare till den initiala posten i den refererade tabellen.
5.5.10 Virtuella Fält
Virtuella fält lagrar ingen information i själva databasen, utan beräknar dem i realtid när de behövs.
Till exempel, i ett projekt som hanterar fakturor där ett reellt fält innehåller summan pengar exklusive moms, kan ett virtuellt fält användas för att "lagra" summan pengar med moms. Varje gång värdet av det virtuella fältet behövs, t.ex. för att visa det, beräknas det från motsvarande värde utan moms.
För att visa virtuella fält finns det fyra typer: Boolesk, text, memo och lista. Dessa typer gör det möjligt att visa det virtuella fältets värde som ett SANT/FALSKT-värde, som en enradig text inklusive siffror, datum och tider, som flerradig text eller som en lista med flera enradiga poster, till exempel för att lista alla musiktitlar på en CD.
Virtuella fält stöder värdet NIL, vilket står för FALSKT (boolesk typ), odefinierat (text och memo typ), eller tomt (listtyp).
5.5.11 Knappar
Egentligen är knappar inte en riktig fälttyp eftersom de inte kan lagra eller visa någon information. Knappar används bara för att utlösa BeeBase-program.
5.6 Tabell över Fälttyper
Följande tabell sammanfattar alla tillgängliga fälttyper:
Typ Beskrivning Nil tillåtet?
Sträng För strängar (0 till 999 tecken). Nej
En sträng kan också användas för att lagra
filnamn, typsnittnamn eller en-sträng-
av-n-strängar. För filnamn kan du
lägga till ett fält där innehållet
i filen visas som en bild.
Heltal För lagring av heltalsvärden Ja
(-2147483648 till 2147483647).
Reellt tal För flyttal Ja
(-3.59e308 till +3.59e308).
Boolesk TRUE eller NIL. Ja (NIL = FALSE)
Val Ett tal av n tal. Tal Nej
representeras av etikettssträngar.
Datum För lagring av datumvärden Ja
(1.1.0000 - 31.12.9999).
Tid För lagring av tidsvärden Ja
(00:00:00 - 596523:14:07)
Memo Flerradig text av obegränsad längd. Nej
Referens För lagring av en referens till en post Ja (NIL betyder
i en annan tabell. initial post)
Virtuell För visning av resultat från ett BeeBase Ja
program.
Knapp För att utlösa en programfunktion Nej (ej tillämpligt)
|
5.7 Relationer
Hittills vet du hur man organiserar din information i tabeller med poster och fält. Men du kanske också vill skapa relationer mellan tabeller.
Om du till exempel vill samla CD-skivor i ett databasprojekt skulle du ha två tabeller, en för själva CD-skivorna och en för musikspåren på CD-skivorna. Naturligtvis kan du också ha alla musikspår inom CD-tabellen men då skulle du ha ett fast antal musikspår för varje CD.
Så med dessa två tabeller behöver du nu en länk för varje musikspår till den CD som innehåller detta spår. Detta kallas en relation mellan de två tabellerna. I BeeBase använder du ett referensfält för att skapa en sådan relation.
Genom att installera ett referensfält i en tabell har du automatiskt en relation mellan den tabell där fältet finns och den tabell det refererar till.
Följande klasser av relationer kan särskiljas:
| 5.7.1 One-to-one-relations | Enkla. | |
| 5.7.2 One-to-many-relations | Mest använda. | |
| 5.7.3 Many-to-many-relations | Komplexa. |
5.7.1 En-till-en-Relationer
En-till-en-relationer är mycket enkla relationer där för varje post har du en eller noll partners i en annan eller i samma tabell.
Till exempel i ett databasprojekt som hanterar dina favoritskådespelare kan du skapa ett referensfält kallat `gift med' som visar personen som skådespelaren är gift med. En skådespelare som för närvarande inte är gift har ett NIL-värde för detta referensfält.
Naturligtvis hindrar inget användaren från att ställa in `gift med'- referenser för flera skådespelare alla till samma person. Genom att programmera BeeBase är det dock möjligt att upptäcka sådana fall och hantera det därefter.
5.7.2 En-till-många-Relationer
En-till-många-relationer är användbara för att koppla en uppsättning poster till en post i en annan eller samma tabell.
Till exempel i ett projekt som hanterar dina bankkonton kan du ha en tabell för alla bankkonton och en tabell för alla transaktioner. Nu vill du säkert veta vilken transaktion som tillhör vilket konto så du sätter upp ett referensfält i transaktionstabellen som refererar till kontotabellen.
En-till-många-relationer är de mest använda. Du kan använda dem för att hantera alla hierarkiska strukturer, t.ex. CD-skivor med musikspår, bankkonton med transaktioner, släktträd, etc.
En-till-många-relationer är också grunden för att realisera många-till-många-relationer som beskrivs i nästa avsnitt.
5.7.3 Många-till-många-Relationer
Många-till-många-relationer används när du vill att en uppsättning poster ska referera till en annan uppsättning poster.
Till exempel i ett projekt som hanterar filmer och skådespelare skulle du ha två tabeller, en för filmerna och en för skådespelarna. Nu vill du för varje film veta vilka skådespelare som medverkade i filmen. Så du kanske tänker skapa ett referensfält i skådespelartabellen som refererar till filmtabellen. Men när du gör detta kan du bara ha en film refererad för varje skådespelare eftersom det bara finns ett referensfält i skådespelartabellen. Så vad du behöver är ett obegränsat antal referenser från skådespelartabellen till filmtabellen.
Detta görs genom att lägga till en ny tabell som bara har två referensfält, ett som pekar på skådespelartabellen och det andra på filmtabellen. Nu kan du ange relationerna genom att lägga till nya poster i denna tabell. För varje film-skådespelare-konstellation lägger du till en ny post och specificerar filmen och skådespelaren genom att ställa in motsvarande referensfält.
Om du vill veta i vilka filmer en skådespelare medverkade behöver du bara söka efter alla poster i den nya tabellen som refererar till skådespelaren i fråga och titta på filmposterna som de hittade posterna refererar till. En sådan sökning kan göras automatiskt av BeeBase och resultatet kan visas i en listvy.
Följande tabeller visar ett exempel på hur man kopplar en uppsättning skådespelare till en uppsättning filmer.
Titel Land
----------------------------
m1: Batman USA
m2: Batman Returns USA
m3: Speechless USA
m4: Tequila Sunrise USA
m5: Mad Max Australien
m6: Braveheart USA
|
Namn
-------------------
a1: Michael Keaton
a2: Jack Nicholson
a3: Kim Basinger
a4: Danny DeVito
a5: Michelle Pfeiffer
a6: Geena Davis
a7: Christopher Reeve
a8: Mel Gibson
a9: Kurt Russell
a10: Sophie Marceau
a11: Patrick McGoohan
a12: Catherine McCormack
a13: Christopher Walken
|
Filmref Skådespelarref
------------------
m1 a1
m1 a2
m1 a3
m2 a1
m2 a4
m2 a5
m2 a13
m3 a1
m3 a6
m3 a7
m4 a8
m4 a5
m4 a9
m5 a8
m6 a8
m6 a10
m6 a11
|
Från dessa tabeller kan du till exempel se att Mel Gibson medverkade i filmerna Tequila Sunrise, Mad Max och Braveheart, eller att i filmen Batman medverkade skådespelarna Michael Keaton, Jack Nicholson och Kim Basinger.
5.8 Användargränssnitt
BeeBase använder ett grafiskt användargränssnitt (GUI) organiserat på ett hierarkiskt sätt för att visa postinnehåll och för att mata in data. Varje projekt har sitt eget huvudfönster där ytterligare GUI-element (inklusive delfönster) kan placeras. GUI-elementen kallas också visningsobjekt.
En tabell visas i ett eget GUI-element som kallas mask. En mask kan bara visa en post i taget. Dess layout och de fält som ingår i masken kan anpassas av användaren.
Följande GUI-element finns tillgängliga för att utforma ett projekts GUI-layout:
| 5.8.1 Windows | Huvud- och delfönster. | |
| 5.8.2 Masks | Visar en tabell. | |
| 5.8.3 Panels | Styr en tabell. | |
| 5.8.4 Field objects | Visar ett dataobjekt för en post. | |
| 5.8.5 Text objects | Statiska textbeskrivningar. | |
| 5.8.6 Images | Statiska bilder för dekoration. | |
| 5.8.7 Space | Layout- och avskiljningsobjekt. | |
| 5.8.8 Groups | Grupperar GUI-element vertikalt och horisontellt. | |
| 5.8.9 Balance objects | Dynamisk storleksändring av gruppelement. | |
| 5.8.10 Register groups | Sidor av GUI-element. |
5.8.1 Fönster
Fönster kan användas för att sprida information om ett projekt över flera oberoende områden.
Varje projekt har automatiskt sitt eget huvudfönster. Om det behövs, t.ex. om utrymmet i huvudfönstret överskrids, kan ytterligare delfönster skapas. Delfönster kan också ha ytterligare delfönster.
För varje delfönster kan en fönsterknapp placeras i föräldrafönstret för att öppna delfönstret. Fönsterknappen ser ut som en vanlig textknapp men kan visa en liten ikon för att skilja sig från andra knappar.
Huvudfönster har inget föräldrafönster och har därför ingen fönsterknapp. Att stänga ett huvudfönster innebär att stänga hela projektet.
Ett fönster kan ha andra GUI-element som barn. Om inga barn har lagts till i ett fönster visas en standardbild.
5.8.2 Masker
En mask används för att visa innehållet i en tabell. Endast en post i tabellen kan visas åt gången.
Masken kan inkludera en panel (se nästa avsnitt) för att styra tabellen. Andra GUI-element som fält- eller textobjekt kan placeras i en mask för att visa postinnehållet.
Masker kan inte placeras i andra masker eftersom detta skulle leda till en hierarki av masker och därmed en hierarki av tabeller. För att skapa en hierarki av tabeller, använd en 1:n-relation mellan de två tabellerna.
5.8.3 Paneler
En panel är ett litet och brett rektangulärt område placerat överst på en mask. En panel kan visa en titel, t.ex. namnet på motsvarande tabell, ett par siffror som visar postnumret för den aktuella posten och det totala antalet poster, och flera knappar för att styra tabellen, t.ex. för att visa nästa eller föregående post.
En panel är en del av tabellmasken men kan döljas om så önskas. Om du sätter upp en panel för en mask ritas en extra ram runt masken.
5.8.4 Fältobjekt
Fältobjekt används för att visa innehållet i ett objekt i en post.
Beroende på typen av fältet är GUI-elementet antingen ett strängfält (typerna sträng, heltal, reellt tal, datum och tid), en kryssknapp (typ boolesk), en cykelknapp eller en uppsättning radioknappar (typ val), ett redigeringsfält (typ memo), en popup-listvy (typ referens), ett text-, kryss- eller listvyfält (typ virtuell) eller en text- eller bildknapp (typ knapp). I vissa fall kan GUI-elementet också vara ett enkelt textfält om fältobjektet är inställt på skrivskyddat.
5.8.5 Textobjekt
Textobjekt används för att beskriva de olika fältelementen i en postmask eller bara för att visa statisk text.
5.8.6 Bilder
Bilder kan visas var som helst i ett fönster. En bild kan vara ett mönster, ett enkelt färgfält, eller en bild i en extern fil. Bildstorleken kan vara storleksanpassningsbar eller fast.
Bilden är statisk. För att lagra bilder i en tabell använder du ett strängfält (se String type).
5.8.7 Utrymmeobjekt
Utrymmeobjekt används för att infoga utrymme i layouten av ett fönster eller en tabellmask. Ett utrymmeobjekt kan ha en vertikal (eller horisontell) stapel för att avgränsa andra GUI-element.
5.8.8 Grupper
GUI-element kan grupperas i horisontella eller vertikala grupper. En grupp placerar sina barn från vänster till höger (horisontell grupp) eller uppifrån och ner (vertikal grupp).
En grupp kan omge sina barnobjekt med en rektangulär ram, kan visa en valfri titel överst i gruppen, och kan infoga utrymme mellan sina barnobjekt.
5.8.9 Balansobjekt
Balansobjekt kan placeras mellan andra barnobjekt i ett fönster, en mask eller ett gruppobjekt. Ett balansobjekt låter användaren styra viktvärden för andra barnobjekt och därmed hur mycket utrymme varje barn får.
5.8.10 Registergrupper
En registergrupp kan användas för att layouta GUI-element i flera sidor där endast en sida är synlig åt gången. Detta är användbart om användargränssnittet blir för stort och du inte vill sprida det över flera fönster.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on September, 6 2025 using texi2html



