Maison > base de données > tutoriel mysql > Comment puis-je dénormaliser efficacement les listes séparées par des virgules dans MySQL pour l'intégration des moteurs de recherche ?

Comment puis-je dénormaliser efficacement les listes séparées par des virgules dans MySQL pour l'intégration des moteurs de recherche ?

Barbara Streisand
Libérer: 2025-01-06 11:52:40
original
822 Les gens l'ont consulté

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

Démêler des listes séparées par des virgules dans MySQL pour une intégration transparente

Problème :

Dans une table non normalisée, une colonne contient une liste séparée par des virgules qui agit comme une clé étrangère vers une table distincte. Cela crée un défi lors de l’intégration des données dans un moteur de recherche dépourvu de prise en charge du langage procédural. L'objectif est de diviser cette liste en plusieurs lignes, pour finalement produire une table dénormalisée.

Solution :

Bien que MySQL ne fournisse pas de fonctions qui renvoient intrinsèquement des tables, un astucieux solution peut être mise en œuvre :

  1. Préparation des données : Tout d'abord, identifiez la clé primaire du table non normalisée (part_id) et la colonne séparée par des virgules (matériau).
  2. Extraction de valeurs séparées par des virgules : Utilisez une requête pour extraire des valeurs individuelles de la liste séparée par des virgules. Par exemple :
SELECT part_id, REGEXP_SUBSTR(`material`, '[^,]+', 1) AS `material_id`
FROM unnormalized_table
Copier après la connexion

Cette requête attribue la première valeur de la liste séparée par des virgules à la colonne Material_id, créant une nouvelle ligne pour chaque part_id.

  1. Répétez le processus : Répétez la requête ci-dessus pour extraire les valeurs suivantes de la liste séparées par des virgules. Utilisez un modèle pour définir la position de la valeur dans la liste, telle que 2 (pour la deuxième valeur) ou 3 (pour la troisième valeur), dans l'expression régulière.
  2. Uniter les résultats : Combinez les résultats de toutes les requêtes individuelles dans un seul tableau à l'aide de UNION ALL. Cela fusionnera les plusieurs lignes dans le format dénormalisé souhaité.

Exemple :

L'application de cette solution à l'exemple fourni dans l'énoncé du problème donnerait ce qui suit résultats :

part_id material_id
339 1
339 2
970 2

Conclusion :

En tirant parti d'une combinaison de manipulation de chaînes et de sous-requêtes, il est possible de dénormaliser les listes séparées par des virgules dans MySQL. Cette technique permet l'intégration transparente de ces données dans diverses applications qui ne prennent pas en charge les fonctionnalités avancées du langage procédural.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal