0

私はこのようにしようとしています:

すべてのユーザーは、このフィールドがそれぞれの値を処理できるフィールド(MySQLの構造など)を選択できます。これは、DB内でDBを実行するようなものです。
しかし、どうすれば単一のテーブルを使用してそれを行うことができますか?
(彼自身の「構造」へのポインタを使用できるはずのユーザーアカウントなどについては話していません)

次のようなことを行います:varchar Keyここで「Name:asd」のようなものを登録しますPHPが爆発します:それぞれの構造を取得します('name 'この場合)とそれぞれの値?('asd')BLOBを使用しますか?誰かが私のために電気をつけることができますか?私の現在の説明よりもうまくいく場所で何かをする方法がわかりません...

私のテキストは混乱していて、悪い英語をお詫びします。

編集:
また、彼らは新しい値を受け入れる複数のキー/「構造」を追加することができます
そして彼らはデータベースやテーブルを見ることができません、彼らはまだ通常のユーザーです
私のサーバーはPostogreをサポートしていません

4

5 に答える 5

2

私の意見では、2つのテーブルを作成する必要があります。

  1. ユーザー情報付き
  2. 3つのフィールド(ユーザーID、キー、値)

各ユーザーは、最初のテーブルに1つのレコードを持っています。各ユーザーは、2番目のテーブルに0個以上のレコードを持つことができます。これにより、データを引き続き検索でき、ユーザーは必要に応じてキーと値のペアを簡単に追加できます。

于 2012-07-03T07:14:02.670 に答える
1

データベースにデータベースを構築し始めないでください。この場合、ユーザーが自分でフィールドを作成するので、私が理解しているように、フィールド間に関係はありませんか?その場合、NoSQLデータベースはこの種の状況に非常に適しているように見えるので、それらを調べることは理にかなっています。

チェックするもう1つのことは次のようなものです: http ://www.postgresql.org/docs/8.4/static/hstore.html

レコード、フィールド、フィールドタイプなどのようなテーブルを作成しようとしないでください。これは悪い習慣であり、必要ないはずです。

あなたの希望に対するより具体的な答えについては、ユーザーが保存しているデータについてもう少し情報が必要です。

于 2012-07-03T07:21:16.303 に答える
1

この質問に対する合理的な答えはPeeHaaによるものだと思いますが、データを1つのテーブルに収めたい場合は、シリアル化されたPHP配列をフィールドの1つに保存してみてください。シリアル化と非シリアル化を確認してください

値の保存可能な表現を生成します

これは、タイプと構造を失うことなくPHP値を格納または渡すのに役立ちます。

この方法はスケーラブルではないため、お勧めしません。

于 2012-07-03T07:35:29.847 に答える
0

キーと値のペアを持つテーブルを使用します。したがって、3つの列:

  • ユーザーID
  • キー(「名前」)
  • 値( "asd")

ユーザーIDにインデックスを追加して、ユーザーの属性を簡単に照会できるようにします。同じプロパティを持つすべてのユーザーにクエリを実行する場合は、キーに2番目のインデックスを追加できます。

于 2012-07-03T07:14:49.317 に答える
0

データを取得して提示するためにもプログラミング言語を使用していることを願っています。

varcharフィールドを持つ単一のテーブルを持つことができます。次に、フィールド構造のシリアル化されたデータとその値をそのフィールドに保存します。構造を取得する場合は、データをクエリし、そのvarcharフィールドデータを逆シリアル化します。

私の知識によると、すべてのプログラミング言語はシリアル化と逆シリアル化をサポートしています。

編集済み:これはスケーラブルなオプションではありません。

于 2012-07-03T07:37:22.330 に答える