2016-12-11 31 views
-2

私はMySQLデータベースを必要とするプロジェクトに取り組んでいます。1つのmysqlエントリに配列/リストを格納する

プロジェクトはクイズ/スタディサイトであり、ユーザーのログインデータと、保存したクイズのリストと、保存した各クイズの各質問に対するスコアを保存する必要があります。つまり、ユーザー1がいるとします。私は "user_content"というテーブルに行き、保存したクイズとそのクイズのスコアを見ることができます。

クイズは一意のデータベースで作成され、外部キーを介して参照されます。

問題は、「user_content」セクションに固定数のカラムを必要とするため、ユーザが保存したクイズのすべての外部キーを持つカラムが1つ必要です。私はあなたが "クイズ-1"と "クイズ-2"という列を持つシステムを望んでいません。クイズの外部キーのリストまたは配列を格納する列を1つだけ持つ方法がありますか?お気に入りのクイズのユーザーのスコアを格納する場合も同じです。すべてのスコアの配列/リストを格納する単一の列が必要です。これはMySQLで可能ですか?これを実現する最善の方法は何ですか?

+1

あなたの質問をこれまでに行ったことで更新しますか?あなたの質問をデータベース構造で更新するだけでは、解説は解答には不十分です。 – Bhavin

+0

http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database-column-really-that-bad/3653574 – e4c5

+0

正規化を参照してください.... – Strawberry

答えて

0

コメントのように、これは明確に定義されたRDBMS構造で実行できます。例:クイズIDのテーブルと各クイズの外部キーの行項目クイズIDテーブル。

あなたの質問に答えるには、json_encode()にPHP配列を渡して、それをMySQLフィールドに挿入することで、配列をjsonとしてMySQLデータベースに格納することができます。長期的には、これはクエリを書くときのパフォーマンスと柔軟性に影響する可能性があります。配列の構造を復元するには、json_decode()をPHPで実行しなければなりません。しかし、これは質問の要件を解決するだろう。

関連する問題