Méthode de conception de tableaux de produits recommandée pour le système d'achat de produits alimentaires dans MySQL
Avec le développement d'Internet, de plus en plus de personnes choisissent d'acheter de la nourriture en ligne. Afin d'améliorer l'expérience d'achat des utilisateurs, de nombreuses plateformes d'achat recommanderont les produits correspondants en fonction des enregistrements d'achat et des préférences des utilisateurs. Cet article présentera la méthode de conception de la table des produits recommandés du système d'épicerie dans MySQL et fournira des exemples de code spécifiques.
Avant de concevoir la liste de produits recommandés pour le système d'épicerie, nous devons d'abord clarifier certains concepts et exigences. La fonction du tableau des produits recommandés est de recommander des produits susceptibles d'intéresser l'utilisateur en fonction de son historique d'achat et de ses préférences. Afin d'implémenter cette fonction, nous devons créer une table de produits recommandés pour stocker les informations associées entre les utilisateurs et les produits.
Tout d'abord, nous pouvons créer une table appelée recommandation pour stocker les informations d'association entre les utilisateurs et les éléments. Les champs de cette table peuvent inclure l'ID utilisateur (user_id) et l'ID produit (product_id), et d'autres champs auxiliaires peuvent être ajoutés, tels que l'heure de recommandation (recommend_time), etc.
Recommandation CRÉER UNE TABLE (
id int NOT NULL AUTO_INCREMENT, user_id int NOT NULL, product_id int NOT NULL, recommend_time datetime NOT NULL, PRIMARY KEY (id), INDEX user_id_index (user_id), INDEX product_id_index (product_id)
);
Les enregistrements d'achat et les préférences de l'utilisateur peuvent être obtenus via d'autres tableaux, tels que le tableau des commandes et le tableau des préférences de l'utilisateur. Ici, nous supposons qu'il existe déjà une table de commande nommée order et que les champs de la table de commande incluent l'ID de commande (order_id), l'ID utilisateur (user_id), l'ID de produit (product_id), etc.
CREATE TABLE order (
order_id int NOT NULL AUTO_INCREMENT, user_id int NOT NULL, product_id int NOT NULL, order_time datetime NOT NULL, PRIMARY KEY (order_id), INDEX user_id_index (user_id), INDEX product_id_index (product_id)
);
Lorsqu'un utilisateur passe une commande pour acheter un produit, nous pouvons insérer l'enregistrement d'achat dans le tableau des produits recommandés via un déclencheur ou une procédure stockée. Voici un exemple de déclencheur permettant d'insérer automatiquement les enregistrements d'achat dans le tableau des produits recommandés lorsqu'un utilisateur passe une commande.
DELIMITER //
CREATE TRIGGER after_insert_order
AFTER INSERT ON order
FOR EACH ROW
BEGIN
INSERT INTO recommendation (user_id, product_id, recommend_time) VALUES (NEW.user_id, NEW.product_id, NOW());
END//
DELIMITER ;
Grâce au déclencheur ci-dessus, lorsqu'une nouvelle commande est insérée dans la table de commande, A le nouvel enregistrement sera inséré en conséquence dans le tableau des produits recommandés.
En plus de recommander des produits en fonction des enregistrements d'achat des utilisateurs, nous pouvons également recommander des produits en fonction des préférences des utilisateurs. Supposons qu'il existe déjà une table de préférences utilisateur nommée préférence, qui contient l'évaluation des préférences de l'utilisateur pour le produit.
Préférence CRÉER UNE TABLE (
id int NOT NULL AUTO_INCREMENT, user_id int NOT NULL, product_id int NOT NULL, rating int NOT NULL, PRIMARY KEY (id), INDEX user_id_index (user_id), INDEX product_id_index (product_id)
);
Afin de mettre en œuvre une recommandation de produits basée sur les préférences de l'utilisateur, nous pouvons utiliser une méthode basée sur un algorithme de filtrage collaboratif pour insérer des informations associées entre les utilisateurs dans le tableau des produits recommandés. Ce qui suit est un exemple de procédure stockée pour insérer des enregistrements de produits recommandés en fonction des informations associées entre les utilisateurs.
DELIMITER //
CREATE PROCEDURE generate_recommendation()
BEGIN
DECLARE i, j INT; DECLARE user1_id, user2_id, product_id INT; DECLARE similarity FLOAT; -- 定义游标 DECLARE cur CURSOR FOR SELECT user_id, product_id FROM preference; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; -- 循环遍历用户 OPEN cur; read_loop: LOOP FETCH cur INTO user1_id, product_id; IF done THEN LEAVE read_loop; END IF; -- 查询与当前用户喜好相似的其他用户 SELECT user_id, rating INTO user2_id, similarity FROM preference WHERE user_id != user1_id ORDER BY ABS(rating - (SELECT rating FROM preference WHERE user_id = user1_id)) LIMIT 5; -- 插入推荐商品记录 INSERT INTO recommendation (user_id, product_id, recommend_time) SELECT user2_id, product_id, NOW() FROM preference WHERE user_id = user1_id; END LOOP; CLOSE cur;
END//
DELIMITER ;
Grâce à la procédure stockée ci-dessus, nous pouvons insérer des enregistrements de produits recommandés en fonction de la similarité des préférences entre les utilisateurs. De cette manière, lorsque l'utilisateur interroge les produits recommandés, il lui suffit d'obtenir les enregistrements correspondants de la table des produits recommandés.
Pour résumer, cet article présente la méthode de conception de la table des produits recommandés du système d'épicerie dans MySQL et fournit des exemples de code spécifiques. En analysant l'historique d'achat et les préférences de l'utilisateur, nous pouvons recommander des produits adaptés à l'utilisateur et améliorer son expérience d'achat. Bien entendu, en fonction des besoins réels et des scénarios d’application spécifiques, nous pouvons apporter les modifications et ajustements correspondants sur la base des méthodes ci-dessus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!