2010-10-02 157 views
0

我有一個映射到數據庫的問題。問題是這樣的。一對多映射

有兩個實體叫做Employee(empID,empName)Task(taskID,taskName)

  • 員工可以有零或更多任務。
  • 任務可以有零或一個員工。

會是怎樣,我應該遵循表結構..

我會在使用Spring MVC實現此方案以及java.How Hibernate可以我解決了這個問題..

任何想法?

在此先感謝!

+0

xml或註釋? – Bozho 2010-10-02 16:56:01

+0

我想使用xml.For暫時就足以得到表格的結構。我的意思是我應該創建多少個表格。任何方式thnx yahh .. – smartcode 2010-10-02 17:02:38

+0

所以你實際上需要兩個不同的單向關聯,對嗎? – 2010-10-02 20:56:22

回答

0

看起來你可能需要另一臺名爲EMPLOYEE_TASKS:

ID - sequence, PK. 
EMPLOYEE_ID, numeric, not null, FK to ID in the EMPLOYEE table. 
TASK_ID - numeric, unique key, not null, FK to ID in the TASKS table. 

您的0或1的員工/任務需求是由英國的TASK.TASK_ID處理。 您每個員工的0對多任務由EMPLOYEE_ID + TASK_ID對處理。因爲TASK_ID是唯一的,所以這一對並不需要。在現實世界中,我可能會將其作爲索引。

現在我會使用hibernate的逆向工程工具來創建帶註釋的模型。我們將主鍵序列生成器規範放在reveng.xml文件中。


如果每個任務只有一名員工,則不需要此表。我們可以將EMPLOYEE_ID添加到TASK表中,但兩項任務可能沒有EMPLOYEE。這意味着我們無法將該專欄設置爲英國。所以我們很難用數據庫來執行零或一個約束。

+0

:: yep..agree與you.But看起來像多對多映射..任何方式感謝您的答覆。 – smartcode 2010-10-02 18:10:15

+0

這是一個多對多的構造,由於零或一個業務約束而被迫。如果您只是將EMPLOYEE.ID添加到TASK表中,並且將FK添加到FK中,則您每個任務只允許一個員工或每個任務的任意數量的員工。你可能只有一個沒有員工的任務。您不能將任務ID放在EMPLOYEE表中,因爲員工只能有一個任務。你沒有太多的選擇。 – 2010-10-02 18:25:07