2013-06-06 38 views
1

我有一個帶有servlet,jsp,java等的Java webproject。在那裏,我裏面有很多項目,我可以在這樣的組合框選擇:如何在一個數據庫字段中插入多個條目

Project [Combobox]  

Priority[Combobox]  Stage[Combobox] 

對於每一個項目,我可以在下拉列表優先級和階段選擇其他值。 所以我們可以說,優先級和階段的價值總是與選定的項目有關。

在我的表是這樣的數據庫:

Table project: 
projectid  
projectname 

Table priority 
id 
priorityname 
projectname 

知道我是否有優先級的值爲prio1,我想給這個值項目1和項目2,我必須做兩個項目在表中的優先級數據庫:這樣

id priorityname projectname 
1 prio1  project1 
1 prio1  project2 

但我想這樣做只有一個entrie數據庫:所以我在數據庫中的想法是這樣的:

id priorityname projectname 
1 prio1  project1,project2 

我對這個主題沒有太多經驗。所以我想告訴你,也許我的想法不好,我希望有一個更好的解決方案。

+1

我會堅持你現有的設計,並保持兩行。在需要編寫新查詢時,將多個數據項存儲在單個列中可能會迅速變成噩夢,而且幾乎總是意味着無索引可幫助加快查詢速度。 –

+0

如果你確實想真的去規範化模型,那麼如果你的DBMS支持數組數據類型的話,可以使用一個字符串數組而不是逗號分隔列表。 –

回答

2

您不能在一個數據庫字段中插入多個值。

根據您使用的數據庫,應該有不同的方式來達到您的目標。 如果您的數據庫支持它們(例如MySQL InnoDB數據庫),請嘗試使用外鍵

With 外鍵您需要指出Project表條目爲Priority條目。 那麼你可以做一個SELECT查詢,如:

SELECT * 
FROM projects, 
    priorities 
WHERE projects.proj_priority = priorities.prio_id 
    AND priorities.prio_name = "prio1" 

(假設)

的表是這樣的:

projects (proj_id, proj_name, proj_priority) 
priorities (prio_id, prio_name) 

其中proj_idprio_id是主鍵和proj_priority是外鍵。

相關問題