Remplissage aleatoire table SQL
Le but est cette foi-ci de remplir une table MySQL d'éléments aléatoires qui vont symboliser une liste chainée.
But du "jeu"
Nous allons essayer de construire plusieurs listes chainées ramifiées.
Pour cela il nous faut au moins les premiers maillons de la chaine.
Leur nombre sera prédéfini. Par contre, leur longueur et les ramifications seront aléatoires.
Algorithme
Structure de données
Nous allons utiliser une table SQL qui a trois colonnes: id, nom, parent.
Elle sera dans un premier temps, remplie avec des elements de premier niveau (les premiers maillons), qu'on reconnaitra par le fait qu'ils ont des parents à NULL.
Ensuite, nous allons construire les maillons suivant, en choisissant aléatoirement leurs parent parmi ceux existants.
Contrainte
Il faut garder un oeil sur l'id du parent de l'élément en cour de création: il ne faut pas qu'il soit le parent de lui même.
Pour cela, on lui laissera choisir l'id de sont parent parmi les (son_id - 1) éléments precédents.
Implémentation
Base de donnée: MySQL
La base de données, pour cet exemple ne requierera pas de mot de passe. Charge au lecteur de mettre en oeuvre cette condition.
Scripts: Shell et SQL
Nous nous servirons d'un script Shell et d'un autre SQL. Le lecteur comprendra assez vite pourquoi.
Il y a deux parties distinctes dans ce script:
- L'insertion des parents de niveau 1
- L'insertion du reste.
Il nous faut générer une chaine aléatoire pour le nom et aussi un id parent aléatoire mais borné.
Une fois les parent (elements de premier niveau) crées, alors nous pouvons enchainer les enfants.