Aller au contenu

Base de données

Tableau des Rubriques

Libellé Exemple Genre Commentaire
1 Nom de l’application Unrecon Paramètre
2 Logo de l’application unrecon Paramètre
3 Prix de l’abonnement 5 Base
4 Durée de l’abonnement 1 Base en mois
5 Nombre de serveur de l’abonnement 1 Base
6 Nombre de mot de l’abonnement 50’000 Base par mois
7 Code promo PROMO2025 Base
8 Date de début de la promo 30/10/2025 Base
9 Date de fin de la promo 31/12/2026 Base
10 Réduction de la promo 10 Base en pourcentage
11 Identifiant discord de l’utilisateur pour le paiement 759243 Base
12 Identifiant stripe du paiement 243975 Base
13 Prix payé du paiement 4.5 Calculable prix de l’abonnement – la réduction de la promo
14 Date de début du groupe 30/10/2025 Base
15 Date de fin du groupe 30/11/2025 Base
16 Identifiant discord de l’utilisateur pour le groupe 759243 Base
17 Identifiant stripe pour le groupe 243975 Base
18 Identifiant discord de l’utilisateur sur liste noir 9823459 Base
19 Identifiant discord de l’administrateur 1982349 Base
20 Identifiant discord du serveur 172379 Base
21 Date et heure de l’ajout sur liste noir 30/10/2025 12H00 Base
22 Raison de l’ajout sur liste noir Propos haineux Base
23 Identifiant du serveur 172379 Base
24 configuration du serveur [“blacklist”:true, “whitelist”:true] Base
25 Identifiant discord de l’utilisateur sur liste blanche 3849823498 Base
26 Identifiant discord de l’administrateur 1982349 Base
27 Date et heure de l’ajout sur liste blanche 30/10/2025 12H00 Base
28 Nom de la catégorie Discussion Base
29 Identifiant discord du salon 2983498 Base
30 langue du salon FR Base
31 catégorie du salon Discussion Base
32 nombre de caractère du message 234 Base
33 date et heure du message 30/10/2025 12H01 Base
34 langue d’origine du message FR Base
35 Identifiant discord de l’utilisateur du message 3849823498 Base

Modèle Conceptuel de Données

MCD
Figure 1 — MCD

J'ai choisi de séparé la table Blacklists et la table Whitelists pour 2 raisons. La première étant que si un utilisateur est ajouté sur la blacklist, il est obligatoirement de tous les serveurs du groupe, vu que cette fonction est fait pour ça. Alors qu'un utilisateur whitelist ne concerne pas forcément le groupe. La deuxième est dans le cas d'une évolution future, les 2 peuvent être amené à évoluer différement en fonction des besoins.

La table Messages est relié à Servers, Categories et Channels. Ce choix a été fait pour s'implifié les transactions avec la base de données et le tri en fonction des différents éléments pour un futur affichage graphique.

Modèle Logique de Données

Subscriptions(id, basedPrice, duration, maxServers, maxWords)

Promotions(id, code, reduction, startDate, endDate)

Groups(id, ownerId, stripeId, startDate, endDate, #subscriptionId)

Payments(stripeId, date, paidPrice, #subscriptionId, #promotionId, #groupId)

Authorizations(userId, #groupId)

Servers(id, configuration, #groupId)

Blacklists(id, userId, adminId, date, reason, #groupId, #serverId)

Whitelists(id, userId, adminId, date, #groupId, #serverId)

Categories(id, name)

Channels(id, language)

Messages(id, length, date, userId, #groupId, #serverId, #categoryId, #channelId)

En gras, les tables en italique, les clés primaires et avec un #, les clés étrangères

Dictionnaire de Données

Tables Colonne Type Taille PK FK AI UN NU Valeur par défaut
Subscriptions id int 11 X X
Subscriptions basedPrice float 10
Subscriptions duration int 3 1
Subscriptions maxServers int 3 1
Subscriptions maxWords int 15 1000
Promotions id int 11 X X
Promotions code varchar 20 X
Promotions reduction int 3 0
Promotions startDate date X
Promotions endDate date X
Groups id int 11 X X
Groups ownerId varchar 25
Groups stripeId varchar 25
Groups startDate date X now()
Groups endDate date X
Groups subscriptionId int 11 X
Payments stripeId varchar 25 X
Payments date datetime X
Payments paidPrice float 10
Payments subscriptionId int 11 X
Payments promotionId int 11 X X
Payments groupId int 11 X
Authorizations userId varchar 25 X
Authorizations groupId int 11 X X
Servers id varchar 25 X
Servers configuration json X
Servers groupId int 11 X
Blacklists id int 11 X X
Blacklists userId varchar 25
Blacklists adminId varchar 25
Blacklists date datetime X
Blacklists reason varchar 1000 X
Blacklists groupId int 11 X
Blacklists serverId int 11 X
Whitelists id int 11 X X
Whitelists userId varchar 25
Whitelists adminId varchar 25
Whitelists date datetime X
Whitelists groupId int 11 X X
Whitelists serverId int 11 X
Categories id int 11 X X
Categories name varchar 50
Categories serverId varchar 25 X
Channels id varchar 25 X
Channels language varchar 5
Channels categoryId int 11 X
Messages id int 11
Messages length int 5
Messages date datetime X
Messages userId varchar 25
Messages groupId int 11 X
Messages serverId varchar 25 X X
Messages categoryId int 11 X X
Messages channelId varchar 25 X X

Ici, tous les ID de type int(11) sont générés par l'application, tandis que tous les ID de type int(20) sont générés par d'autres applications et doivent être stockés.

Modèle Physique de données

MPD
Figure 2 — MPD