관계형 데이터베이스에서 열은 일반적으로 각 행에 대해 단일 값을 보유합니다. 그러나 특정 시나리오에서는 단일 열 내에 여러 값을 쉼표와 같은 구분 기호로 구분하여 저장해야 할 수도 있습니다. 이는 항등 연산자와 같은 기존 연산자가 더 이상 예상대로 작동하지 않기 때문에 데이터를 쿼리할 때 문제가 발생할 수 있습니다.
예를 들어 상위-하위 관계를 저장하는 다음 테이블을 고려해 보세요.
id name children 1 Roberto Michael,Dia 2 Maria John,Alex 3 Mary Alexandre,Diana
다음 쿼리를 사용하여 이름이 "Alex"인 자녀가 있는 부모를 찾으려고 하면
WHERE children = 'Alex'
그래도 결과가 0개 검색됩니다. 알렉스는 마리아의 자녀입니다. 이는 하위 열의 여러 값으로 인해 존재하지 않는 정확한 일치 항목을 찾고 있기 때문입니다.
이러한 상황을 처리하려면 대체 접근 방식을 모색해야 합니다.
스키마 정규화:
이상적인 솔루션은 스키마를 정규화하고 각 하위 항목에 대해 별도의 행이 있는 별도의 하위 테이블을 만드는 것입니다. 그리고 부모에 대한 참조입니다. 이렇게 하면 하위 이름을 기반으로 효율적인 쿼리가 가능합니다.
FIND_IN_SET 사용:
스키마 정규화가 불가능한 경우 FIND_IN_SET 함수를 사용하여 값이 쉼표로 구분된 목록 내에 존재합니다. 쿼리는 다음과 같습니다.
WHERE FIND_IN_SET('Alex', children)
이렇게 하면 Alex라는 자녀가 있는 부모가 반환됩니다. 그러나 FIND_IN_SET은 가장 효율적인 접근 방식이 아니며 정규화가 실행 가능하지 않은 경우에만 사용해야 한다는 점에 유의하는 것이 중요합니다.
위 내용은 단일 데이터베이스 열에 저장된 여러 값을 어떻게 쿼리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!