1.1 [RAPPEL de 1er]
A) Données structurées
Les données structurées peuvent être représentées ainsi de façon abstraite :
- Chaque ligne est l'un des enregistrements / objets / n-uplets.
- Si la première ligne contient les noms des attributs, on la nomme en-tête.
- Chaque colonne comporte les valeurs associées à un même descripteur / attribut.
- L'ensemble des informations ayant la même structure d'attributs se nomme une collection ou une table.
- La case à l'intersection d'une ligne et d'une colonne se nomme un champ.
- Le contenu d'une case se nomme sa valeur.
Collection / Table | Attributs ou Descripteurs | |||
Pokemon n° | Nom | Type | Points de vie | |
---|---|---|---|---|
Enregistrement d'indice 0 | 1 | Bulbasaur | Grass | 318 |
Enregistrement d'indice 1 | 2 | Ivysaur | Grass | 405 |
Enregistrement d'indice 2 | 3 | Venusaur | Grass | 525 |
Enregistrement d'indice 3 | 3 | VenusaurMega Venusaur | Grass | 625 |
B) Fichier CSV
En 1er, vous avez vu qu'il était possible de stocker les données dans un fichier CSV situé dans une mémoire de masse, fichier qui a deux énormes avantages :
- C'est un simple fichier-texte
- Modifiable avec un simple éditeur de texte mais également avec un tableur
num;name;type;hp\n
1;Bulbasaur;Grass;318\n
2;Ivysaur;Grass;405\n
...
Désavantage : stocké en mémoire de masse donc accès très long....
C) Passage en RAM via la programmation
Les données de ce fichier peuvent alors être placées en mémoire vive (RAM). Pour cela, il faut :
- Implémenter chaque enregistrement dans un tuple ou un dictionnaire
- Implémenter la table dans un tableau de tuple ou un tableau de dictionnaires.
(1, "Bulbasaur", "Grass", 318)
{'num': 1, 'name': "Bulbasaur", 'type': "Grass", 'hp': 318}
[
(1, "Bulbasaur", "Grass", 318),
(2, "Ivysaur", "Grass", 405),
...
]
[
{'num': 1, 'name': "Bulbasaur", 'type': "Grass", 'hp': 318},
{'num': 2, 'name': "Ivysaur", 'type': "Grass", 'hp': 405},
...
]
Désavantage : le coût linéaire de la recherche dans un tableau. Avec 400 millions de données, cela devient vite long.