ELS FITXERSELS FITXERS
FITXER LÒGIC I FITXER FÍSIC : FITXER LÒGIC I FITXER FÍSIC : INDEPENDÈNCIA DE DADESINDEPENDÈNCIA DE DADES
FITXER LÒGIC: ACCÉS I FITXER LÒGIC: ACCÉS I TIPIFICACIÓTIPIFICACIÓ
VINCLES ENTRE NIVELLSVINCLES ENTRE NIVELLS EL FITXER SEQÜÈNCIALEL FITXER SEQÜÈNCIAL EL FITXER RELATIUEL FITXER RELATIU EL FITXER PER VALOREL FITXER PER VALOR
FITXER LÒGIC I FITXER FITXER LÒGIC I FITXER FÍSIC: INDEPENDÈNCIA DE FÍSIC: INDEPENDÈNCIA DE DADESDADES
Utilització dels fitxersUtilització dels fitxers Els fitxers considerats des de Els fitxers considerats des de
diversos nivells:diversos nivells:> Fitxer lògic> Fitxer intern> Fitxer físic
FITXER LÒGIC: ACCÉS I FITXER LÒGIC: ACCÉS I TIPIFICACIÓTIPIFICACIÓ
Seqüencial /DirectePer posició/ Per valor
TipificacióFS – Fitxer seqüencialFR – Fitxer relatiuFV – Fitxer per valor
Accés
FITXER LÒGIC : ACCÉS I FITXER LÒGIC : ACCÉS I TIPIFICACIÓTIPIFICACIÓ Fitxer seqüèncialFitxer seqüèncial
(accés seqüèncial per (accés seqüèncial per posició)posició)
Fitxer relatiuFitxer relatiu (accés directe per (accés directe per posició i seqüèncial per posició)posició i seqüèncial per posició)
Fitxer per valorFitxer per valor (accés directe per valor i (accés directe per valor i seqüèncial per valor)seqüèncial per valor)
FITXER LÒGIC: ACCÉS I FITXER LÒGIC: ACCÉS I TIPIFICACIÓTIPIFICACIÓ
SP SV DP DV
Nom Edat1 Pere 152 Laura 223 Marta 404 Jordi 30
Accès per tipus de fitxer
Exemple
Fitxer seqüencial (F.S.) XFitxer relatiu (F.R.) X XFitxer per valor (F.V.) X X
VINCLES ENTRE NIVELLSVINCLES ENTRE NIVELLS
Fitxer lògic - Fitxer intern.Fitxer lògic - Fitxer intern. Fitxer intern - Fitxer físicFitxer intern - Fitxer físic
Consistència entre nivells
VINCLES ENTRE NIVELLSVINCLES ENTRE NIVELLS Utilitzarem el binding per Utilitzarem el binding per
programa.programa. Passos a seguir:Passos a seguir:
- - Obrir i assignar canalObrir i assignar canal - Crear o manipular el - Crear o manipular el fitxerfitxer - Tancar i alliberar canals- Tancar i alliberar canals
EL FITXER SEQÜÈNCIALEL FITXER SEQÜÈNCIAL Els fitxers seqüencials (F.S.) admeten Els fitxers seqüencials (F.S.) admeten
només només accés seqüencial per posicióaccés seqüencial per posició, per , per tant són útils per a tractaments tant són útils per a tractaments seqüencials.seqüencials.
Tot element tret de l’ultim té un Tot element tret de l’ultim té un següent.següent.
Els elements s’afegeixen pel final i Els elements s’afegeixen pel final i s’obtenen en el mateix ordre en que es s’obtenen en el mateix ordre en que es van introduir.van introduir.
EL FITXER SEQÜÈNCIALEL FITXER SEQÜÈNCIAL EspecificacióEspecificació
obre : fitxer_seq x cadena x enter fitxer_seqtanca: fitxer_seq fitxer_seqcrea: fitxer_seq x cadena fitxer_seqafegeix: fitxer_seq x elem fitxer_seqmodifica: fitxer_seq x elem fitxer_seqposiciona: fitxer_seq fitxer_seqconsulta: fitxer_seq elemavança: fitxer_seq fitxer_seqfi?: fitxer_seq booleànbElems: fitxer_ seq enterbuit?: fitxer_seq booleàobert?: fitxer_seq booleànom?: fitxer_seq cadenamode: fitxer_seq enter
EL FITXER SEQÜÈNCIALEL FITXER SEQÜÈNCIAL OperacionsOperacions
f.obre (F, mode)f.tanca ()f. crea (nom)f.afegeix (r)f.modifica (r)f.posiciona() f.consulta()
f.avança()f.fi? ()f. nbElems? ()f.buit? ()f.obert? ()f.nom?() f.mode? ()
EL FITXER SEQÜÈNCIALEL FITXER SEQÜÈNCIAL Algorismes per a fitxers Algorismes per a fitxers
seqüèncialsseqüèncialsRecorregutCercaFusióConsultesModificació
EL FITXER RELATIUEL FITXER RELATIU Els fitxers relatius (F.R.) admeten Els fitxers relatius (F.R.) admeten accés accés
directe per posició i accés seqüencial directe per posició i accés seqüencial per posició.per posició.
La posició relativa des de l’inici del fitxer La posició relativa des de l’inici del fitxer ens serveix per a posicionar-nos ens serveix per a posicionar-nos directament sobre un registre.directament sobre un registre.
Els accessos es poden fer per a llegir Els accessos es poden fer per a llegir dades, escriure-les, modificar-les o dades, escriure-les, modificar-les o esborrar-les.esborrar-les.
EL FITXER RELATIUEL FITXER RELATIU Les operacions d’actualització i Les operacions d’actualització i
consulta no actuen només sobre consulta no actuen només sobre registres predeterminats. registres predeterminats.
El recorregut es basa en la posició El recorregut es basa en la posició que ocupen les dades, no en la que ocupen les dades, no en la relació antecessor-successor. relació antecessor-successor.
Estructuralment pot presentar Estructuralment pot presentar “forats” o tenir posicions indefinides.“forats” o tenir posicions indefinides.
EL FITXER RELATIUEL FITXER RELATIU EspecificacióEspecificació
obre : fitxer_rel x cadena x enter fitxer_reltanca: fitxer_rel fitxer_relcrea: fitxer_rel x cadena fitxer_relafegeix: fitxer_rel x enter x elem fitxer_relexisteix: fitxer_rel x enter booleàposiciona: fitxer_rel fitxer_relposiciona: fitxer_rel x enter fitxer_relmodifica: fitxer_rel x elem fitxer_relmodifica: fitxer_rel x enter x elem fitxer_relesborra: fitxer_rel fitxer_relesborra: fitxer_rel x enter fitxer_rel
EL FITXER RELATIUEL FITXER RELATIU Especificació (cont.)Especificació (cont.)
consulta: fitxer_rel elemconsulta: fitxer_rel x enter elemavança: fitxer_rel fitxer_relfi?: fitxer_rel booleànbElems: fitxer_rel enterbuit?: fitxer_rel booleàobert?: fitxer_rel booleànom?: fitxer_rel cadenamode: fitxer_rel enter
EL FITXER RELATIUEL FITXER RELATIU OperacionsOperacions
f.obre (F, mode)f.tanca ()f. crea (nom)f.afegeix (pos, r)f.posiciona( )f.posiciona (pos)f.existeix?( pos )f.modifica( r )f.modifica (pos, r)
f.esborra()f.esborra(pos)f.consulta()f.consulta(pos) f.avança()f.fi? ()f. nbElems? ()f.buit? ()f.obert? ()f.nom() f.mode? ()
EL FITXER RELATIUEL FITXER RELATIU Algorismes per a fitxers relatiusAlgorismes per a fitxers relatius
Recorregut parcial ordenat per posicióRecorregut parcial ordenat per posició amb actualització.
EL FITXER PER VALOREL FITXER PER VALOR Els fitxers per valor (F.V.) admeten Els fitxers per valor (F.V.) admeten
accés directe per valor i accés accés directe per valor i accés seqüencial per valor.seqüencial per valor.
El concepte de posició és substituït El concepte de posició és substituït pel concepte de valor. pel concepte de valor.
La clau forma part dels atributs.La clau forma part dels atributs. No té registres indefinits o posicions No té registres indefinits o posicions
indefinides.indefinides.
EL FITXER PER VALOREL FITXER PER VALOR EspecificacióEspecificacióobre : fitxer_per_valor x cadena x enter fitxer_per_valortanca: fitxer_per_valor fitxer_per_valorcrea: fitxer_per_valor x cadena fitxer_per_valorafegeix: fitxer_per_valor x elemClau fitxer_per_valorexisteix?: fitxer_per_valor x elemOrd booleàposiciona: fitxer_per_valor fitxer_per_valorposiciona: fitxer_per_valor x elemOrd fitxer_per_valormodificaSeq: fitxer_per_valor x elemClau fitxer_per_valormodifica: fitxer_per_valor x elemClau fitxer_per_valoresborra: fitxer_per_valor fitxer_per_valoresborra: fitxer_per_valor x elemOrd fitxer_per_valor
EL FITXER PER VALOREL FITXER PER VALOR EspecificacióEspecificacióconsulta: fitxer_per_valor elemClauconsulta: fitxer_per_valor x elemOrd (fitxer_per_valor,
elemClau)avança: fitxer_per_valor fitxer_per_valorfi?: fitxer_per_valor booleànbElems?: fitxer_per_valor enterbuit?: fitxer_per_valor booleàobert?: fitxer_per_valor booleànom?: fitxer_per_valor cadenamode: fitxer_per_valor enter
EL FITXER PER VALOREL FITXER PER VALOR OperacionsOperacions
f.obre (F, mode)f.tanca ()f. crea (nom)f.afegeix (r)f.existeix?( clau )f.posiciona( )f.posiciona (clau)f.modificaSeq( r )f.modifica (r)
f.esborra()f.esborra(clau)f.consulta()f.consulta(clau) f.avança()f.fi? ()f. nbElems? ()f.buit? ()f.obert? ()f.nom() f.mode? ()