2 votes

Conception de la base de données - stocker la sélection dans la base de données

Je travaille sur une application web pour laquelle je dois faire des recherches avant d'implémenter la base de données. J'espère que vous pourrez m'aider à prendre les bonnes décisions avant de commencer à coder.

Aujourd'hui, j'ai une base de données qui contient, entre autres, environ deux millions de contacts dans une table.

Contact : cid, nom, téléphone, adresse, etc.

Les utilisateurs de l'application peuvent effectuer des recherches dans la table des contacts sur la base de différents critères et obtenir une liste de contacts.

Les utilisateurs sont stockés dans une table distincte de la base de données

Utilisateur : uid, nom, email, etc...

Je souhaite maintenant que les utilisateurs puissent enregistrer un résultat de recherche en tant que sélection. La sélection doit être une liste de cid's représentant chaque contact dans le résultat de recherche obtenu par l'utilisateur. Lorsque la sélection est stockée, un utilisateur peut l'ouvrir et ajouter des notes, des statuts, etc. aux différents contacts de la sélection.

Ma première idée est de créer une table de sélection et une table de correspondance sélection-contact comme suit :

Sélection : sid, name, description, uid, etc.

SelectionContactMap : sid, cid, status, note, etc...

Avec une taille moyenne de sélection comprise entre 1 000 et 100 000 contacts, et plusieurs milliers d'utilisateurs stockant de nombreuses sélections, je constate que la table SelectionContactMap va devenir très volumineuse très rapidement.

La base de données est MySql et l'application est écrite en PHP. Je dispose d'un budget limité et je ne peux donc pas me permettre d'utiliser un nombre illimité de matériel.

Suis-je sur la mauvaise voie ?

Avez-vous des suggestions pour résoudre ce problème de la meilleure façon possible ?

  • Autre base de données ?
  • Suggestions spécifiques à MySql, type de table, etc.
  • Autre conception de base de données ?
  • Tous les commentaires et suggestions sont les bienvenus.

Merci d'avance :)

-- Tor Inge

0voto

podiluska Points 34522

Question : Que se passe-t-il si les résultats de la requête changent - par exemple, un contact sélectionné n'a plus l'attribut choisi ou un nouveau contact est ajouté ?

Si la réponse est "L'ensemble des résultats doit être mis à jour", vous devez stocker les critères dans la base de données, et non les résultats eux-mêmes.

Si vous devez mettre les résultats en cache pendant un certain temps, il est préférable que ce soit l'application qui s'en charge, et non la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X