찾다

 >  Q&A  >  본문

php - 제품 Infinitus 분류에 대하여 Mysql 테이블 디자인

현재 테이블은 3개 있습니다. 1: 상품 메인 테이블 ID 이름 가격

으아악

이전 테이블 구조는 위와 같습니다. 이제 상품의 해당 유형은 일대다일 수도 있고, 하나의 상품이 여러 유형에 대응할 수도 있으므로, 상품 유형을 업데이트할 때마다 삭제해야 합니다. 관계 테이블의 기존 내용을 삭제하고 새 유형의 관계를 삽입합니다.

상품 테이블:

으아악

상품_유형 테이블

으아악

그래서 다음과 같이 바꾸고 싶습니다. 기본 상품 테이블에 상품_유형 필드를 추가하여 상품_유형_맵 테이블을 교체하세요. 여러 유형을 구분하려면 쉼표를 사용하세요.

그런데 현재 특정 유형의 상품을 검색할 때 '좋아요' 쿼리를 사용하면 쿼리 오류가 발생하는 경우가 종종 있습니다. 그래서 이 상황을 어떻게 대처해야 하는지 여쭤보고 싶습니다

黄舟黄舟2757일 전670

모든 응답(6)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-05-16 12:04:51

    like를 사용하는 것은 좋은 선택이 아닙니다. 원본 포스터의 요구 사항을 해결할 수 있는 Mysql 함수 find_in_set을 권장합니다. 공식 문서: https://dev.mysql.com/doc/ref...

    회신하다
    0
  • PHP中文网

    PHP中文网2017-05-16 12:04:51

    재귀 구현을 위해 저장 프로시저 사용을 고려할 수도 있지만 이는 권장되지 않습니다. 무한 분류 자체는 서버와 데이터베이스에 대한 부담을 증가시키는 것은 말할 것도 없고 좋은 사용자 경험 디자인이 아닙니다.

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 12:04:51

    먼저 like를 사용하여 데이터의 일부를 찾은 다음 in_array()를 반복하여 필터링하거나 테이블 구조를 변경합니다

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 12:04:51

    당신의 관계는 분명히 다대다 관계입니다.
    그래서 테이블은 3개 정도 두시는 게 좋을 것 같아요.
    이것은 패러다임에 더 부합합니다.

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 12:04:51

    본래의 아이디어를 고집한다면 각 카테고리 ID 전후에 구분자를 추가하고, like와 일치할 때는 구분자를 추가하는 것이 더 합리적이어야 합니다.

    회신하다
    0
  • PHPz

    PHPz2017-05-16 12:04:51

    like를 사용할 때 예를 들어 1,2,11과 같은 값이 있으면 like 1은 1과 11을 좋아할 것입니다.
    이 경우 find_in_set을 사용하세요

    like를 사용하려고 하면 필드 값은 1,2,11이 될 수 있습니다. like ,1도 목적을 달성할 수 있습니다.

    회신하다
    0
  • 취소회신하다