2010-08-10 65 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