Trabalho 1 Bd2
Cette activité consiste à lire des fichiers de métadonnées et de données afin de simuler une requête « select * from table ». Pour cela, trois fichiers seront fournis : l'un contenant les métadonnées de la table (table.dic), un autre les métadonnées des attributs (att.dic) et un troisième contenant les données de l'une des tables présentes dans table.dic (11.dat).
T1 - Lecture de fichiers de données
Cette activité consiste à lire des métadonnées et des fichiers de données afin de simuler une opération SELECT * FROM table. Trois fichiers seront fournis à cet effet : l’un contenant les métadonnées de la table (table.dic), un autre contenant les métadonnées des attributs (att.dic) et un troisième contenant les données réelles de l’une des tables répertoriées dans table.dic (par exemple, 11.dat).
+-----------+ idtable +---------+
| table.dic |---------------<| att.dic |
+-----------+ +---------+
Implémentez une application C qui effectue les opérations suivantes :
- Lors de son exécution, le programme doit recevoir un paramètre (une chaîne de caractères) correspondant au nom logique (table) au sein de la base de données. Par exemple, si le programme s’appelle
select, la commande à saisir en ligne de commande (sous Linux) serait./select table. Le résultat doit être équivalent à une requête SQLSELECT * FROM table. - L'application recherchera dans
table.dicle nom de table passé en paramètre ; si elle le trouve, elle doit ouvrir en lecture le fichier correspondant au nom physique. La structure detable.dicest la suivante :
struct ttable {
int idtable; // identifiant de la table
char ctname[20]; // nom conceptuel de la table
char ptname[20]; // nom physique de la table
}
- Si le nom logique est trouvé dans
table.dic, le fichieratt.dicdoit être ouvert pour récupérer le schéma du fichier. Il est organisé comme suit :
struct tatt {
int idtable ; // identifiant de la table
char atname[20] ; // nom de l'attribut
char attype; // S (chaîne) I (entier) F (flottant) (C Char)
char isKey; // 1 indique une clé primaire
char atopt; // obligatoire (0) facultatif (1)
int atlen; // longueur
}
Envoyez un fichier ZIP contenant le code source créé (il est recommandé d’utiliser des fichiers .h et .c séparés), ou simplement le fichier source si tout est contenu dans un seul fichier. Le nom du fichier ZIP ou du fichier source doit correspondre à votre numéro d’étudiant. Exemple :
Imaginons une instance de table.dic contenant
<1, "car", "xyz.dat">, <2, "owner", "d001.dat"> et
une instance de att.dic contenant
<1, « model », 'S', 1, 0, 30>, <1, « year », 'I', 0, 0, 4>,
<2, « issn », 'S', 1, 0, 12>, <2, « name », 'S', 0, 0, 30>
Si le nom de l'application est selectDB, l'exécution sous Linux se ferait ainsi : ./selectDB owner (où « owner » correspond au nom de la table — le nom logique).
Le fichier d001.dat contiendra des données respectant le schéma correspondant à la table ID 2 (« owner ») dans le fichier att.dic : plus précisément, « issn » (une chaîne de 12 caractères, obligatoire et clé) et « name » (une chaîne de 30 caractères, obligatoire, non clé).
Enfin, le contenu du fichier physique (d001.dat) doit être répertorié. Pour simplifier les choses, vous n’avez pas besoin de traiter les attributs facultatifs, car tous seront considérés comme obligatoires. Résultat suggéré :
issn name
002322 John Wayne
230011 Anthony Hopkins
450001 Greta Garbo
Pour l’exercice proposé, les fichiers table.dic et att.dic contiennent les métadonnées des tables « student », « course » et « enrollment ». Seul le fichier physique correspondant à la table « student » a été fourni. Effectuez vos tests à l’aide de cette table. Lors de la notation, nous utiliserons les tables « course » et « enrollment » en plus de « student ».
