2

我有以下业务案例需求:

  1. 我有一个项目数据库。
  2. 每个项目都会有几个人以不同的角色(项目所有者、支持人员等)与之相关联。
  3. 一个人可能在项目中扮演多个角色。
  4. 项目中人员的联系方式是在项目创建时获取的,并且在为该人员更新时不应为该项目更新。

我提出了以下数据库结构:

在此处输入图像描述

ContactDetails 目前计划为 1-1,但在单个项目的多个人员/角色映射可以共享单个 ContactDetail 的情况下分开。

我的问题:通常情况下,我将加载与我的项目相关的人员列表,以他们的各种角色。根据我布置的结构,我的实体应该是什么样子:ProjectPerson 是否已成为实体,而不仅仅是一个交叉引用(最初是这样)?

[更新]

包括我基于以下答案的新数据结构,以防它帮助其他人。按照建议。 在此处输入图像描述

4

1 回答 1

1

我会将联系方式移到 ProjectPeople 中,并将角色提取到与 ProjectPeople 具有一对多关系的单独表中。

要回答您的问题,是的 ProjectPerson 现在是您的域模型中的一个实体;事实上,我会说它成为一个不仅仅是一个简单的多对多映射表。

我们有类似的结构,它提出了一些挑战。我对其进行了建模,以便 Project 具有 ProjectPerson 的集合,而 Person 具有 Project 的只读集合。

于 2012-12-17T19:28:11.193 回答