管理/处理多个单独的表格



我有一个有趣的问题,我一直在努力简化它。我有一个电信客户,他有几个注册表格,每个表格代表不同的项目/优惠。每个表单本质上是相同的,但有些表单有表单字段,而其他表单没有。可以想象,这在数据库和CRUD代码中都是一场噩梦。

目前,每个表单都是单独处理的,并进入每个应用程序表单的专用MySQL表中。非常可怕的是,每个应用程序都有一个单独的CRUD代码。关于如何最好地处理这种情况,我希望听从经验丰富的人的意见。

我考虑过将表单元素解析为CSV。我会定义一个识别元素的模式,这样CRUD就可以轻松地处理一个表。然而,这是一个问题,因为有时这些形式元素会发生变化,这会使一切都很难保持有序和干净。我还考虑过有一个带有标准元素的基本表单,然后需要不同元素的表单将用一些FK.存储在其他地方

我真的不知道该怎么做才能让这件事变得更容易。我讨厌有几个表用于应用程序,还有几个CRUD用于处理。。。

TLDR如何最好地管理在数据库中处理/存储几个独特/相当大(20个元素)的表单,并在它们上实现CRUD。

谢谢你抽出时间。

EDIT我还考虑过实现JSON或XML,它们将定义表单元素和可接受的数据类型。这可以由系统修改,保存后,可以为每个应用程序生成缓存的HTML表单页面和更新的SQL代码。这样,我就可以解决编辑问题。然而,基于这个实现,我仍然需要几个表。

实现这一点的一种方法是有一个基表,它只定义了所有表单共有的几个字段,包括某种ID。然后有一个单独的表,按每个表单的名称和值存储表单数据的所有其余部分。实际上,你有一个对象编号,然后为表单中的每一条数据都有一组属性名称/值。

CREATE TABLE submission {
submission_id INT,
creation_date DATETIME
};
CREATE TABLE submission_attributes {
submission_id INT,
attr_name VARCHAR(50),
attr_value VARCHAR(255)
};

这里的技巧是有一个通用的水合函数,可以将任何提交转化为有用的PHP对象或数组(无论您喜欢使用哪个)。

由于您的数据库只处理字符串,因此您的验证功能将需要了解什么是有效提交,什么不是。您将无法依赖数据库来拒绝无效数据。

另一种方法是使用对象数据库。我最喜欢的是MongoDB,它允许您将任意复杂的数据存储为JSON,甚至可以通过深度嵌套的对象属性进行索引/搜索。但也有其他工具可以完成这项工作。

最新更新