我需要建立一个潜在的聚合系统。通常,系统将执行的是存储客户端从登录页面(名称,电话,电子邮件等)发送的数据。
有趣的是,我不知道每个着陆页将包含哪些字段。因此,一个目标网页可能需要name
,phone
和email
,而其他目标网页则会收集email
和num_of_kids
。我还需要以某种方式保存字段的标题 - 因为我需要将num_of_kids
显示为Number of Children
。我只想把整个东西存放在一个字段中作为JSON对象,但这感觉很便宜和错误(并且它会吮吸排序并选择它)。
我愿意接受建议和解决方法的想法(解决方案不一定是严格的MySQL)。
编辑:我决定将MongoDB用于该项目。目前,这看起来是我今年做出的最好决定之一。
答案 0 :(得分: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
);
或者您可以将字段名称存储在一个表中,将值存储在第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)
);
答案 1 :(得分:1)
您是否考虑过将变量表单数据存储在XML字段中?然后,您可以使用ExtractValue
和XPath来获取值
答案 2 :(得分:1)