1

リード集約システムを構築する必要があります。一般に、システムが行うことは、クライアントがランディングページから送信するデータ(名前、電話、電子メールなど)を保存することです。

興味深いのは、各ランディングページにどのフィールドが含まれるかが先にわからないことです。したがって、1つのランディングページには、、およびが必要になる場合がありますが、他のランディングページにはname、およびが必要になります。また、フィールドのキャプションをなんらかの方法で保存する必要があります。これは、として表示する必要があるためです。単純にすべてを1つのフィールドにJSONオブジェクトとして格納することを考えていましたが、それは安くて間違っていると感じました(そして、それを並べ替えて選択するのは面倒です)。phoneemailemailnum_of_kidsnum_of_kidsNumber of Children

私は提案や回避策のアイデアを受け入れています(解決策は厳密にMySQLである必要はありません)。

編集:私はそのプロジェクトにMongoDBを使用することにしました。現時点では、今年私が下した最高の決断の1つに思えます。

4

3 に答える 3

1

可変形式のデータをXMLフィールドに格納することを検討しましたか?次にExtractValue、XPathで使用して値を取得できます

于 2012-07-16T08:03:18.887 に答える
1
#store minimal required data as the lead
CREATE TABLE leads (
   leads_id SERIAL,
   name TINYTEXT
)

#Store the rest of the data as key-value pair
CREATE TABLE leads_data (
   leads_id BIGINT UNSIGNED NOT NULL,
   field_name TINYTEXT NOT NULL,
   field_value TINYTEXT NOT NULL
);

または、フィールド名を1つのテーブルに格納し、値を3番目のテーブルに格納することもできます

CREATE TABLE leads_fields (
   leads_field_id SERIAL,
   field_name TINYTEXT NOT NULL,
   field_type TINYTEXT NOT NULL
);

CREATE TABLE leads_data (
   leads_id BIGINT UNSIGNED NOT NULL,
   leads_field_id BIGINT UNSIGNED NOT NULL,
   field_value TINYTEXT NOT NULL,
   PRIMARY KEY(leads_id, leads_field_id)
);
于 2012-07-16T07:46:24.693 に答える
1

問題は、 MongoDBのようなスキーマのないNoSQLデータベースで解決できます。

さらに読む: NoSQL

PS頑張って、楽しんでください:)

于 2012-07-18T18:08:42.143 に答える