2010-10-02 167 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