Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Structure de la base de données #34

Closed
Grafikart opened this issue Oct 21, 2019 · 11 comments
Closed

Structure de la base de données #34

Grafikart opened this issue Oct 21, 2019 · 11 comments
Labels
question Further information is requested

Comments

@Grafikart
Copy link
Owner

Grafikart commented Oct 21, 2019

Avant de choisir un type de base de données on va réfléchir à la structure de la base de données. Dans cette conception on ne prends pas en compte le framework qui sera utilisé, on se focalise sur la structure qui permettra une bonne structure et de bonnes performances.

Voila un premier jet :

Le gros changement par rapport à ma structure actuelle est l'utilisation d'une table "Content" qui permet de représenter un contenu et d'éviter les relations polymorphiques.

Questions :

  • Est-ce qu'on sépare l'historique du visionnage et la watchlist (à regarder plus tard). Sur cette version j'utilise un booléen "watched" car je pense qu'un contenu ne peut être à la fois vu et à regarder plus tard.
  • Les notifications vont être un problème (relation polymorphique)
  • Est-ce qu'on laisse les commentaire sans compte utilisateur ?
@Grafikart Grafikart added the question Further information is requested label Oct 21, 2019
@betaWeb
Copy link
Contributor

betaWeb commented Oct 21, 2019

@Grafikart salut,

Tu parlais de peut être partir sur PostgreSQL pour le SGBD, est-ce que c'est vraiment pertinent juste pour en utiliser une fonctionnalité ou deux ?
MySQL fait bien le travail, il est simple à prendre en main et tu as de l'expérience dessus qui plus est. Il répondra donc à tes problématiques.
Si tu as peur des perfs quant à la gestion d'arborescences ou de liaisons complexes, je suis certain que ceux-ci seront résolus via une mise en cache travaillée et / ou l'adoption de libs dédiées (à voir).

@acanoenfr
Copy link

Hey @Grafikart,

Je pense que mettre un commentaire sans s'être inscrit sur le site n'est pas nécessaire de remettre sur la prochaine version car s'inscrire ne prends pas beaucoup de temps (voire même moins avec l'omni-authentification) et aussi que la plupart des membres sont inscrits sur le site. Après c'est juste mon avis, à voir si jamais tu penses pareil ou si tu as d'autres arguments.

@mxmaxime
Copy link

Hi,

J'approuve totalement l'idée d'utiliser une nouvelle entité Content pour éviter les liaisons polymorphiques que je déteste. Pour une BDD relationnelle il faut vraiment éviter ce type de liaison, une bonne vieille clef étrangère est bien mieux.
Est-ce que tu vois un avantage aux relations polymorphiques ?

@felixdorn
Copy link

Hey,
Les commentaires des personnes non-inscrites, sont souvent des spams ou inutiles. Demander d'être authentifié pour poster un commentaire est une bonne idée.

@Grafikart Grafikart pinned this issue Oct 22, 2019
@Grafikart
Copy link
Owner Author

Je viens d'ajouter une table pour mémoriser les tentatives de connexions (pour lutter contre le bruteforce) et j'ai simplifié les commentaires.

@EmixMaxime Je dirais que les liaisons polymorphiques simplifie la structure mais en vrai ce type de relation n'est pas simple à gérer dans la base de données (surtout au niveau des containres).

@SylvanoTombo
Copy link

SylvanoTombo commented Oct 22, 2019

Pour l´historique de visionnage et la watchlist, je pense qu´il serait judicieux de garder le boolean ¨watched¨ et de trouver un nom generique pour reunir les deux..

@trockler
Copy link

Bonjour,
Ok pour la table "Content" éviter les liaisons polymorphiques et ne plus avoir le souci des relations pour le système de notification.

Je serai toi, j'oblige les personnes à se loguer pour pouvoir poster sur le site que ce soit commentaire ou forum, je rejoins ce que felixdorn dit souvent c'est du spam ou des attaques... en plus, l'inscription est gratuite donc fonce...

Un petit rajout pour la suite car je ne sais pas ce que tu penses de ton système de paiement... ( la tune, la tune : p)

Pour le système de paiement des comptes premium, rajouter d'autres systèmes et pas juste Paypal serait vraiment une très bonne idée ( Perso je sais que beaucoup de personnes n'utilisent pas Paypal du coup tu perds pas mal d'argent)

@Kearny
Copy link

Kearny commented Jan 29, 2020

Attention peut-être à choisir une seule langue pour nommer les tables.
Je vois d'un côté "User", "School" et "Attachment" et "Tutoriel", "Formation", "Cursus" de l'autre.
Je constate que la majorité des titres sont en anglais alors je propose de traduire les trois mots français par : "Tutorial", "Training" et "Curriculum".

Qu'en dis-tu ?

@ManiaK974
Copy link

Je pense que l'utilisatation de Mysql est convenable. Cependant, si tu souhaites gagner en perfs, il serait peut-être judicieux d'utiliser les fonctions et procédures que nous procure Mysql. Ainsi, tout calcul sera fait côté bdd et cela permettra d'increase les perfs.

Concernant les commentaires, je rejoins trockler et felixdorn. A mon sens, si on tient à participer, bah on se log.

Cependant, pour les notifications, je ne suis pas sûr de comprendre. De quel type de notification fais tu référence ?

@ManiaK974
Copy link

Hi,

J'approuve totalement l'idée d'utiliser une nouvelle entité Content pour éviter les liaisons polymorphiques que je déteste. Pour une BDD relationnelle il faut vraiment éviter ce type de liaison, une bonne vieille clef étrangère est bien mieux.
Est-ce que tu vois un avantage aux relations polymorphiques ?

L'avantage des relations polymorphiques réside dans le fait de pouvoir effectuer du duck typing (polymorphisme d'objet). Seulement cela rajoute une bonne couche de complexité, donc vraiment à faire en fonction de la structure de base. Perso, depuis avoir mis le nez dedans, j'évite maintenant.

@mxmaxime
Copy link

mxmaxime commented Mar 3, 2020

@ManiaK974 Merci pour ton retour d'expérience sur ces liaisons, je partage la même expérience. Je n'avais pas pensé au duck typing.

@Grafikart Grafikart unpinned this issue Aug 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

9 participants