MySQL での食品ショッピング システムの推奨商品テーブル設計方法
インターネットの発展に伴い、オンラインで食品を購入する人が増えています。ユーザーのショッピング体験を向上させるために、多くのショッピング プラットフォームはユーザーの購入記録や好みに基づいて対応する商品を推奨します。この記事では、MySQL で食料品ショッピング システムの推奨商品テーブルを設計する方法と、具体的なコード例を紹介します。
食料品ショッピング システムの推奨商品リストを設計する前に、まずいくつかの概念と要件を明確にする必要があります。推奨商品テーブルの機能は、ユーザーの購入履歴や好みに基づいて、ユーザーが興味を持ちそうな商品を推奨することです。この機能を実装するには、ユーザーと商品の関連情報を格納する推奨商品テーブルを作成する必要があります。
まず、ユーザーと製品間の関連情報を保存するための、recommendance という名前のテーブルを作成します。このテーブルのフィールドには、ユーザー ID (user_id) と製品 ID (product_id) を含めることができ、推奨時間 (recommend_time) などの他の補助フィールドを追加することもできます。
CREATE 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)
);
ユーザーの購入記録と好みは、注文テーブルやユーザー好みのテーブルなどの他のテーブルから取得できます。ここでは、order という名前の注文テーブルがすでに存在し、注文テーブルのフィールドには注文 ID (order_id)、ユーザー ID (user_id)、製品 ID (product_id) などが含まれていると仮定します。
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)
);
ユーザーが製品の購入を注文すると、トリガーを通じて推奨製品テーブルに購入レコードを挿入できます。またはストアド プロシージャの中間。以下は、ユーザーが注文したときに購入レコードを推奨製品テーブルに自動的に挿入するトリガーの例です。
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 ;
上記のトリガーを通じて、新しい注文が注文テーブルに挿入されると、それに応じて新しいレコードが推奨製品テーブルに挿入されます。
ユーザーの購入履歴に基づいて商品をレコメンドするだけでなく、ユーザーの好みに基づいて商品をレコメンドすることもできます。製品に対するユーザーの好みの評価が含まれる、preference という名前のユーザー好みのテーブルがすでに存在すると仮定します。
CREATE 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)
);
ユーザーのプリファレンスに基づいて製品の推奨を実装するには、協調フィルタリング アルゴリズムに基づくメソッドを使用して、おすすめ商品表 ユーザー間の関連情報。以下は、ユーザー間の関連情報に基づいて推奨製品レコードを挿入するストアド プロシージャの例です。
DELIMITER //
CREATE PROCEDURE generated_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 ;
スルー上記のストアドプロセスでは、ユーザー間の嗜好の類似性に基づいて推奨製品レコードを挿入できます。このようにして、ユーザーが推奨製品をクエリするとき、推奨製品テーブルから対応するレコードを取得するだけで済みます。
要約すると、この記事では、MySQL で食料品ショッピング システムの推奨商品テーブルを設計する方法を紹介し、具体的なコード例を示します。ユーザーの購買履歴や嗜好を分析することで、ユーザーに適した商品を推奨し、ユーザーのショッピング体験を向上させることができます。もちろん、実際のニーズや特定のアプリケーションシナリオに応じて、上記の方法に基づいて対応する修正や調整を行うことができます。
以上がMySQLでの食料品ショッピングシステムの推奨商品テーブル設計方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。