Comment stocker efficacement des tableaux dans MySQL
Il est souvent nécessaire de stocker des tableaux dans une base de données pour diverses raisons. Cependant, contrairement à d'autres langages de programmation qui peuvent avoir des types de données intégrés pour les tableaux, MySQL ne dispose pas de type de données dédié au stockage des tableaux. Cela pose la question de savoir quelle est la meilleure approche pour enregistrer des tableaux dans MySQL.
Les tableaux peuvent-ils être stockés dans un seul champ ?
La réponse simple est non, il n'y a pas méthode recommandée pour stocker un tableau dans un seul champ MySQL. Le stockage de tableaux dans un seul champ entraîne des problèmes d'intégrité des données et rend difficile l'interrogation et la récupération efficaces des données.
Approche alternative : modélisation des données relationnelles
L'approche recommandée consiste à examiner vos données relationnelles et à apporter les modifications appropriées à votre schéma. Cela implique de créer des tables et des colonnes distinctes pour représenter différents aspects des données du tableau. En normalisant les données, vous maintenez l'intégrité des données et facilitez l'interrogation et la récupération efficaces.
Utilisation des fonctions de sérialisation
Si vous devez absolument stocker un tableau dans un seul champ, vous peut utiliser des fonctions de sérialisation comme serialize() et unserialize() ou json_encode() et json_decode(). Ces fonctions convertissent les tableaux en chaînes pouvant être stockées dans un seul champ. Cependant, cette approche a ses limites.
Vous ne pouvez pas effectuer de requêtes sur le contenu réel des données sérialisées. Cela augmente également la taille des données stockées, en fonction de la complexité du tableau.
Exemple : Modélisation de données relationnelles
Considérons le tableau PHP suivant :
$a = array( 1 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), 2 => array( 'a' => 1, 'b' => 2, 'c' => 3 ), );
Pour stocker ce tableau dans MySQL à l'aide de la modélisation de données relationnelles, créez une table nommée 'test' avec ce qui suit structure :
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) );
Insérez les données du tableau dans la table à l'aide de requêtes telles que :
$query = "INSERT INTO test (id, a, b, c) VALUES ($k, $v['a'], $v['b'], $v['c'])";
Pour récupérer les données de la table, effectuez des requêtes telles que :
$query = 'SELECT * FROM test'; $ret[array_shift($o)] = $o;
Cette approche vous permet d'interroger et de récupérer efficacement des informations spécifiques du tableau tout en préservant l'intégrité des données.
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!