ホームページ  >  記事  >  バックエンド開発  >  MySQL に配列データを保存する方法: 単一フィールドとリレーショナル スキーマ?

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 19:14:02402ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。