음식 추천 기능을 구현하기 위해 고성능 MySQL 테이블 구조를 어떻게 설계하나요?
음식에 대한 사람들의 수요가 점점 높아지면서 음식 분야에서도 추천 시스템의 적용이 점차 늘어나고 있습니다. 음식 추천 기능을 구현하기 위한 고성능 MySQL 테이블 구조를 설계하는 것은 사용자 경험 향상과 플랫폼 개발에 중요한 역할을 할 것입니다. 이 기사에서는 이러한 테이블 구조를 설계하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.
1. 요구사항 분석
고성능 음식 추천 시스템을 설계하기 전에 먼저 시스템 요구사항을 명확히 해야 합니다. 일반적으로 음식 추천 시스템은 다음 요구 사항을 충족해야 합니다.
2. 테이블 디자인
위의 수요 분석을 바탕으로 추천 푸드 시스템의 기능을 지원하기 위해 다음과 같은 테이블 구조를 디자인할 수 있습니다.
CREATE TABLE user
(user
(
user_id
INT PRIMARY KEY AUTO_INCREMENT,
username
VARCHAR(100) NOT NULL,
gender
ENUM('male', 'female') NOT NULL,
age
INT NOT NULL
);
CREATE TABLE food
(
food_id
INT PRIMARY KEY AUTO_INCREMENT,
food_name
VARCHAR(100) NOT NULL,
food_type
VARCHAR(100) NOT NULL
);
CREATE TABLE user_food_rating
(
user_id
INT NOT NULL,
food_id
INT NOT NULL,
rating
FLOAT NOT NULL,
PRIMARY KEY (user_id
, food_id
),
FOREIGN KEY (user_id
) REFERENCES user
(user_id
),
FOREIGN KEY (food_id
) REFERENCES food
(food_id
)
);
CREATE TABLE user_food_preference
(
user_id
INT NOT NULL,
food_id
INT NOT NULL,
preference
FLOAT NOT NULL,
PRIMARY KEY (user_id
, food_id
),
FOREIGN KEY (user_id
) REFERENCES user
(user_id
),
FOREIGN KEY (food_id
) REFERENCES food
(food_id
)
);
CREATE TABLE food_similarity
(
food_id1
INT NOT NULL,
food_id2
INT NOT NULL,
similarity
FLOAT NOT NULL,
PRIMARY KEY (food_id1
, food_id2
),
FOREIGN KEY (food_id1
) REFERENCES food
(food_id
),
FOREIGN KEY (food_id2
) REFERENCES food
(food_id
user_id
INT PRIMARY KEY AUTO_INCREMENT,
username
VARCHAR(100) NOT NULL,
gender ENUM('남성', '여성') NOT NULL,<p> <code>age
INT NOT NULL);
CREATE TABLE food
(
food_id
INT PRIMARY KEY AUTO_INCREMENT,
food_name
VARCHAR(100) NOT NULL,
food_type VARCHAR(100) NOT NULL<br>);<br><ol start="3">
<br>사용자-음식 평가 테이블(user_food_ating): 사용자 ID, 음식 ID, 평가 값 등 사용자의 음식 평가 정보를 저장합니다. <br><br><br>CREATE TABLE <code>user_food_rated
(
user_id
INT NOT NULL,food_id
INT NOT NULL,등급
FLOAT NOT NULL,user_id
, food_id
),user_id
) REFERENCES user
(user_id), FOREIGN KEY (food_id
) 참조 food
(food_id
)
);
CREATE TABLE user_food_preference
(
user_id
INT NOT NULL,🎜 food_id
INT NOT NULL,🎜 preference
FLOAT NOT NULL,🎜 기본 키(user_id
, food_id
),🎜 FOREIGN KEY(user_id
) REFERENCES user
(user_id),🎜 FOREIGN KEY (food_id
) 참조 food
(food_id
)🎜);🎜food_similarity
(🎜 food_id1
INT NOT NULL,🎜 food_id2
INT NOT NULL,🎜 similarity
FLOAT NOT NULL,🎜 기본 키(food_id1
, food_id2
),🎜 FOREIGN KEY(food_id1
) REFERENCES food
(food_id),🎜 FOREIGN KEY (food_id2
) REFERENCES food
(food_id
)🎜);🎜🎜 3. 코드 예 🎜🎜🎜사용자의 추천 음식 목록 조회🎜🎜🎜SELECT f.food_name, f.food_type🎜FROM food f🎜INNER JOIN (🎜 SELECT food_id, SUM(유사성 * 선호도) AS Score🎜 FROM user_food_preference ufp🎜 INNER JOIN food_similarity fs ON ufp.food_id = fs.food_id1🎜 WHERE ufp.user_id = 1🎜 GROUP BY food_id🎜) AS t ON f.food_id = t.food_id🎜ORDER BY 점수 DESC🎜LIMIT 10;🎜🎜🎜음식에 대한 사용자 점수 업데이트🎜🎜 🎜INSERT INTO user_food_rated (user_id, food_id, rating)🎜VALUES (1, 1001, 4.5)🎜ON DUPLICATE KEY UPDATE rating = 4.5;🎜🎜위 코드 예제는 참고용이며 특정 상황에 따라 수정해야 할 수도 있습니다. 실제 응용 프로그램에서. 🎜🎜결론적으로, 합리적인 MySQL 테이블 구조 설계 및 최적화를 통해 고성능 음식 추천 시스템을 구현할 수 있습니다. 동시에 실시간으로 업데이트되는 전략과 정확한 추천 알고리즘이 결합되어 사용자의 취향에 가장 적합한 음식 추천을 제공할 수 있습니다. 물론 실제 적용에서는 시스템의 성능과 정확성을 더욱 향상시키기 위해 캐시, 검색 엔진, 데이터 샤딩 등과 같은 다른 요소를 고려해야 합니다. 🎜위 내용은 음식 추천 기능을 구현하기 위해 고성능 MySQL 테이블 구조를 설계하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!