Database design 根据动态列设计数据库

Database design 根据动态列设计数据库,database-design,Database Design,在我的项目中,“admin”可以动态创建文本字段(使用jsp+javascript),enter可以在文本字段中输入数据以进行保存。在后端,我必须将它们保存在数据库中。 问题是 1)如何根据管理员正在创建的文本字段动态创建列。 比如,如果他创建了5个文本字段,那么我们应该在数据库中创建5列,如果他创建了10列,那么我们应该创建10列。 我在mysql、jsp、struts、hibernate中这样做,如果您使用的是关系存储,那么这些都是针对变量行而不是列进行优化的。也就是说,考虑将变量编号放在行

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

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


我在mysql、jsp、struts、hibernate中这样做,如果您使用的是关系存储,那么这些都是针对变量行而不是列进行优化的。也就是说,考虑将变量编号放在行而不是列中

我的建议是简单地有一个标题表+一个细节表

然后header是a(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,则详细信息项目编号从1变为10;如果需要5,则详细信息项目编号从1变为5

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


如果现在只有20列,那么只需创建一个包含该数量列的表,并保留未使用的列

当管理员提出一个全新的列名时,这是否表示概念数据模型中添加了一个全新的列名?这是一个新属性吗?如果答案是“是”,您打算如何利用生成的数据库?您是否计划在检索时分析数据的语义?祝你好运!