0

データの配列を MySQL に保存する必要があります。ただし、配列の長さは固定されていません。

配列は次のようになります。

array(key1 => value1)

または好き

array(key1 => value1, key2=> value2)

等々。

固定長配列の場合、JOIN で問題を解決できます。JSON文字列として保存することを考えています

データテーブルは次のようになります。

id -- context -- content (JSON Str)

これは良い考えですか?これを行うためのより良い方法はありますか?
ありがとうございました

4

4 に答える 4

3

別のテーブルを検討することをお勧めします。これにより、後でクエリを実行するのがはるかに簡単になります。

data [table]
- id
- context

data_items [table]
- data_id [foreign_key]
- key
- value

1 つのデータ レコードにリンクして、配列内にあるのと同じ数の data_items レコードを挿入します。

于 2013-03-28T00:25:39.227 に答える
1

json 文字列内のデータにアクセスする必要がなく、この情報に基づいて行にアクセスしようとしないことが確実にわかっている場合は、json 文字列として保存するとうまくいく可能性があります。

通常は、2 番目のテーブルを使用してデータを正規化することをお勧めします。または、NOSQL データベース ソリューションに切り替えます。

于 2013-03-28T00:25:20.003 に答える
1

シリアライズされたデータは、PHP のシリアライズ形式や JSON のようなシリアライズ形式で格納できます。私の唯一の質問は、このシリアル化された配列内のデータにアクセスする必要があるかどうかです (つまり、このデータに対するクエリ)。何らかの ID に対して常にクエリを実行する場合は、これで問題なく動作するはずです。ただし、データベース内でそのデータを実際に操作する必要がある場合は、非構造化データを操作するための NoSQL ソリューションを検討することをお勧めします。

于 2013-03-28T00:27:09.713 に答える
1

はい、配列データを JSON に保存することをお勧めします。シリアル化する方が移植性が高く、私の経験では、UTF-8 文字の処理が優れています。

FTR 私は通常、膨大な量の「コンテンツ」データをデータベース内に保存しないようにしていますが、MongoDB のようなある種のニードル/ヘイスタック ファイル ストレージを選択しています。

于 2013-03-28T00:25:08.807 に答える