我的基本表包含200万用户记录,包含30列。
偶尔有一项新的活动可供100K用户(每项活动的不同小组)参与。 每个用户都将进行自我认证,他/她的活动数据将被保存以供进一步使用。
设计数据库的最佳方法是什么?
将100K复制到Users_In_Activity表中,其中包含基表中所有必需和必需的详细信息。将为每条记录创建一个新的PK(Users_In_Activity主键)。
将用于身份验证的100K用户基本详细信息复制到Potential_Users_In_Activity表。将创建一个新的PK(包括用户PK),并将创建一个新的User_In_activity PK。
对于每次成功的身份验证,将在Actual_Users_In_Activity表中创建完整记录。
总结
方法1:创建100K的30列记录。从100K记录中搜索,无需在活动期间创建新记录。不需要加入。只有一个表可以使用。
方法2:创建5列的100K。从100K的记录中搜索。在活动期间创建新记录(30列)(仅限活动用户)。需要加入。 2表与
一起使用方法3:从2M记录中搜索。在活动期间创建新记录(30列)(仅限活动用户)。 2表与
一起使用答案 0 :(得分:2)
你没有讨论基本设计,
用户表= 200万条记录,USERID是PK。此表仅包含用户详细信息。
活动表=活动详细信息,ACtivityID是PK(此处与用户表无关)。此表包含创建新活动时的活动详细信息。
User_Activity_Mapping = ActivityID,USERID(此处复制100K用户):这是此处的用户 - 活动关系表。
通过适当的索引,它可以正常工作。
让我知道