在SQL数据库中保存用户状态?

在SQL数据库中保存用户状态?,sql,database-design,Sql,Database Design,假设我有3张表:电影,部分&场景。场景以特定顺序出现在电影中的部分: films - id - title 现在,为了简单起见,让我们假设一个用户查看一个显示其所有场景的视图。她可以单击场景并选择或取消选择它 问题:我想知道如何在SQL中存储此状态?我知道如何存储电影、角色、场景,对每个用户来说都是一样的。但点击或未点击的内容是用户个人状态的一部分。我想保存此文件,但每个用户的文件都会有所不同 我会在数据库中为此创建一个单独的表吗?然后,我将如何为每个用户检索这些非常个性化的数据?而且:这

假设我有3张表:
电影
部分
&
场景
。场景以特定顺序出现在电影中的部分:

films
 - id
 - title
现在,为了简单起见,让我们假设一个用户查看一个显示其所有场景的视图。她可以单击场景并选择或取消选择它

问题:我想知道如何在SQL中存储此状态?我知道如何存储电影、角色、场景,对每个用户来说都是一样的。但点击或未点击的内容是用户个人状态的一部分。我想保存此文件,但每个用户的文件都会有所不同

我会在数据库中为此创建一个单独的表吗?然后,我将如何为每个用户检索这些非常个性化的数据?而且:这会不会让我的SQL速度变得难以置信的慢,特别是如果在某个点上要存储的东西比单击/未单击的要多得多

我的尝试:现在,我的解决方案是有这样一个表:

user-article-state
 - user_id
 - scene_id
 - isClicked

……但这行得通吗?为这样的东西创建一个单独的表有意义吗?对我来说,这似乎有些夸张——我觉得我可能遗漏了一些东西,而这不是SQL应该如何使用的?特别是现在,所有电影的所有部分的所有(用户状态)场景都将在一个庞大的表中。

如果您有一个
用户表和一个
场景表
,并且您想存储哪些用户选择了哪些场景,然后,您拥有一个实体,表示这两个表之间的多对多关系。您可以将其称为
UserScenes
UserSceneSelections

实际上,所有it存储都是返回到这些表的外键:

UserID (FK to Users table)
SceneID (FK to Scenes table)
根据您的数据访问框架或个人偏好,您还可以为每个记录指定一个ID:

ID (PK)
UserID (FK to Users table)
SceneID (FK to Scenes table)
否则,
UserID
SceneID
的组合也会产生自然主键,因为同一用户多次选择同一场景是没有意义的

如果需要添加有关这些选择的更多数据,例如选择时间戳,也可以在此处添加。但实际上,您只需维护一个多对多表来链接主要实体、用户和场景

UserID (FK to Users table)
SceneID (FK to Scenes table)
ID (PK)
UserID (FK to Users table)
SceneID (FK to Scenes table)