我创建了一个MVC解决方案,用户可以在其中注册一个事件。
这是使用Many-to-Many
和UserRecord
之间的EventRecord
关系创建的。当用户注册事件时,将创建该用户与事件之间的关系。我需要能够在他/她注册参加活动时为用户添加一些凭据。例如,为个别活动添加经验。
凭据应仅绑定到事件和用户之间的关系。因此,如果User1为Event1和Event2注册,他可以向Event1添加一组凭据,并向Event2添加另一组凭据。
如何推荐一个适当的数据库结构,如上所述添加凭据?
我的用户记录:
public class UserRecord
{
[Display(AutoGenerateField = false)]
public Guid Id { get; set; }
public string Gender { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<EventRecord> Events { get; set; }
}
我的EventRecord:
public class EventRecord
{
public Guid OwnerId { get; set; }
public string Title { get; set; }
public virtual ICollection<FighterRecord> Fighters { get; set; }
}
在Entity Framework中使用迁移后,在我的数据库UserRecordEventRecord
中创建了上述两条记录之间的联结表。
答案 0 :(得分:0)
好的,所以要在关系数据库中实现多对多关系,实际上只有一种方式 - 联结表。
联结表是一个数据库表,其中包含来自同一数据库中的两个或多个其他数据库表的公共字段
这意味着您需要另一个表来保存两个表的ID,这两个表之间存在多对多的关系。见下面的例子:
你有两张桌子:
<强> UserRecord 强>
Guid Id
nvarchar FirstName
nvarchar LastName
<强> EventRecord 强>
Guid Id
nvarchar标题
<强> UserEvent_link 强>
Guid UserId
Guid EventId
//您还可以添加一些id作为主键或将UserId / EventId对作为复合主键
由于这个原因,您现在可以针对多个事件存储多个用户。