0

我有两个“实体”表:提供者和用户。Provider 和 User 都可以有多个地址(运输、账单等)。

与其将地址信息放在每个实体表中,我想创建一个它们共同的表:地址表。例如,我研究了创建一个带有主键(身份列)、实体类型(提供者或用户)、实体键(父实体表的主键)和地址类型(运输等)的地址表。带有必要的地址信息。

我遇到的一个问题是外键约束。如果我有一个来自与地址行相关的父实体表的外键,我在尝试插入数据时发现我有外键违规。

我正在考虑删除表中的 FK,然后在 EF 4.1 上创建手动映射,但我不知道该怎么做:

http://i49.tinypic.com/2dt56dv.png(这是表格的图像 - 地址表中的 objectid 包含 userid 或 providerid,objecttype 是一个 varchar,可以是“USER”或“PROV”)

我怎样才能解决这个问题?我想使用一个表格作为地址,但如果没有另一位父母的相关行,我不能为一位父母添加一个孩子。当然,我想继续使用外键来实现引用完整性。

谢谢

4

1 回答 1

0

这是一个很常见的情况。

[Provider table]
ProviderID (PK)
AddressID

[User table]
UserID (PK)
AddressID

[Address table]
AddressID (PK)
Street1
Street2....

进入提供者表并从 Provider.addressID 添加一个 FK 到 Address.AddressID

进入用户表并添加一个从 User.addressID 到 Address.AddressID 的 FK

这应该有效,并且不会违反任何 FK。

于 2012-07-05T14:18:42.437 回答