Exercices du 1er Juin 2005
Exercices IBD 1 / 1
Séance d'Exercices IBD N°10
Exercice : Fichiers - Organisation
Une entreprise désire créer un fichier contenant pour chacun de ses 240 employés les informations suivantes: le nom (sur 25 caractères), le prénom (15 caractères), l’âge (nombre entier codé sur 2 caractères), l’adresse décomposée en numéro (nombre entier codé sur 2 caractères), rue (40 caractères), ville (25 caractères) et code postal (codé sur 4 caractères et pouvant être transformé en nombre entier).
On désire que ce ficher (de nom Femp) soir à accès sélectif. La solution retenue est l’organisation aléatoire où la clef est âge et la fonction de hachage est f(âge) = âge modulo 10.
Les contraintes matérielles font que les blocs d’entrée/sortie ne peuvent avoir une taille supérieure à 1024 caractères. La taille des blocs du ficher ne doit donc pas être supérieur à 1024.
1. De combien de blocs a t-on au minimum besoin pour pouvoir mémoriser les 240 employés?
2. En fonction du résultat obtenu à la question 1 et de la fonction de hachage f(âge) choisie, quel est le nombre minimum de blocs de débordement que l’on aura dans le fichier? La fonction vous semble t-elle judicieusement choisie?
3. On décide de prendre une autre fonction de hachage f’(âge) = âge modulo 50. Sachant que 80% des employés de cette entreprise ont entre 30 et 45 ans, la fonction f’ vous parait-elle suffisamment performante?
4. Proposer une autre fonction de hachage (éventuellement sur une autre clef) ne posant pas de problèmes.
Le fichier Femp à accès aléatoire étant créé, on désire maintenant lui associer un index secondaire dont la clef est le nom des employés. Evidemment, plusieurs employés peuvent avoir le même nom. Cet index doit donc être composé de 240 entrées ayant le format suivant: <nom, nb, ne>.
- nom: nom de l’employé
- nb: numéro de bloc dans Femp qui contient l’enregistrement de l’employé qui a ce nom - ne: numéro d’enregistrement dans le bloc nb
Exemple: si Femp contient les blocs suivants:
0 Duval jean ... Dupuis Martin Dupont ...
1 Henry Jean-Luc Dupuis Louis ... ...
l’index contiendra les entrées suivantes:
<Henry, 1, 1>, <Dupond, 0, 3>, <Dupuis, 1, 2>, <Dupuis 0, 2>, etc.
On désire que cet index soit un B-arbre d’ordre 4, trié par ordre alphabétique croissant.
5. Enregistrer successivement dans le B-arbre les valeurs suivantes:
<Kimberley, 24, 3>, <Buff, 31, 6>, <Mielke, 34, 1>, <Menoud, 16, 6>, <Stoll, 36, 8>, <Ferini, 31, 3>, <Basso, 32, 2>, <Sassi, 22, 1>, <Miguet, 26, 5>, <Dufaux, 27, 3>, <Diallo, 5, 2>. Quel est l’arbre obtenu après ces insertions?
6. Supprimer maintenant <Sassi, 22, 1>. Quel est l’arbre obtenu? Supprimez ensuite <Menoud, 16, 6>. Quel est l’arbre final.