Database design 对超过80个输入字段的输入进行硬编码是否正常?

Database design 对超过80个输入字段的输入进行硬编码是否正常?,database-design,php,Database Design,Php,这是我第一次尝试从头开始做数据库工作,主要是为了学习。所以我不知道如何组织我的数据库和表。基本上,我想从一个web表单开始,将给定的数据放在几个表中。我不确定,因为每个教程只有3个输入字段,但我的表单可能会超过50个,可能接近100个 所以问题是,我真的应该把每个输入硬编码到对应的表中吗?例如: $customer\u name=$\u POST[“customer\u name”] 然后将这些变量插入我的数据库?我是否需要制作一个阵列并自动化一些工作?对于较大的表或多个表,标准的做法是什么?我

这是我第一次尝试从头开始做数据库工作,主要是为了学习。所以我不知道如何组织我的数据库和表。基本上,我想从一个web表单开始,将给定的数据放在几个表中。我不确定,因为每个教程只有3个输入字段,但我的表单可能会超过50个,可能接近100个

所以问题是,我真的应该把每个输入硬编码到对应的表中吗?例如:

$customer\u name=$\u POST[“customer\u name”]

然后将这些变量插入我的数据库?我是否需要制作一个阵列并自动化一些工作?对于较大的表或多个表,标准的做法是什么?

我有两个顾虑

  • 具有80列的表可能无法规范化。一旦你规范化了表格,你可能会发现屏幕尺寸缩小了
  • 页面上的80个字段似乎太忙了。正如您提到的使用一致的标题对表单进行分区,您可能希望对每个分区使用单独的表单。这些部分可能有助于数据的标准化

  • 不,那绝对不正常

    让我们暂时撇开表中80列是否合适的问题。(可能不是,但是……是的,让我们继续)对它们中的每一个都进行硬编码是绝对不合适的——有这么多字段,将它们定义为某种数组或结构,并以通用方式处理它们可能更有意义,例如

    $fields = ["customer_name", "blah", "blah2", "blah3", ...];
    
    foreach ($fields as $field) {
        $input = $_POST[$field];
        do stuff with $input;
    }
    

    您可以使用像Codeigniter这样的PHP框架,它使用活动记录。您可以通过向数据库传递数组来插入/更新数据库。另一方面,如果你的表格有100个条目,也许你应该考虑把你的表格分解成小块。我肯定会用手风琴头把它们切掉。这就是你这么说的原因,还是我在那么多领域都会有性能问题?我说的是更明智的性能。插入100项所需时间将超过50项。但是你也应该考虑一下你的桌子的宽度,这样会有巨大的性能冲击。如果一个表中有100、2000个varchar字段,查询性能将受到影响。最好将这些字段拆分为1-1个表。将输入拆分为几页,并在填写表单时使字段接受空值。