aspose.info
IT

DBF - File di database dBase

Aggiornato

Che cos’è un file DBF?

Il file con estensione .dbf è un file di database utilizzato da un’applicazione del sistema di gestione dei database denominata dBASE. Inizialmente, il database dBASE era chiamato Project Vulcan; iniziato da Wayne Ratliff nel 1978. Il tipo di file DBF è stato introdotto con dBASE II nel 1983. Organizza più record di dati con campi di tipo Array. Il software database xBase che è popolare per la sua compatibilità con un’ampia gamma di formati di file; supporta anche i file DBF.

Formato file DBF

Il formato di file DBF appartiene al sistema di gestione del database dBASE ma potrebbe essere compatibile con xBase o altri software DBMS. La versione iniziale del file dbf consisteva in una semplice tabella che poteva avere dati aggiunti, modificati, eliminati o stampati utilizzando il set di caratteri ASCII. Con il passare del tempo .dbf è stato migliorato e sono stati aggiunti file aggiuntivi per aumentare le funzionalità e le capacità del sistema di database.

Nel moderno dBASE un file DBF è costituito da un’intestazione, i record di dati e l’indicatore EOF (End of File)

  • L’intestazione contiene informazioni sul file, come il numero di record e il numero di tipi di campi utilizzati nei record.
  • I record contengono i dati effettivi.
  • La fine del file è contrassegnata da un singolo byte, con valore 0x1A.

Intestazione del file

Il layout dell’intestazione del file in dBase è riportato nella tabella seguente:

byteContenutoSignificato
01 bytedBASE valido per file DOS; i bit 0–2 indicano il numero di versione, il bit 3 indica la presenza di un file memo dBASE per DOS, i bit 4–6 indicano la presenza di una tabella SQL, il bit 7 indica la presenza di un file memo (dBASE m PLUS o dBASE per DOS)
1–33 byteData dell’ultimo aggiornamento; formattato come AAMMGG
4–7numero a 32 bitNumero di record nel file di database
8–9numero a 16 bitNumero di byte nell’intestazione
10–11numero a 16 bitNumero di byte nel record
12–132 byteRiservato; riempi con 0
141 byteFlag che indica transazione incompleta[nota 1]
151 byteFlag di crittografia[nota 2]
16–2712 byteRiservato per dBASE per DOS in un ambiente multiutente
281 byteFlag del file .mdx di produzione; 1 se è presente un file .mdx di produzione, 0 in caso contrario
291 byteID del driver della lingua
30–312 byteRiservato; riempi con 0
32–n [nota 3][nota 4]32 byte ciascunoarray di descrittori di campo (vedi sotto per il layout dei descrittori)
n + 11 byte0x0D come terminatore di matrice del descrittore di campo
  • La funzione ISMARKEDO controlla questo flag (BEGIN TRANSACTION lo imposta a 1, END TRANSACTION e ROLLBACK lo reimposta a 0).
  • Se questo flag è impostato su 1, viene visualizzato il messaggio Database crittografato.
  • Il numero massimo di campi è 255.
  • n indica l’ultimo byte nell’array del descrittore di campo.

Matrice del descrittore di campo

Disposizione dei descrittori di campo in dBASE:

byteContenutoSignificato
0–1011 byteNome del campo in ASCII (riempito con zero)
111 byteTipo di campo. Valori consentiti: C, D, F, L, M o N (per i significati vedere la tabella successiva)
12–154 byteRiservato
161 byteLunghezza campo in formato binario (massimo 254 (0xFE)).
171 byteConteggio decimale campo in binario
18–192 byteID area di lavoro
201 byteEsempio
21–3010 byteRiservato
311 byteBandiera di campo MDX di produzione; 1 se il campo ha un tag di indice nel file MDX di produzione, 0 in caso contrario

Record di database

Ogni record inizia con un flag di eliminazione (1 byte). I campi vengono inseriti in record senza separatori di campo. Tutti i dati del campo sono ASCII. A seconda del tipo di campo, l’applicazione impone ulteriori restrizioni. Ecco i tipi di campo in dBase:

Tipo di campomnemonicoCosa accetta
CCarattereQualsiasi testo ASCII (riempito con spazi fino alla lunghezza del campo)
DDataNumeri e un carattere per separare mese, giorno e anno (memorizzati internamente come 8 cifre nel formato AAAAMMGG)
FVirgola mobile-, ., 0–9 (giustificato a destra, riempito con spazi bianchi)
LlogicoY, y, N, n, T, t, F, f o ? (se non inizializzato)
MpromemoriaQualsiasi testo ASCII (memorizzato internamente come 10 cifre che rappresentano un numero di blocco .dbt, giustificato a destra, riempito con spazi bianchi)
Nnumerico-, ., 0–9 (giustificato a destra, riempito con spazi bianchi)

Riferimenti

Vedi anche