Maison >base de données >tutoriel mysql >Comment stocker au mieux les paires clé-valeur dans une base de données relationnelle ?

Comment stocker au mieux les paires clé-valeur dans une base de données relationnelle ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-09 22:11:40761parcourir

How to Best Store Key-Value Pairs in a Relational Database?

Stockage des paires clé-valeur dans une base de données relationnelle

Lorsque vous stockez des paires clé-valeur dans une base de données relationnelle, tenez compte des éléments suivants :

Méthode 1 : table clé-valeur dédiée

<code class="language-sql">CREATE TABLE key_value_pairs (
    itemid           varchar(32) NOT NULL,
    itemkey         varchar(32) NOT NULL,
    itemvalue       varchar(32) NOT NULL,
    CONSTRAINT ct_primarykey PRIMARY KEY(itemid, itemkey)
);</code>

Ce schéma permet une insertion et une récupération faciles de paires clé-valeur, mais les requêtes deviennent complexes en raison de la nécessité de combiner plusieurs lignes.

Méthode 2 : Une série de colonnes de valeurs clés

<code class="language-sql">CREATE TABLE key_value_pairs (
    itemid            varchar(32) NOT NULL,
    itemkey1        varchar(32) NOT NULL,
    itemvalue1      varchar(32) NOT NULL,
    itemkey2        varchar(32) NOT NULL,
    itemvalue2      varchar(32) NOT NULL,
    ...等等...
);</code>

Cette approche simplifie les requêtes mais limite l'évolutivité puisque le nombre de colonnes doit être prédéterminé.

Autres considérations

Avant de choisir une approche, considérez les inconvénients du stockage des paires clé-valeur dans une base de données relationnelle :

  • Manque d'intégrité référentielle : La base de données ne peut pas assurer la cohérence entre les clés et les valeurs.
  • Limites de performances : Joindre des colonnes clé-valeur génériques peut ne pas être aussi efficace que l'utilisation de tables spécialisées.

Souvent, il est avantageux de créer un tableau séparé pour chaque champ (par exemple couleur, taille, tissu). Cela offre une meilleure intégrité référentielle, des performances plus élevées et une plus grande flexibilité.

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