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

Patricia Arquette
Libérer: 2024-10-30 19:14:02
original
401 Les gens l'ont consulté

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
    ),
);
Copier après la connexion

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)
);
Copier après la connexion

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);
Copier après la connexion

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

$json_decoded = json_decode($json_encoded, true);
Copier après la connexion

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!