2010-07-01 4 views
0

Avoir une tâche pour faire des votes pour la photo. Parce que les utilisateurs ne peuvent voter qu'une fois pour la photo, je devrais les enregistrer. Je prévois de ne pas créer de table séparée pour enregistrer les identifiants d'utilisateur, mais de les enregistrer dans la table de photo dans le champ blob en les séparant par n'importe quel délimiteur. Que pensez-vous d'une telle pratique? Y a-t-il des problèmes cachés? Je vois avec une telle structure, je vais réduire le nombre de requêtes et de jointures.Déplacez les données de la table vers un autre champ de la table.

Répondre

0

Je pense que le problème que vous pouvez rencontrer est celui de l'évolutivité. Si ce site de vote photo devient très populaire, ces blobs deviendront assez volumineux, et placeront une charge plus importante sur votre langage de traitement côté serveur (php, asp, etc.).

Mes règles générales - les bases de données sont conçues par des programmeurs, beaucoup mieux que moi, pour faire une chose et faire une chose bien gérer les données. Votre traitement des données ne sera probablement pas aussi efficace que ce que la base de données peut faire. En d'autres termes, utilisez une jointure au lieu de la post-traiter vous-même.

1

Ne faites pas cela. Ce que vous essayez n'est pas rare, mais c'est presque toujours mal conseillé. Faire une autre table pour stocker les votes par photo par utilisateur. Vous opérez sous l'hypothèse (fausse) que la réduction de vos jointures et le stockage de ces données dans un champ blob entraînera un avantage de performance par rapport au stockage des votes dans une table, et c'est très (très) peu probable.

Quelques réflexions:

  1. En faisant cela, vous allez être nécessaire pour ramener chaque vote pour une photo donnée si vous voulez examiner tout des voix.
  2. Ceci est une recette pour corruption. Le stockage des ID utilisateur dans ce champ annule la possibilité de conserver une clé étrangère sur les votes. En d'autres termes, si un enregistrement d'utilisateur est modifié ou supprimé, il n'y a aucun moyen de mettre à jour les enregistrements de vote.
0

Un champ BLOB avec un délimiteur est l'une des pires façons absolues de stocker les données. Stockez-le correctement dans une table enfant avec une clé étrangère et un index sur la clé étrangère.

Questions connexes