> 데이터 베이스 > MySQL 튜토리얼 > 검색 엔진 통합을 위해 MySQL에서 쉼표로 구분된 목록을 효율적으로 비정규화하려면 어떻게 해야 합니까?

검색 엔진 통합을 위해 MySQL에서 쉼표로 구분된 목록을 효율적으로 비정규화하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-06 11:52:40
원래의
852명이 탐색했습니다.

How Can I Efficiently Denormalize Comma-Separated Lists in MySQL for Search Engine Integration?

원활한 통합을 위해 MySQL에서 쉼표로 구분된 목록 풀기

문제:

정규화되지 않은 테이블에서 열이 다음을 포함합니다. 별도의 테이블에 대한 외래 키 역할을 하는 쉼표로 구분된 목록입니다. 이로 인해 절차적 언어 지원이 부족한 검색 엔진에 데이터를 통합할 때 문제가 발생합니다. 목표는 이 목록을 여러 행으로 분할하여 궁극적으로 비정규화된 테이블을 생성하는 것입니다.

해결책:

MySQL은 본질적으로 테이블을 반환하는 함수를 제공하지 않지만, 솔루션을 구현할 수 있습니다:

  1. 데이터 준비: 먼저 정규화되지 않은 테이블의 기본 키(part_id)와 쉼표로 구분된 열(material)을 식별합니다.
  2. 쉼표로 구분된 값 추출: 쿼리를 활용하여 테이블에서 개별 값을 추출합니다. 쉼표로 구분된 목록입니다. 예:
SELECT part_id, REGEXP_SUBSTR(`material`, '[^,]+', 1) AS `material_id`
FROM unnormalized_table
로그인 후 복사

이 쿼리는 쉼표로 구분된 목록의 첫 번째 값을 Material_id 열에 할당하여 각 part_id에 대해 새 행을 생성합니다.

  1. 프로세스 반복: 위 쿼리를 반복하여 쉼표로 구분된 목록에서 후속 값을 추출합니다. 패턴을 사용하여 정규식에서 2(두 번째 값) 또는 3(세 번째 값)과 같이 목록 내 값의 위치를 ​​정의합니다.
  2. 결과 통합: UNION ALL을 사용하여 모든 개별 쿼리의 결과를 단일 테이블로 결합합니다. 그러면 여러 행이 원하는 비정규화된 형식으로 병합됩니다.

예:

이 솔루션을 문제 설명에 제공된 예에 적용하면 다음과 같은 결과가 나옵니다. 결과:

part_id material_id
339 1
339 2
970 2

결론:

문자열 조작과 하위 쿼리의 조합을 활용하면 MySQL에서 쉼표로 구분된 목록을 비정규화하는 것이 가능합니다. 이 기술을 사용하면 고급 절차적 언어 기능을 지원하지 않는 다양한 애플리케이션에 이러한 데이터를 원활하게 통합할 수 있습니다.

위 내용은 검색 엔진 통합을 위해 MySQL에서 쉼표로 구분된 목록을 효율적으로 비정규화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿