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