设计一个数据库,用于存储具有任意数量字段的表

时间:2012-07-16 07:40:14

标签: mysql sql

我需要建立一个潜在的聚合系统。通常,系统将执行的是存储客户端从登录页面(名称,电话,电子邮件等)发送的数据。

有趣的是,我不知道每个着陆页将包含哪些字段。因此,一个目标网页可能需要namephoneemail,而其他目标网页则会收集emailnum_of_kids。我还需要以某种方式保存字段的标题 - 因为我需要将num_of_kids显示为Number of Children。我只想把整个东西存放在一个字段中作为JSON对象,但这感觉很便宜和错误(并且它会吮吸排序并选择它)。

我愿意接受建议和解决方法的想法(解决方案不一定是严格的MySQL)。

编辑:我决定将MongoDB用于该项目。目前,这看起来是我今年做出的最好决定之一。

3 个答案:

答案 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)

您的问题可以通过无架构的NoSQL数据库来解决,例如MongoDB

进一步阅读: NoSQL

P.S。祝它好运,玩得开心:)