Je suis en train de mener un petit projet perso et j'ai besoin d'une petite base de donnée. Ne voulant pas m'embêter avec une "vraie" bdd pour différentes raisons je me suis tourné vers firebase que je découvre à l'occasion.
Je n'y connais pas grand chose (presque rien ?) en base de donnée, aussi je voulais vous demander votre avis sur la structure que je compte adopter. Si j'ai bien compris FireBase ne permet que des requêtes sur les noeuds de l'objet json ce qui rend la formulation de certaines requêtes dépendante de la structure de l'arbre choisit. Par exemple impossible de faire des SELECT LIKE comme en SQL.
Ma base de donnée est simple, il s'agira d'un site qui proposera des questions/réponses, la base de donnée devra donc stocker pour chaque question :
- La question
- La réponse
- Le theme
- L'auteur
Voici ce que j'aimerai pouvoir faire comme requêtes sur la base de donnée : - Récupérer les noms des questions par thème pour les afficher - Récupérer la réponse et l'auteur d'une question précise (l'auteur écrit la question et la réponse) - Récupérer les questions d'un auteur en particulier
Si j'adopte une structure "classique" comme la suivante il me sera impossible si j'ai bien compris de récupérer la liste des questions pas thème car cela ne correspond pas a un noeud et firebase ne peut faire des requêtes sur les valeurs des propriétés :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | { questions: { question1: { theme: "theme1", question: "question1", reponse: "reponse1", auteur: "auteur1" }, question2: { theme: "theme1", question: "question2", reponse: "Blablaba2", auteur: "auteur1" }, question3: { theme: "theme2", question: "question3", reponse: "Blablaba3", auteur: "auteur2" } } } |
Je pense que la structure suivante serait plus adaptée car en une requête je peux avoir ma liste des questions, les réponses aux questions ou les questions faites par chaque auteur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | { questionNames: { theme1: { question1: "question1 ?", question2: "question2 ?" }, theme2: { question3: "question3 ?" } }, reponses: { question1: { reponse: "reponse1", auteur: "auteur1" }, question2: { reponse: "reponse2", auteur: "auteur1" }, question3: { reponse: "reponse3", auteur: "auteur2" } }, auteurs:{ auteur1: { prenom : "Paul", nom: "Bismut", questions : { question1: "question1 ?", question2: "question2 ?" } }, auteur2: { prenom : "Jean", nom: "Bobine", questions : { question1: "question3 ?", } } } } |
Cette structure est-elle bien adaptée pour ce que je veux faire ou pas ? Si ce n'est pas le cas pourquoi ? Que me conseillerai-vous alors ?