Método de campos de pesquisa MYSQL

Por favor me ajude, estou muito confuso sobre a minha situação.

Estou começando a criar uma função de pesquisa, mas não tenho certeza qual é a melhor maneira de fazer isso. No front-end, os usuários poderão inserir palavras em um campo de texto, e então pesquisarão no banco de dados MYSQL, algo como abaixo:

então, eles pesquisam 'Adulto' e cada item_id (Chave Primária) com 'Adulto' na coluna 'nome' é listado. Ou eles entram em 'preto' e cada item_id com 'preto' em 'cores' é listado. ou eles entram em 'Adulto Azul' ecada item com 'Adulto'ou Azul subia. Tenho certeza que você entendeu a ideia.

Eu li em vários métodos, mas não consigo descobrir qual é o melhor:

Usando umMUITOS PARA UM table: Parece que funcionaria, mas existem mais de 500 itens exclusivos, o que seria milhares e milhares de linhas. Para item_id 1 eu teria que fazer uma linha para 'Adult', uma linha para 'Denim', uma linha para 'Pants', uma linha para 'black', uma linha para 'red', uma linha para 'blue'. Eu poderia muito bem codificar tudo.

UsandoFIND_IN_SET: Isso vai funcionar? Eu teria que armazenar os valores com vírgulas comoAdult,Denim,Pants e tambémEXPLODE separar os valores? Eu ia tentar esse método, mas eu continuo lendo que armazenar vários valores em um campo é uma prática muito ruim.

Ou sãoExpressões regulares O que estou olhando?

Qual é a melhor maneira de armazenar os valores e qual é a melhor maneira de recuperá-los? Eu não estou pedindo código exato, apenas os métodos a serem usados. Qualquer conselho é apreciado!