aspose.info
NL

DBF - dBase-databasebestand

Bijgewerkt

Wat is een DBF-bestand?

Het bestand met de extensie .dbf is een databasebestand dat wordt gebruikt door een databasebeheersysteemtoepassing met de naam dBASE. Aanvankelijk heette de dBASE-database Project Vulcan; gestart door Wayne Ratliff in 1978. Het DBF-bestandstype werd in 1983 geïntroduceerd met dBASE II. Het rangschikt meerdere gegevensrecords met velden van het array-type. De xBase databasesoftware die populair is vanwege zijn compatibiliteit met een breed scala aan bestandsformaten; ondersteunt ook de DBF-bestanden.

DBF-bestandsindeling

Het DBF-bestandsformaat behoort tot het dBASE-databasebeheersysteem, maar is mogelijk compatibel met xBase of andere DBMS-software. De eerste versie van het dbf-bestand bestond uit een eenvoudige tabel waaraan gegevens konden worden toegevoegd, gewijzigd, verwijderd of afgedrukt met behulp van de ASCII-tekenset. Met het verstrijken van de tijd werd .dbf verbeterd en werden er extra bestanden toegevoegd om de functies en mogelijkheden van het databasesysteem te vergroten.

In moderne dBASE bestaat een DBF-bestand uit een koptekst, de gegevensrecords en de EOF-markering (End of File)

  • De header bevat informatie over het bestand, zoals het aantal records en het aantal typen velden dat in de records wordt gebruikt.
  • De records bevatten de feitelijke gegevens.
  • Het einde van het bestand wordt gemarkeerd door een enkele byte, met de waarde 0x1A.

Bestandskop

Lay-out van bestandsheader in dBase wordt gegeven in de volgende tabel:

ByteInhoudBetekenis
01 byteGeldige dBASE voor DOS-bestand; bits 0-2 geven het versienummer aan, bit 3 geeft de aanwezigheid van een dBASE voor DOS-memobestand aan, bits 4-6 geven de aanwezigheid van een SQL-tabel aan, bit 7 geeft de aanwezigheid van een memobestand aan (dBASE m PLUS of dBASE voor DOS)
1–33 bytesDatum van laatste update; geformatteerd als JJMMDD
4–732-bits nummerAantal records in het databasebestand
8–916-bits nummerAantal bytes in de kop
10–1116-bits nummerAantal bytes in het record
12–132 bytesGereserveerd; vul met 0
141 byteVlag die onvolledige transactie aangeeft[note 1]
151 byteCoderingsvlag [noot 2]
16–2712 bytesGereserveerd voor dBASE voor DOS in een omgeving met meerdere gebruikers
281 byteProductie .mdx-bestandsvlag; 1 als er een productie .mdx-bestand is, 0 zo niet
291 byteTaal bestuurder-ID
30–312 bytesGereserveerd; vul met 0
32–n [noot 3][noot 4]32 bytes elkarray van velddescriptors (zie hieronder voor lay-out van descriptors)
n + 11 byte0x0D als de velddescriptor array-terminator
  • De ISMARKEDO-functie controleert deze vlag (BEGIN TRANSACTIE zet het op 1, END TRANSACTIE en ROLLBACK zet het terug op 0).
  • Als deze vlag is ingesteld op 1, verschijnt het bericht Database versleuteld.
  • Het maximum aantal velden is 255.
  • n betekent de laatste byte in de velddescriptorarray.

Velddescriptormatrix

Lay-out van velddescriptors in dBASE:

ByteInhoudBetekenis
0–1011 bytesVeldnaam in ASCII (nul gevuld)
111 byteVeld soort. Toegestane waarden: C, D, F, L, M of N (zie volgende tabel voor betekenissen)
12–154 bytesGereserveerd
161 byteVeldlengte in binair (maximaal 254 (0xFE)).
171 byteVeld decimale telling in binair
18-192 bytesWerkgebied-ID
201 byteVoorbeeld
21–3010 bytesGereserveerd
311 byteProductie MDX-veldvlag; 1 als veld een indextag heeft in het productie-MDX-bestand, 0 indien niet

Databaserecords

Elk record begint met een verwijderingsvlag (1 byte). Velden zijn verpakt in records zonder veldscheidingstekens. Alle veldgegevens zijn ASCII. Afhankelijk van het type van het veld legt de toepassing verdere beperkingen op. Dit zijn veldtypen in dBase:

VeldtypeezelsbruggetjeWat het accepteert
CKarakterElke ASCII-tekst (opgevuld met spaties tot de lengte van het veld)
DDatumCijfers en een teken om maand, dag en jaar te scheiden (intern opgeslagen als 8 cijfers in de indeling JJJJMMDD)
FDrijvende komma-, ., 0–9 (rechts uitgelijnd, opgevuld met spaties)
LLogischY, y, N, n, T, t, F, f of ? (wanneer niet geïnitialiseerd)
MMemoElke ASCII-tekst (intern opgeslagen als 10 cijfers die een .dbt-bloknummer vertegenwoordigen, rechts uitgelijnd, opgevuld met spaties)
NNumeriek-, ., 0–9 (rechts uitgelijnd, opgevuld met spaties)

Referenties

Zie ook