HTMLForm数据库最佳实践:RDBM,规范化,必需/可选字段,添加/删除字段

时间:2012-07-13 15:11:56

标签: sql forms normalization

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

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

  1. 必需vs可选字段(null或单独的表)
  2. 更改表单(添加/删除字段及其在表格设计中的反映方式)
  3. 1:1表格与表格比例或1:N表格与表格比率
  4. 如果1:N,这是否会影响每个表单的报告?
  5. 您是否知道有关如何在数据库中存储表单数据的重要信息的网站/书籍/文章/教程?

    或者,您能描述什么是“经过验证的”方法吗?

    如果可能,我想瞄准第3或第4次标准化。


    我最初的想法是:

    1. 创建一个表“application”,其中包含所有必需(永久)数据的字段。
    2. 创建一个表“application_extra”,其中包含以下字段:application_id,field_title和field_value
    3. 但这可以报告吗?

      谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

结构talbe的例子:

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;