多对多 (m:n) 关系使模型和应用程序开发过程更加复杂并容易令人混淆。解析 m:n 关系的关键是将两个实体分开并用第三个相交实体来在它们之间创建两个一对多 (1:n) 关系。相交实体通常包含来自两个相连接的实体的属性。
要解析 m:n 关系,请再次分析商业规则。您是否已经准确地对关系制图?如图 1 所示,电话号码簿示例在 name 与 fax 实体 之间具有 m:n 关系。商业规则指出“一个人可以有零个、一个或许多传真号码;一个传真号码可以用于若干个人”。根据我们先前为 voice 实体选择的作为主键的内容,存在 m:n 关系。
fax 实体中存在一个问题,其原因在于电话号码(已将其指定为主键)可以在 fax 实体中出现多次;这违反了主键的条件。记住,主键必须是唯一的。
图: 解析多对多 (m:n) 关系