我尝试创建一个带有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
正如您所看到的,GRID_ID,SERIALNUMBER,YEAR of TABLE_HEAD应该映射到GRID_ID,SERIALNUMBER,YEAR of TABLE_POINT
GRID_ID,SERIALNUMBER,TABLE_POINT的年份应该映射到GRID_ID,SERIALNUMBER,YEAR,POINT_NUMBER
我的第一种方法是使用GRID_ID,SERIALNUMBER,YEAR分组为PK,但这将违反条件。
所以唯一的方法是使用Sync_ID作为PK。但如何如上所述映射其他字段呢?我可以只映射PK_Columns吗?
希望你有想法帮助我。其他方法也受到欢迎。 最好的问候!
答案 0 :(得分:0)
其他方法是创建正确的数据库结构!
你有Sync_ID
作为PK,所以在依赖实体中使用它作为FK,而不是做你所描述的混乱。这与正确的数据库架构没有任何共同之处。关系数据库的要点是最小化数据的双重性,但是几乎将所有数据从第一个表复制到所有依赖表。此外:
GRID_ID
,SERIALNUMBER
,YEAR
的唯一索引,则它不能是一对多关系的主要实体您应该阅读有关数据库规范化的内容。