如果我有一些数据应该是静态的作为源
表人 A(静态)幸福 0
我需要一个表来存储用户播放进度
表 User_1_Person_A 幸福 5
我怎样才能巧妙地设计数据库?我唯一的想法是
表 Person_A 幸福 5 User_id 1
但是两个表列将是相同的。这是一个糟糕的设计吗?谢谢
如果我有一些数据应该是静态的作为源
表人 A(静态)幸福 0
我需要一个表来存储用户播放进度
表 User_1_Person_A 幸福 5
我怎样才能巧妙地设计数据库?我唯一的想法是
表 Person_A 幸福 5 User_id 1
但是两个表列将是相同的。这是一个糟糕的设计吗?谢谢
我会猜测你在问什么。
如果您想跟踪进度,您需要一个带有时间戳的表格。
以下是我如何定义您的表格。
Person
------
Person ID
Person User ID
Person Name
...
Person ID 是 Person 表的主(集群)键。它是一个自动递增的整数或长整数。
Skill
-----
Skill ID
Skill Name
技能 ID 是技能表的主(集群)键。它是一个自动递增的整数或长整数。
Progress
--------
Progress ID
Person ID
Skill ID
Progress Timestamp
Progress Level
Progress ID 是 Progress 表的主(集群)键。它是一个自动递增的整数或长整数。
您在(Person ID、Skill ID、Progress Timestamp DESCENDING)上创建另一个唯一索引。这使您可以选择任何技能的最新(最高)技能级别。
您还需要一张表来设置任何技能的初始进度级别。
Initial
-------
Initial ID
Skill ID
Initial Level
Initial ID 是 Initial 表的主(集群)键。它是一个自动递增的整数或长整数。
这种将数据元素组织到数据库表中的过程称为规范化。