Passer au playerPasser au contenu principal
  • il y a 2 semaines
o2.3 Modéliser la BDD

Catégorie

📚
Éducation
Transcription
00:01Modéliser la base de données.
00:05Il est temps de modéliser votre première base de données.
00:09Nous allons organiser les informations nécessaires à votre projet d'application de manière structurée et visuelle.
00:17Cela va permettre de s'assurer que les données sont bien organisées et cohérentes,
00:23c'est-à-dire qu'on va avoir toutes les données nécessaires à l'application,
00:29et donc, comme ce sera très visuel, on vérifiera qu'on n'a rien oublié.
00:34La modélisation, c'est un schéma de la structure des données.
00:39Elle ne contient aucune donnée.
00:42C'est une erreur qui est fréquente, c'est que parfois vous essayez de mettre des chiffres, les noms, etc.
00:49à cette étape-là.
00:50Or, pas du tout.
00:52Ici, c'est vraiment juste la théorie.
00:55Comment on va s'organiser ?
00:57Quel type de données on va agréger ?
00:59Et comment on va caractériser ces données ?
01:02Et c'est ensuite, dans une solution comme Rtable, qu'on va créer nos tables, dans lesquelles on va créer
01:09les champs, d'accord ?
01:10Et qu'on va enregistrer la donnée en fonction de la structure qu'on aura définie ici.
01:17Il y a quatre principes importants à garder en tête.
01:19Déjà, il ne faut pas dupliquer les informations.
01:24On évite de répéter les mêmes informations à plusieurs endroits.
01:29Là, par exemple, je vous ai mis un schéma très simple qui servirait à créer un blog minimaliste.
01:38Dans un blog minimaliste, on a des articles et des auteurs, d'accord ?
01:45Et chaque article, donc en vert, pour différencier les types de données, là, par exemple, c'est une table article.
01:53En violet, c'est une table auteur.
01:56Et chaque article va être caractérisé par plusieurs champs.
01:59Ici, un titre, un résumé, du contenu, une date de publication, d'accord ?
02:05Qui va avoir un type de champ particulier.
02:08Donc, le principe de la base, quand vous allez modéliser, avoir en tête, c'est on ne duplique pas les
02:16informations.
02:18Par exemple, au lieu de stocker l'email de l'auteur, dans chaque article qu'il a écrit, on va
02:25créer la table auteur qui contient le mail de l'auteur et on va la lier à la table article.
02:34Comme ça, dans chaque article, on va dire l'auteur, c'est lui, ça sera un lien vers la table
02:40auteur.
02:40Et dans cet auteur, cette feature auteur, si vous voulez, on va avoir l'email de l'auteur.
02:48Donc, l'avantage de faire comme ça, c'est qu'on centralise toutes les informations au bon endroit et on
02:55fait les liens quand on a envie d'aller chercher une information ailleurs.
03:00Deuxième principe, il faut garder de la flexibilité.
03:04La modélisation, elle doit permettre des évolutions futures car le projet, il va évoluer.
03:09Et la base de données, elle va refléter ces évolutions.
03:13Par exemple, le blog minimaliste pourrait juste stocker le nom de l'auteur de l'article.
03:19Et dans une version 2 de votre application, peut-être que vous voudrez créer une page auteur avec les informations
03:27sur l'auteur qui a créé cet article.
03:30Et bien là, on va avoir besoin de plus d'informations.
03:33On ne va pas pouvoir se contenter de mettre juste, c'est écrit par Jean.
03:38Il va falloir qu'on ait son mail, sa photo, peut-être une petite biographie.
03:44Et donc, ça va justifier qu'on sorte en fait l'auteur dont on n'a pas besoin de beaucoup
03:50d'informations dans la version minimaliste.
03:52Et bien, on le sorte en fait dans une table auteur dans laquelle on va pouvoir mettre toutes ces informations.
03:57Et pour éviter la redondance, on fait une table à part qu'on va lier ensuite à notre article.
04:04Et bien, votre question quand vous allez travailler sur votre schéma, c'est est-ce que ça, on ne peut
04:10pas l'anticiper dès la V1 ?
04:12Parce que c'est une évolution assez logique de stocker un auteur à part.
04:18D'accord ?
04:18Donc, plutôt que de faire une V1, puis casser, faire une table liée, copier l'auteur qui était dans la
04:26table, l'article, le nom pour le mettre dans la nouvelle table liée.
04:30D'accord ?
04:31Puis, en richard à table liée, on a parfois intérêt, pour ce genre, vous voyez, de liens qui sont assez
04:39prévisibles, d'évolutions assez prévisibles et assez importantes,
04:43on a intérêt à le mettre dès la V1.
04:45Comme ça, on ne se fait pas suer à ensuite avoir une migration difficile en V2, c'est déjà fait.
04:50D'accord ?
04:51Donc, une base, la définition en tout cas, c'est beaucoup d'arbitrage pour savoir, tiens, est-ce que ça,
04:56c'est trop complexe ?
04:58Pas assez.
05:00Est-ce qu'on le met tout de suite ? Est-ce qu'on attend un petit peu ?
05:02Le risque étant, bien sûr, de prévoir des modifications apportées en V5, V6, en mode, oui, il faut aussi qu
05:10'on stocke peut-être des commentaires liés à cet auteur,
05:13il faut aussi qu'on stocke, je ne sais pas, des travaux de recherche de cet auteur, alors que ce
05:18n'est pas nécessaire, d'accord ?
05:20C'est peut-être beaucoup trop avancé dans votre projet.
05:22Donc, à cette étape, restez flexibles, implémentez ce qui a l'air assez évident et assez rapide, mais n'introduisez
05:29pas, s'il vous plaît, trop de complexité.
05:32Le risque, c'est de créer des champs qui ne vont jamais servir et qui vont alourdir votre base de
05:36données.
05:38Troisième principe, on utilise des noms clairs et descriptifs.
05:42Là, vous voyez ma table, article, auteur.
05:45Le nom des champs, pareil.
05:47Titre, résumé, contenu, date publication.
05:52C'est très, très clair.
05:53Et ça va nous faire gagner du temps parce qu'ensuite, on n'a pas besoin de documenter, normalement, les
05:59champs quand ils sont clairs.
06:01Dans l'air table, on verra comment on met une petite description de champ, une petite description.
06:05Mais en fait, si le titre, il est limpide, franchement, il n'y a pas besoin de ça.
06:09Et on ne va pas surcharger d'informations, pareil.
06:12Donc, tous ceux qui vont lire votre base de données, ils vont être capables de comprendre qu'est-ce qu
06:18'est le stock.
06:18Donc, d'accord ?
06:20Ensuite, dernier principe, on est le plus précis possible dans les champs.
06:27Quand on caractérise un champ, on doit vraiment dire qu'est-ce que c'est, qu'est-ce qu'on
06:33va stocker dedans.
06:34Et là, vous voyez notamment dans notre exemple qu'on a un texte court et un texte long.
06:41C'est un texte, mais ça, c'est assez fréquent.
06:45Ce n'est pas les mêmes, d'accord ?
06:47Et même si c'est assez générique, en fait, les bases de données veulent savoir si, pour des soucis d
06:54'optimisation,
06:56si c'est un texte qui tient sur une seule ligne, grosso modo un texte court,
06:58ou si c'est un texte long, type contenu d'un article.
07:02Parce qu'elles vont tout optimiser.
07:05Donc, plus vous êtes précis, plus la base de données optimise.
07:09Et en plus, vous allez voir que, par exemple, si on a un formulaire pour créer notre article,
07:13si on met un champ pour écrire le titre de l'article qu'on va poster, et un champ pour
07:18créer le contenu,
07:20et bien si on a choisi un texte court ou un texte long, on n'aura pas les mêmes tailles
07:25de champ visuellement dans notre formulaire.
07:29Donc, ça a des incidences, et donc il faut faire attention.
07:33Donc, ce que je vous propose, c'est que cette base toute simple, ce schéma,
07:37on va le modéliser dans un outil qui sert à faire ça,
07:41qui nous a servi à faire le Swimlane diagramme,
07:44et qui va nous servir aussi à modéliser nos schémas, sans complexité.
07:48Cet outil, c'est Wimsy Call.
07:51Il y a d'autres outils gratuits, mais lui est vraiment très efficace pour faire ça.
07:57Pourquoi pas un papier et un crayon ?
07:59Et bien, à ce stade, quand on définit sa masse de données, il y a une vraie réflexion.
08:05Il y a des arbitrages.
08:06On va partir sur un truc.
08:08En fait, on va changer.
08:09Bref, il y a énormément de retouches à faire, dans le nom des champs, pas clair, etc.,
08:14que si on fait un papier et un crayon, on va utiliser beaucoup de papier.
08:17Et notre but, en fait, dans cette phase, ce n'est pas de déforester la forêt amazonienne.
08:25Donc, on va plutôt utiliser cet outil numérique
08:29pour aller très vite dans les retouches, sans que ça devienne le bazar.
08:33D'accord ?
08:35Bon, et bien, écoutez, je vous propose qu'on aille dans Wimsy Call.
08:37Donc, dans Wimsy Call, vous pouvez créer un compte gratuit.
08:40Vous arriverez sur ce dashboard dans lequel vous avez vos applications.
08:44Vous pouvez créer des choses à partir de templates.
08:48Moi, ce que je vous propose, c'est de créer à partir d'un board.
08:50Très simple.
08:52Et on va nommer schéma, base de données, blog.
08:57Et vous voyez, j'ai mon canevas de travail.
08:59J'ai des templates.
09:01On n'a pas besoin de les explorer tout de suite, mais vous pourriez aller regarder ce qui se fait.
09:05Après, nous, pas besoin de complexité, on va faire quelque chose de très, très simple.
09:09Donc, on va utiliser par contre cette palette.
09:12Parce que dans cette palette, on va avoir dans les diagrammes shape l'élément table.
09:21Et donc, quand je clique sur table, je pourrais le faire sur Excel, mais c'est pareil.
09:24Dans Excel, je ne pourrais pas mettre des tables à côté, côte à côte,
09:27parce que si c'est sur la même ligne, vous voyez, je ne peux pas déplacer les tables facilement.
09:31Donc, là, on va pouvoir les déplacer, ajouter des lignes, faire des liens, mettre des notes.
09:37C'est très souple comme outil et je vous conseille de le faire plutôt avec Wimsy Call,
09:40surtout qu'il a un plan gratuit très généreux.
09:43Alors, donc là, je mets ma table.
09:45Donc, ici, je vais mettre le nom de ma table.
09:47Donc, je vais dire que je stocke des articles.
09:52Je vais me mettre sur la ligne d'une petite couleur.
09:57Et je vais donner un peu plus d'espace.
10:03Et donc, dans les articles, je vais dire, qu'est-ce que je stocke ?
10:06Voilà.
10:06Donc là, je donne la structure d'un article.
10:08Ce sera une table dans RTB.
10:11Je vais avoir le titre de l'article.
10:15Comment, quel type ça va être, ce champ ?
10:18Titre ?
10:18Eh bien, ça va être un texte.
10:20Mais à votre avis, texte court ou texte long dans ce qu'on s'est dit ?
10:27Exactement.
10:28Texte court.
10:29Parce que le titre d'un article, ça tient sur une seule ligne.
10:32Retenez ça vraiment.
10:33Si ça tient sur une seule ligne, visuellement, c'est un texte court.
10:36Un intitulé de poste, texte court.
10:38Un prénom, un nom, texte court.
10:41Et un titre d'article, texte court.
10:44Pourquoi je n'ai pas mis ici titre de l'article ?
10:47Eh bien, parce qu'on est dans la table article.
10:49Donc le titre, c'est forcément le titre de l'article.
10:53Et je ne veux pas de mots inutiles.
10:56De, L'.
10:58Ça, c'est des mots inutiles.
10:59En plus, il y a des espaces.
11:01En plus, il y a des caractères spéciaux comme des apostrophes.
11:05Tout ce que je ne veux pas.
11:06D'accord ?
11:07Donc, on reste le plus simple possible.
11:11Titre.
11:12Tout court.
11:14Pas de fioritures.
11:15Ça fait que...
11:16Enfin, ça rendra les choses difficiles à lire.
11:19Ensuite, je vais avoir le résumé de l'article.
11:21Résumé, c'est pas mal parce que...
11:22Et je ne mets pas d'accent.
11:24Toujours pour...
11:24Par respect de la convention de nommage.
11:26Parce que le résumé, quand on va avoir le contenu, c'est différent.
11:31Résumé, c'est en deux, trois lignes pour expliquer qu'est-ce qu'il y aura dans l'article.
11:36Et là, texte court ou long ?
11:40Ça dépend.
11:41D'accord ?
11:41Donc, effectivement, bonne réponse.
11:43Ça dépend.
11:45Parfois, un résumé, c'est...
11:46Enfin, allez, une ligne...
11:47Enfin, c'est une ligne et demie, quoi.
11:49Mais il n'y a pas de retour à la ligne, quoi.
11:51En fait, c'est sur la même ligne.
11:53C'est une phrase ou deux.
11:54Bon.
11:55Donc, ça ne sera pas un texte court.
11:57Bon.
11:58Si on veut un long résumé, je vous propose plutôt un texte long, parce qu'il peut être plus long
12:02que juste deux phrases.
12:04Donc, il faut anticiper.
12:06Ensuite, on va voir le contenu de l'article, qui lui sera exactement un texte long aussi.
12:14Qu'est-ce qui nous manque ?
12:15On a le titre, le résumé, le contenu, et bien la date de publication.
12:21C'est important, dès qu'on fait un blog, vous voyez, d'avoir l'historique, de pouvoir classer par date
12:26de publication.
12:27Et là, est-ce que c'est un texte ou autre chose ?
12:31Exact.
12:31C'est une date.
12:32C'est une date parce que ce n'est pas un texte, en fait, même si visuellement, on voit genre
12:3714 janvier 2025.
12:39Et bien, on va le stocker au format date.
12:41Et parce que c'est une date, on va pouvoir manipuler ça comme une date.
12:47Et c'est aussi l'avantage d'une base de données.
12:49C'est qu'on va pouvoir, par exemple, filtrer les articles qui sont dans une fourchette de date donnée.
12:56D'accord ?
12:57Donc ça, c'est vraiment l'avantage de stocker au plus près du type du champ.
13:02Ensuite, on pourrait avoir une illustration qui serait une image.
13:08Et on va avoir l'auteur.
13:12L'auteur de l'article.
13:14Et là, donc là, vous voyez, l'auteur, dans une version 1, texte court.
13:20D'accord ?
13:21Donc texte court, voilà, c'est l'auteur, il s'appelle un tel.
13:26Mais ça, si on veut mettre sa photo, son email, je ne sais pas, la liste des articles qu'il
13:33a écrit,
13:34ça risque d'être un peu compliqué, surtout s'il a un homonyme.
13:38D'accord ?
13:38Donc, c'est là où on se pose la question, est-ce qu'on n'a pas intérêt à anticiper
13:43?
13:44Et créer une autre table, en fait, auteur, qu'on va lier à la première, dans laquelle on va stocker
13:52tous les auteurs.
13:55D'accord ?
13:55Donc, je vais mettre une table auteur.
13:59Et en fait, je ne vais pas mettre, donc ça, ça serait ma V1, mais en fait, je me rends
14:02compte que je vais être très très court.
14:04Donc, je vais plutôt créer une table auteur.
14:06Et là, je vais mettre nom complet.
14:08Vous voyez, ma convention de nommage, pour plus de clarté, nom complet, texte court.
14:17Et maintenant, du coup, auteur, je vais dire, je vais le mettre en majuscule, parce que je dis ici, je
14:25ne vais pas stocker juste une donnée,
14:27je vais faire un lien vers ma table auteur.
14:29Et c'est un auteur que je vais stocker.
14:33Donc, ce n'est plus un texte court, c'est un auteur.
14:38Donc, non seulement, je mets ici, le type de données, ça sera un auteur, mais en plus, visuellement, je le
14:44nomme comme tel.
14:46Voilà, c'est un auteur.
14:48Nom complet, donc texte court, e-mail.
14:53Donc ça, deux choix, soit l'outil est un peu générique, donc ça sera un texte court, soit c'est
14:58un e-mail.
14:59Rtable gère les e-mails, comme un format de données à part, mais en général, les bases de données considèrent
15:04ça comme un texte.
15:05Bon, nous, on sait que ça.
15:06Prends les e-mails, donc on va mettre e-mail.
15:12Ensuite, je vais pouvoir mettre la photo.
15:16Donc là, ça serait une image.
15:17Et je peux mettre aussi dans l'auteur une liste d'articles.
15:20Donc là, je vais mettre, commencer par article, le nom de la table que je lis.
15:25Je vais le mettre au pluriel, comme ça, visuellement, je sais qu'il y en aura plusieurs.
15:31Mais parce que quand on voit beaucoup de données à la fin, on ne les voit plus vraiment très bien,
15:35je vais rajouter quelque chose d'assez visuel en disant, en fait, c'est une liste d'articles.
15:43Et là, je sais que c'est une table.
15:46Et donc, liste d'articles.
15:50Il y a une vraie différence entre les champs simples et les listes de données.
15:55D'accord ? Donc, précisez-le vraiment.
15:58Et faites attention quand vous modélisez votre base de données.
16:02Précisez quand c'est une liste de choses et une chose.
16:05D'accord ?
16:06Ici, c'est un auteur.
16:07Ici, c'est une liste d'articles parce qu'il va en écrire plusieurs.
16:09C'est hyper important.
16:11C'est deux choses totalement différentes dans une base de données.
16:14Donc, notez-les bien.
16:17Réfléchissez.
16:17Est-ce que c'est une chose ou plusieurs ?
16:19Parfois, il se peut qu'il n'y ait qu'une chose.
16:21Voilà, un auteur n'écrit qu'un article.
16:23Eh bien, ça sera une liste d'un article.
16:27Mais, vous voyez, la structure, c'est la bonne.
16:30C'est bien une liste d'articles.
16:31Même s'il n'y en a qu'un parce qu'il n'en écrira qu'un, ça, ce n
16:34'est pas grave.
16:35Si demain, il veut en écrire un deuxième, on peut accueillir le deuxième article.
16:39D'accord ?
16:39Alors que si vous n'avez pas anticipé, ça marchera que si vous avez des auteurs qui écrivent un seul
16:44article.
16:45D'accord ?
16:46Donc, ça ne serait pas bon.
16:48Donc, l'article, liste, et voilà.
16:51Donc là, j'ai un auteur et ma liste d'articles.
16:54Donc, ma base, elle est bonne.
16:56Mais comment on ferait si un article a un auteur principal et un auteur secondaire, un auteur associé ?
17:04Eh bien, il faut que je les différencie.
17:07Donc, je devrais rajouter un autre champ.
17:09Mais là, si je fais toujours un lien vers un auteur, je ne vois plus la différence.
17:14Auteur, auteur, c'est deux auteurs.
17:15Eh bien, c'est là où je vais, quand je fais référence à une autre table, mais qu'elles vont
17:22avoir, ça va être deux liens différents.
17:24Je vais ajouter un complément d'informations.
17:28Là, je vais mettre, par exemple, auteur principal, auteur secondaire.
17:34Et comme ça, je sais que c'est un auteur toujours, j'attends bien un auteur, mais que pour un
17:42auteur, il sera principal et l'autre, il sera secondaire.
17:45Voilà comment je peux qualifier l'information, donner plus de détails pour être sûr que ça ne soit pas juste
17:51un nom générique, auteur, un, auteur deux.
17:54Ça, ce n'est pas assez clair.
17:55Et il faut être très, très clair.
17:58Donc, s'il vous plaît, faites bien attention à ça.
18:00Voilà, donc, on a notre schéma de données.
18:03Il y en a qui pourraient faire des liens entre les données avec des flèches en disant, lui, il va
18:08être lié à ça.
18:09D'accord, les deux bases de données, elles sont liées.
18:11Bon, ici, c'est gentil.
18:14Alors, est-ce que c'est one too few, one too many, tout ça ?
18:18Vous avez certainement déjà vu ces symboles, en tout cas, vous les verrez sur les, comment dire, sur les différents,
18:25parfois, recherches, si vous faites des recherches sur la création de diagrammes, de bases de données.
18:30Mais le risque, c'est de surcharger et d'apporter finalement peu d'informations.
18:36Là, il n'y en a que deux, ça va, mais si vous en aviez plein, ce qui est le
18:38cas d'une base complexe avec plusieurs tables,
18:42croyez-moi qu'il y a des flèches partout, ça ne sert plus à rien.
18:44D'accord, donc, libre à vous, encore une fois, ce n'est pas faux, mais les informations ici, finalement, sont
18:52plus lisibles,
18:53et c'est ça qu'on va chercher, sont plus lisibles que de mettre des flèches qui courent dans tous
18:57les sens,
18:58et qui vont vous perdre et ne pas vous apporter beaucoup d'informations.
19:02Voilà, donc là, on a fait notre première base de données pour un blog simple.
19:07Cette base, elle évoluera avec votre projet, ne vous inquiétez pas, puisque la base reflète la complexité du projet.
19:13Notre schéma ne stocke aucune donnée, donc n'essayez pas de faire rentrer des données ici avec un utilisateur,
19:20un auteur, de maître ou à l'âge, de gens, machin, c'est pas ici que ça se passe.
19:25D'accord ? On va voir ensuite comment ça, on va le transcrire dans Rtable,
19:30parce que c'est dans Rtable qu'on va stocker l'auteur, l'article.
19:36D'accord ? Ici, on parle juste de la structure.
19:39Voilà, n'hésitez pas en tout cas à passer beaucoup de temps là-dessus.
19:44Dans cette réflexion, c'est vraiment, et faites-le avant de rentrer dans l'outil,
19:48surtout parce que dans l'outil, vous allez vous perdre, vous allez être distrait.
19:52Là, c'est sobre, et c'est pour ça aussi que j'aime Wipsy Code,
19:54c'est qu'on est très efficace et on se concentre sur de quoi j'ai besoin.
20:00Est-ce que là, je peux faire mon système, mon blog, avec juste ces informations-là ?
20:07Parce qu'il n'y a pas de magie.
20:08Si vous n'avez pas répertorié les informations ici, vous ne pouvez pas les utiliser.
20:12D'accord ? Voyez ça comme un jeu.
20:13Si je n'ai pas pensé à stocker, par exemple, un auteur,
20:17eh bien, je vais avoir un article de blog sans auteur, parce qu'il n'y a pas de magie.
20:22Voilà. Aujourd'hui, vous devez penser à tout,
20:24et tout, c'est la structure de vos données,
20:28parce que si l'information n'est pas répertoriée, elle n'est pas utilisable.
20:33D'accord ?
20:34Donc, passez du temps dessus, n'hésitez pas à faire des navettes,
20:37et vous allez voir que la réflexion sur votre application va s'améliorer.
20:42C'est une phase qui est vraiment très, très importante.
20:44C'est une phase qui est très importante.
20:44C'est une phase qui est très importante.
Commentaires

Recommandations