1

一部のデータをmysqlに保存する方法に問題があります。リンクが押されたときにデータをphpファイルに渡し、このデータを取得してデータベース(mysql)に書き込むWebサイトがあります。キャンペーン ID と不明な数のパラメーターを渡しています。

http://domain.com/somefile.php?campaignid=1&parameter1=sometext1&parameter2=sometext2&parameter3=sometext3,....etc..

ユーザーがある種のcmsでパラメーターを作成するため、実際のパラメーターの数はわかりません。私が直面している問題は、それらをデータベースに保存する方法です。以下のようにしようと思っていましたが、それが正しくて最も効果的な方法かどうかはわかりません。

Combinations Table
-combination_id (Primary key and auto increment)
-campaign_id
-parameter1
-parameter2
-parameter3
-parameter4
-parameter5
-parameter6
-parameter7
-parameter8
-parameter9
-parameter10

この例では、ユーザーが 10 個を超えるパラメーターを追加/使用しないと想定しています (これは不十分だと思いますが、より良い解決策は得られません)。

また、この設計を使用する場合は、このファイルをチェックインして、各パラメータが存在する場合(渡された場合)、それらを渡してデータベースに書き込む必要があると想定します。

4

5 に答える 5

2

スキーマを正規化する必要があります。

次の表を想定します。

Entity: id, campaign_id, other fields.
Parameter: id, entityId, parameterValue.

これは多対一の関係です。

于 2012-12-07T09:42:36.430 に答える
1

すべてのパラメーターを json として 1 つのテーブル行に格納するのはどうですか?

于 2012-12-07T09:42:45.250 に答える
0

次のようなことを試すことができます:

  • combination_id (主キーの自動インクリメント)
  • キャンペーン ID (インデックス付き / 外部キー / 一意にすることはできません!)
  • param_name
  • param_value

取得するパラメーターごとにエントリを作成する必要がありますが、理論的には 1000 個以上のパラメーターを追加できます。

ただし、最速の方法ではない可能性があり、操作が少し難しい場合があります。

于 2012-12-07T09:42:43.113 に答える
0

URL を介して取得されるパラメーターの実際の数がわからない場合は、campaign_idに無限の数の値を格納するための最良のオプションがあります。

そのために、テーブルに複数の行を作成できます。お気に入り、

insert into table_name values(<campaign_id>,<parameter1>,<sometext>)
insert into table_name values(<campaign_id>,<parameter2>,<sometext>)
insert into table_name values(<campaign_id>,<parameter3>,<sometext>)
insert into table_name values(<campaign_id>,<parameter4>,<sometext>)

キャンペーンID が URL 内で一意であると仮定します。

于 2012-12-07T09:54:58.977 に答える
0

これは、nosqlデータベースが作成された種類のデータだと思います...少なくとも、それをsqlデータベースに強制しようとすると、常にある種のクラッジになります。(そこに行ったことがあります...)

私が見る限り、それを保存する方法は 3 つあります。

  1. あなたが提案したように。おそらくそれを処理する最も簡単な方法であり、おそらく最も効率的な方法でもあります。しかし、現時点では、大きな問題が発生している 11 個のパラメーターを取得しています...

  2. パラメーター テーブルを作成します - parameter_id、 - キャンペーン ID パラメーター (重要な場合は可能なパラメーター名) - これにより完全な柔軟性が得られます - ただし、単一の値を検索することを除いて、他のすべてはより困難になります。

  3. パラメータを結合し、それらをすべて text または varchar フィールドに保存します。これは、単一のパラメーター値を検索することを除いて、おそらく 1 よりもさらに効率的です。

    そして、私が追加することができれば

  4. postgresql などの配列型のデータベース システムを使用する

于 2012-12-07T09:50:40.540 に答える