php - 带有 mysql 数据提交的表单设计器应用程序

标签 php mysql database-design

我想用 PHP 开发一个具有以下功能的应用程序

  • 用户可以使用表单设计器创建多个表单,其中包含他们想要的任意多个字段
  • 每次提交的表单都会存储在mysql中
  • 用户稍后可以看到相应的表单提交

我已经完成了 UI 部分和表单设计器。

问题

我无法弄清楚如何设计接受表单提交的数据库,例如,如果用户创建了一个包含以下字段的表单

  • 姓名
  • 电子邮件
  • 城市
  • 主题
  • 查询

但以后用户可以添加或删除字段而不会影响数据库设计。

请帮助我进行 MySQL 数据库设计,以便将表单存储到表中并在那里提交。

最佳答案

像这样:

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)
);

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

关于php - 带有 mysql 数据提交的表单设计器应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11390296/

相关文章:

php - WordPress 中的数据库错误

php - error_handlers 页面在部署时不显示

php - 查询失败 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法

javascript - 在 Popup 上,通过 ajax 读取数据两次 : php mysql

php - sphinx表在其他基础上查表

database - 如何在 "diamond-shaped"关系系统中保持外键关系一致

php - 通过 Composer 下载 Lumen 时出错

按字符串搜索 PHP MySQL 表 - 使用散列?

ruby-on-rails - 具有许多列的 ActiveRecord 表 : is there a better way?

产品及特色产品数据库设计建议