根据动态列设计数据库

时间:2012-11-17 04:44:15

标签: database-design

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

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

我在mysql,jsp,struts,hibernate

中这样做

1 个答案:

答案 0 :(得分:1)

如果您使用的是关系存储,则会针对变量行而非列进行优化。即。考虑将变量数放在行而不是列中。

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

然后标题是(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列,那么只需创建一个包含该列数的表,并保留未使用的列。