0

我在一所拥有多种表格的大学工作。我们正在将旧系统(表单数据 -> 电子邮件)转换为更高效的系统 (sql),原因有很多:报告、速度、邮箱限制等。

我理解规范化和 sql 命令就好了......我挂断了这些:

  1. 必需与可选字段(空或单独的表)
  2. 对表单的更改(添加/删除字段以及它在表格设计中的反映方式)
  3. 1:1 表比或 1:N 表比
  4. 如果是1:N,这会影响每个表格的报告吗?

您是否知道一个网站/书籍/文章/教程,它提供了有关如何将表单数据存储在触及我关注的数据库中的大量信息?

或者,您能描述一下什么是“久经考验”的方法吗?

如果可能的话,我想以第三或第四次标准化为目标。


我最初的想法是:

  1. 创建一个表“应用程序”,其中包含所有必需(永久)数据的字段。
  2. 创建一个表“application_extra”,其中包含以下字段:application_id、field_title 和 field_value

但这可以用于报告吗?

谢谢!

4

1 回答 1

0

如果您正在处理静态表单,则表单/表格不会发生变化的真正风险,即使会发生变化,也需要快速更改表格列,以及一些 PHP 提交代码(即查询) ,就是这样。

动态表单有点不同(动态表单是由服务器以某种方式生成的表单,通过用户输入或服务器条件)。每个表单需要 2 个表,一个用于表单的结构,一个用于保存在其中的数据,其中结果以多对一的关系保存。

结构表示例:

CREATE TABLE IF NOT EXISTS `form_structure` (
  `id` int(10) unsigned NOT NULL,
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'Name of the form element as appeared on its name attribute',
  `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'text' COMMENT 'Type of the form element (text, password, checkbox etc).',
  `label` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'Label for the form element.',
  `can_be_null` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Whether the form element can be null.',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
于 2012-07-14T06:42:52.197 回答