J'ai une question à laquelle j'ai eu des conseils opposés, j'apprécierais des vues supplémentaires.MySQL: structure de table pour les "vues" d'un utilisateur
Mon site a des utilisateurs, chacun avec un user_id. Ces utilisateurs peuvent voir les produits et j'ai besoin de suivre les instances uniques des utilisateurs qui consultent des produits spécifiques. Pour enregistrer une vue dans une table de vue, puisque je l'ai eu actuellement deux options:
OPTION 1:
view_id (INT, PK) | user_id (INT, FK) | product_id (INT, FK) | view_date
... et de créer une contrainte unique sur les deux colonnes centrales pour une mise à jour facile avec la clé ON DUPLICATE. Si la même vue existe déjà, je mets juste à jour view_date. Sinon, j'écris une nouvelle ligne.
OPTION 2:
user_product (VARCHAR20, PK) | view_date
... fusionner les deux ID dans un VARCHAR avec un séparateur au milieu, et utiliser la colonne de clé primaire pour une mise à jour facile avec ON DUPLICATE KEY de la même manière que ci-dessus.
La structure doit pouvoir supporter jusqu'à env. millions de vues uniques. Des idées sur quelle option pourrait être meilleure ou pire, et pourquoi? Un grand merci d'avance.
EDIT: Merci pour les réponses, il semble y avoir un consensus. Était penché du même côté, mais avait juste besoin d'être rassuré.
Yep ... bien que ce soit mon comprendre que REPLACE "dépense" un ID INT d'auto-incrémentation (comme il s'agit de supprimer puis de réécrire), le type de données de la colonne PK devrait donc prendre en compte cela. – Tom