0

在我的项目中,“admin”可以动态创建文本字段(使用jsp + javascript)并输入可以在文本字段中输入数据以进行保存。在后端我必须将它们保存在数据库中。这里的问题是

1)我们如何根据管理员正在创建的文本字段动态创建列。就像如果他正在创建 5 个文本字段,那么我们应该在数据库中创建 5 列,如果他使用 10 列,我们应该做 10 列。

我在 mysql、jsp、struts、hibernate 中这样做

4

1 回答 1

1

如果您使用的是关系存储,那么这些会针对可变行而不是列进行优化。IE。考虑将变量数放在行而不是列中。

我的建议只是有一个标题表+一个详细信息表。

然后标题是(1),细节是多变的。那么您只需要详细信息中的 4 列

detail_id (pk), header_id (fk), detail_item_no, detail_value

和标题

header_id (pk), .. any other items that are in all types...

并为每个标题行添加任意数量的行。如果需要 10,则 detail_item_no 从 1 变为 10,如果需要 5,则 detail_item_no 从 1 变为 5

缺点是获取详细信息的查询稍微复杂一些,因为它涉及简单的连接而不是简单的选择。

OTOH,如果您现在只有 20 列,那么只需创建一个具有该列数的表,并保留未使用的列。

于 2012-11-17T04:56:04.560 回答