私は実際に整数値を持つ旅程項目のリストを持っています。私は50列のようにこれらのアイテムのそれぞれを使ってデータベースを作成することを考えていましたが、それは少し長めに見えました、そして旅程は変わるかもしれません。これらの名前=>値のペアをデータベースに格納するより良い方法はありますか?シリアライズは少し原油のようですが、名前、値の列を持つitinerary_items dbを作成し、そこでデータを固定することを考えていました。最高の解決策は何ですか?データベースに大きな配列を格納しています
答えて
テーブルのプロパティと同じように保存してみませんか?ソリューションのこの種類あるを使用してのアプローチで
| id| name | value | instance_key |
+---+------------+--------------+--------------+
| 1 | array_key | array_value | 1 |
| 2 | array_key2 | array_value2 | 1 |
| 3 | array_key | array_value | 2 |
| 4 | array_key2 | array_value2 | 2 |
問題:それは1つが、アレイの複数のインスタンスを望んでいる場合は、1が常にインスタンスを追跡するための余分なキーを追加することができ
| id| name | value |
+---+------------+--------------+
| 1 | array_key | array_value |
| 2 | array_key2 | array_value2 |
です人間が読めるデータの方がはるかに少ない傾向があり、オブジェクトに複数のプロパティがある場合は余分なジョインが多くなることがあります。
キーの列と値の列があり、前述のようにレコードを挿入します。
保存しているデータがデータベースの検索に使用されておらず、アプリケーションコードでのみ更新されている場合は、それをblobとして保存するようにします。意味のある更新を行うためにその一部を更新し、完全なデータセットを読む必要がない場合は、id、user_id、key、valueなどのカラムを持つ別のテーブルがあります。
forループを作成してINSERT文を作成し、クエリを実行してキーと値の列を持つテーブルに配列を保存します。配列を再作成するには、テーブルから検索し、別のforループを使用して値を配列に挿入し直します。
この種類のセットアップでは、データベーステーブルがアレイの1つのインスタンスのみを表すことができるため、アレイの複数のインスタンスを保存し、これらのインスタンスをすべて保存する必要がある場合のみ問題があります。
複数のインスタンスを作成する予定の場合は、シリアル化してBLOBまたはTEXT列に格納することをお勧めします。
いくつのレコードがありますか?百人?何千?
レコード数が500件を下回っている場合は、データベースを選択する必要はありません。 XMLファイルに保存することができます。これらは、NoSQL :)の時です。
私は動きをサポートしていませんが、データベースはあなたの要件を過大視するようです。
I)は、PHP5のjson_encode()とjson_decodeを(使用して、過去にこの種のもののためにJSONを使用しました機能:http://uk.php.net/json_encode
あなたがする必要があるのは、データベース内のテキストフィールドを持っていますJSONでエンコードされた配列を挿入します。保存しているデータを検索する必要がない場合は、JSON文字列をPHP配列に簡単かつ素早く変換して必要に応じて出力できるので、データを格納する方法は非常に効率的です。
PHPはまだそれほど外部クラスが必要とされ、YAMLを解析するための関数のセットに内蔵されているようには見えないが、あなたはまた、YAMLになります:http://railsforphp.com/2008/01/08/php-meet-yaml/ http://railsforphp.com/2008/01/08/php-meet-yaml/
あなたの最善かつ最も簡単な方法は、使用することですシリアライズ。
で最も単純なものは、「グループ化」されています(比喩的でSQLではありません)。多分。最初はベスト?いいえ! – brndnmg
なぜそれはいいことではないでしょうか? –
- 1. PHP - 大きなセッション配列を$ _SESSIONまたはデータベースに格納するには?
- 2. データベースに配列を格納する
- 3. derbyデータベースに配列を格納する
- 4. 大きい.txtファイルの値を配列に格納する
- 5. Node.jsオブジェクトをデータベースまたは配列に格納しますか?
- 6. データベースに配列属性を格納します。
- 7. 非常に大きなデータベースにエントリを格納する
- 8. データベースから選択して配列に格納する
- 9. SQLデータベースに大きなテキストのBLOBを格納するオプション?
- 10. 大きな配列をクッキーに格納する主なメリット/結果
- 11. 別の配列に配列を格納できますか?
- 12. セル配列matlabにハンドルを格納しています
- 13. バイナリビットを整数配列に格納していますか?
- 14. SQLiteデータベースを取得し、オブジェクトの配列に格納する
- 15. 大きなファイルを格納するためのNoSQLデータベース?
- 16. 大きな文書を格納するデータベース
- 17. 大きなファイルをSQLサーバーに格納
- 18. クラスデータを、変更できないスウィフト4の配列に格納します。
- 19. sharedpreferencesに配列を格納
- 20. 配列をデータテーブルに格納
- 21. php配列をjavascript配列に格納
- 22. mysqlデータベースから値を取得し、PHPの配列に格納
- 23. Android-データベースに文字列が格納されていない
- 24. 非常に大きな文字列または文字列を格納していますか?
- 25. MATLABは配列として文字列を格納します
- 26. $ _FILESからPHP配列を格納しています
- 27. Java - 配列に大量の値を格納する方法
- 28. PHPExcelを使用して大きな数値をセルに格納
- 29. ポイントのArrayListをバイト配列に変換してSQLデータベースに格納する
- 30. フォームから取り出した配列データをデータベースに格納します
これは私が念頭に置いたものですが、これが最善の解決策であるかどうかは分かりませんでした。 – brndnmg
インスタンスを追跡するために余分なキーを追加すると、それらのインスタンスの名前を付け、おそらく各インスタンスの名前を付けます。 –
共通foreign_key – brndnmg