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