DevGirl-Team / tamagokill

Tamagochi, mais version Mirror universe ; Le but n'est pas de le tenir en vie, mais de le tuer. Projet open-source avec la communauté sur Twitch. Pour fêter les 4k followers.
MIT License
27 stars 5 forks source link

Proposition alternative de la DB #19

Open ferdodo opened 1 week ago

ferdodo commented 1 week ago
          ### Proposition alternative de la DB

DISCLAIMER: Je voulais faire plus de tables mais je suis limité à 15 sur drawSQL DISCLAIMER 2: C'est l'architecture de données en base, ça ne reflète pas la forme des données transitées par l'API ni celles côté front.

Utilise le principe d'event sourcing : on n'enregistre pas l'état du tamago à un instant T. On ne record en DB que 3 choses:

Le principe, c'est que quand un joueur lance une partie dans son navigateur, on rejoue en background la partie localement en lui envoyant:

Différences avec le design précédent

https://drawsql.app/teams/johnnyguyes-team/diagrams/copy-of-tamagokill

image

Originally posted by @JohnnyGuye in https://github.com/DevGirl-Team/tamagokill/issues/14#issuecomment-2185258924

ferdodo commented 1 week ago

Je propose quelques suggestions,

Revenir sur une table unique pour Player (On a pas besoin de profil utilisateurs comme Netflix)

Les joueurs (Player) on des cartes (Cards). (pas des user_cards) Les joueurs (Player) ont des Objects (Items). (pas des user_object) et surtout pas appeler ca Object, il faut éviter les mots conflictuels en js. Les tamago on des status (pas des tamago_status)

Supprimer Card et Object DeathType et Status. (Pourquoi faire une table en bdd pour du contenu statique ? Un fichier de config (ou autre) suffit, et ca permet aussi de supprimer trois table pivot)

Integrer le CardRanking a la Card. Integrer death au tamago.

Supprimer les stats et input_log et event ? (Overkill ? on a pas la maturite pour faire de l'event sourcing)

On se retrouve avec 5 tables. Simple.

Player Card Item Tamago Status