2012-07-09 90 views
1

我想开发PHP应用程序具有以下特点窗体设计器的应用程序

  • 用户可以使用表单设计与尽可能多的领域,他们希望
  • 创建多个表单中的每个表单提交会存储在MySQL
  • 用户可以看到相应的表单提交后

我也做了UI部分和表单设计器。

问题

我无法弄清楚如何。如果一个用户创建了形式以下字段

  • 名称
  • 电子邮件
  • 设计数据库,用于接受表单提交,例如
  • 城市
  • 对象
  • 查询

但是以后的用户可以添加或删除字段而不会搞乱数据库设计。

请帮我用MySQL数据库设计,将表格存入表格并在那里提交。

+0

另一种最适合NoSQL并将其填充到MySQL中的东西。 – Leigh 2012-07-09 07:04:36

回答

3

事情是这样的:

CREATE TABLE forms (
    form_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, -- the UID of this form 
    owner INT,          -- the user who "owns" the form 
    PRIMARY KEY (form_id) 
); 

CREATE TABLE fields (
    form_id BIGINT UNSIGNED NOT NULL, 
    field VARCHAR(10),       -- the field name 
    PRIMARY KEY (form_id, field), 
    FOREIGN KEY (form_id) REFERENCES forms (form_id) 
); 

CREATE TABLE submissions (
    submission_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, 
    form_id  BIGINT UNSIGNED NOT NULL, 
    field   VARCHAR(10), 
    value   BLOB,        -- stores PHP's serialize($var) 
    PRIMARY KEY (submission_id), 
    FOREIGN KEY (form_id) REFERENCES forms (form_id), 
    FOREIGN KEY (form_id, field) REFERENCES fields (form_id, field) 
); 

我建议修改表单的设计在数据库中创建一个新的(副本)的形式,以免失效基于旧设计任何历史提交。

相关问题