一对多映射
我有一个映射到数据库的问题。问题是这样的。一对多映射
有两个实体叫做Employee(empID,empName)
和Task(taskID,taskName)
。
- 员工可以有零或更多任务。
- 任务可以有零或一个员工。
会是怎样,我应该遵循表结构..
我会在使用Spring MVC实现此方案以及java.How Hibernate可以我解决了这个问题..
任何想法?
在此先感谢!
看起来你可能需要另一台名为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。这意味着我们无法将该专栏设置为英国。所以我们很难用数据库来执行零或一个约束。
:: yep..agree与you.But看起来像多对多映射..任何方式感谢您的答复。 – smartcode 2010-10-02 18:10:15
这是一个多对多的构造,由于零或一个业务约束而*。如果您只是将EMPLOYEE.ID添加到TASK表中,并且将FK添加到FK中,则您每个任务只允许一个员工或每个任务的任意数量的员工。你可能只有一个没有员工的任务。您不能将任务ID放在EMPLOYEE表中,因为员工只能有一个任务。你没有太多的选择。 – 2010-10-02 18:25:07
xml或注释? – Bozho 2010-10-02 16:56:01
我想使用xml.For暂时就足以得到表格的结构。我的意思是我应该创建多少个表格。任何方式thnx yahh .. – smartcode 2010-10-02 17:02:38
所以你实际上需要两个不同的单向关联,对吗? – 2010-10-02 20:56:22