0

我试图用 3 个表创建一个 EF 模型(VS2010,.NET4),每个表都有一个名为 Sync_ID 的 PK。

TABLE_HEAD: (Sync_ID (PK), GRID_ID int, SERIALNUMBER int, YEAR int)

TABLE_POINT: (Sync_ID (PK), GRID_ID int, SERIALNUMBER int, YEAR int,POINT_NUMBER int)

TABLE_PLANT: (Sync_ID (PK), GRID_ID int, SERIALNUMBER int, YEAR int,POINT_NUMBER int,PLANT_NUMBER int)

关联: TABLE_HEAD "1 对多" TABLE_POINT "1 对多" TABLE_PLANT

可以看到 TABLE_HEAD 的 GRID_ID, SERIALNUMBER, YEAR 应该映射到 TABLE_POINT 的 GRID_ID, SERIALNUMBER, YEAR

并且 TABLE_POINT 的 GRID_ID, SERIALNUMBER, YEAR 应该映射到 GRID_ID, SERIALNUMBER, YEAR,POINT_NUMBER

我的第一种方法是使用 GRID_ID、SERIALNUMBER、YEAR 分组为一个 PK,但这将违反条件。

所以唯一的方法是使用 Sync_ID 作为 PK。但是如何映射上述其他字段呢?我只能映射 PK_Columns 吗?

希望你有想法可以帮助我。也欢迎其他方法。此致 !

4

1 回答 1

0

其他方法是创建正确的数据库结构!!!

你有Sync_IDPK 所以在依赖实体中使用它作为 FK 而不是做你描述的混乱。这与正确的数据库架构没有任何共同之处。关系数据库的重点是最大限度地减少数据重复性,但是您将几乎所有数据从第一个表复制到所有依赖表。而且:

  • 如果 TABLE_HEAD 没有 , 的唯一索引GRID_IDSERIALNUMBERYEAR它不能是一对多关系的主体实体
  • 即使它具有唯一索引也没关系,因为 EF 还不支持唯一索引,因此它必须是主键才能作为主体实体参与关联

您应该阅读一些有关数据库规范化的内容。

于 2011-07-21T13:00:33.587 回答