Maison  >  Article  >  développement back-end  >  Comment stocker des données de tableau dans MySQL : schéma à champ unique ou schéma relationnel ?

Comment stocker des données de tableau dans MySQL : schéma à champ unique ou schéma relationnel ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 19:14:02402parcourir

How to Store Array Data in MySQL: Single Field vs. Relational Schema?

Stockage des données de tableau dans MySQL : approches alternatives

Bien que stocker un tableau dans un seul champ MySQL puisse sembler une solution pratique, c'est généralement déconseillé car cela compromet l’intégrité des données et les capacités d’interrogation efficaces. Au lieu de cela, il est plus approprié d'ajuster le schéma de la base de données pour s'adapter aux différents éléments du tableau.

Exemple de refonte du schéma relationnel

Considérons un tableau avec la structure suivante :

$a = array(
    1 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
    2 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
);

Pour stocker efficacement ce tableau dans une base de données relationnelle, une table comme celle-ci pourrait être créée :

CREATE TABLE test (
  id INTEGER UNSIGNED NOT NULL,
  a INTEGER UNSIGNED NOT NULL,
  b INTEGER UNSIGNED NOT NULL,
  c INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY (id)
);

Options alternatives pour le stockage des données du tableau

Si stocker le tableau dans un seul champ est absolument nécessaire, des options telles que la sérialisation et l'encodage JSON peuvent être utilisées :

  • Sérialisation (serialize() et unserialize()) - Convertit un tableau en une chaîne pouvant être stockée dans un champ de base de données. Cependant, cela limite la possibilité d'interroger le contenu réel du tableau.
  • Encodage JSON (json_encode() et json_decode()) - Semblable à la sérialisation, mais offre plus de structure et d'interopérabilité.

Exemple d'utilisation de l'encodage JSON

Supposons que nous souhaitions stocker le tableau $a en utilisant l'encodage JSON :

$json_encoded = json_encode($a);

Pour récupérer le tableau depuis la base de données :

$json_decoded = json_decode($json_encoded, true);

Cette approche nous permet d'accéder directement aux éléments du tableau.

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!

Déclaration:
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