2010-08-10 62 views
2

我有一个申请表和一个问题库,一个申请表可能包含一个或多个问题。当用户从库中选择一个问题并将问题添加到应用程序表单中时,他可以添加一些新的属性到问题中或者覆盖问题的现有属性(如果他愿意的话)。当用户完成问题选择时,他可以将申请表与所选问题一起保存。需要帮助一对多的关系设计

我现在的表结构是这样的:

TAB_FORM 
-------- 
ID INT(10) NOT NULL, 
... 

TAB_QUESTION 
------------ 
ID INT(10) NOT NULL, 
... 

TAB_FORM_QUESTION 
----------------- 
ID INT(10) NOT NULL, 
FORMID INT(10) NOT NULL, 
QUESTIONID INT(10) NOT NULL, 
NEWATTRIBUTE1 VARCHAR(20), 
NEWATTRIBUTE2 VARCHAR(20), 
... 

它,当用户增加了对一些问题的新属性工作正常,但如果用户想要覆盖问题的一些现有属性,它不会因为工作问题来自只读的图书馆。

我能否将所有字段从TAB_QUESTION复制到TAB_FORM_QUESTION,还是有其他解决方案?谢谢。

+0

这是纯JDBC吗? – 2010-08-10 02:25:42

+0

另外,当你说一个问题来自一个只读库时,你是什么意思?实际表是只读还是我误解? – 2010-08-10 02:48:15

+0

不,它不是纯粹的JDBC,我使用Hibernate。 问题在数据库中预先填充,创建申请表的用户没有写权限,所以它是只读的。 – 2010-08-10 03:19:20

回答

0

我想我必须将所有字段从TAB_QUESTION复制到TAB_FORM_QUESTION,然后我可以创建一个新类EmbeddableQuestion,它映射到这些字段并将EmbeddableQuestion嵌入类FormQuestion。 EmbeddableQuestion可能会扩展Question,但我认为这不是必须的。

+0

创建一个类EmbeddableQuestion看起来很麻烦,因为Question本身不超过10个字段,因此将这些字段放在FormQuestion中是可以的。现在生活比较容易,ApplicationForm和FormQuestion只是一对多的关系。 – 2010-08-10 06:11:21