2009-04-17 14 views
0

現在、値を通常格納するテーブルがMySQLにありますが、都市などの値の配列を格納するテーブルにフィールドを追加します。そのアレイをCSVとして保存するだけでいいですか?各行はそれ自身の配列を必要とするので、前の表に挿入された各行に対して新しい表を作成し、2行から5行を挿入することは気になりません。テーブルの配列を格納/取得する最適な方法

私はこのような状況のように感じるが、名前を持つ必要があり、私はそれを考えることはできません:)

編集

要素の数 - 2-5(都市のダイナミックリストから選択し、配列はテーブルであるリストを参照します)

このフィールドは、検索可能である必要はなく、単に他のデータとともに検索される必要があります。

答えて

1

"正しい"方法は、各値を保持する別のテーブルを持つことですが、そのルートに移動したくないので、区切りリストが機能するはずです。データに表示されないデリミタを選択するようにしてください。また、データとのやりとりの計画に応じてXMLとしてデータを格納することもできます。

+0

テキストフィールドにデータを格納することを専念しており、XMLを検討している場合は、YAMLに少なくとも一瞥して渡すことで、自分自身でサービスを提供します。私が改宗者になれるのはまったく時間がかかりませんでした。 – Sniggerfardimungus

+0

必ずしも正しい/間違ったことではありません、私はこの情報を保存/取得する最良の方法を理解しようとしています。 – Blaine

0

多分あなたが探している言葉は「正規化」です。のように、配列を別のテーブルに移動し、キーを使用して最初のテーブルにリンクします。これにはいくつかの利点があります。

  • 配列サイズは成長することができ、ほぼ無限に

「のように」を使用することなく、配列の値を検索するための効率的なストレージ

  • 能力

    もちろん、このデータを正規化するかどうかの判断は、言及していない多くの要因、たとえばele番号が固定されているかどうか、要素を検索可能にする必要があるかどうかなどを指定します。

  • +0

    私はあなたの未知数に答えました – Blaine

    1

    コンマ(または他の論理区切り文字)で区切られた値を含むフィールドという考えになります。フィールドが最大配列サイズを保持するのに十分な大きさになるようにしてください。その後、フィールドを引き出すときは、デリミタを使用して長い文字列に対してexplode()を実行することが簡単になります。デリミタは、コード内に配列をすぐに配置します。

    0

    アプリケーションPHPはありますか?機能を調べる価値があるかもしれません。serializeおよびunserialize

    この2つの機能を使用すると、データベースに簡単にアレイを格納し、後でそのアレイを再作成することができます。

    0

    他の人が触れたように、もう1つのテーブルはの適切なです。

    しかし、MySQLでPHPを使用していると仮定して実際には(?)したくない場合は、serialize()を使用してシリアル化された値を保存してください。

    関連する問題