MySQL に配列データを保存する方法: 単一フィールドとリレーショナル スキーマ?

Patricia Arquette
リリース: 2024-10-30 19:14:02
オリジナル
401 人が閲覧しました

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

MySQL への配列データの保存: 代替アプローチ

単一の MySQL フィールドに配列を保存するのは便利な解決策のように見えるかもしれませんが、実際はそうではありません。データの整合性と効率的なクエリ機能が損なわれるため、通常は推奨されません。代わりに、配列のさまざまな要素に合わせてデータベース スキーマを調整する方が適切です。

リレーショナル スキーマの再設計の例

次の構造を持つ配列を考えてみましょう。 :

$a = array(
    1 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
    2 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
);
ログイン後にコピー

この配列をリレーショナル データベースに効果的に保存するには、次のようなテーブルを作成できます:

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)
);
ログイン後にコピー

配列データを保存するための代替オプション

単一フィールドに配列を保存することが絶対に必要な場合は、シリアル化や JSON エンコードなどのオプションを利用できます:

  • シリアル化 (serialize() および unserialize()) - 配列をデータベースフィールドに保存できる文字列に変換します。ただし、これにより、実際の配列の内容をクエリする機能が制限されます。
  • JSON エンコーディング (json_encode() および json_decode()) - シリアル化に似ていますが、より多くの構造と相互運用性を提供します。

JSON エンコーディングの利用例

JSON エンコーディングを使用して配列 $a を保存するとします。

$json_encoded = json_encode($a);
ログイン後にコピー

配列を取得するにはデータベースから:

$json_decoded = json_decode($json_encoded, true);
ログイン後にコピー

このアプローチにより、配列要素に直接アクセスできます。

以上がMySQL に配列データを保存する方法: 単一フィールドとリレーショナル スキーマ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!