我正在一个学校项目中评估用户的编码技能。我正在设计的数据库体系结构在逻辑上存在一些不一致之处。
总结问题:如何设计图数据库以将事件作为类的属性而不是新节点来容纳?
详细的问题和背景知识
我正在设计一个数据库,用于跟踪用户代码提交。他的每个提交内容都标有一些元数据,例如python
machine learning
HTML
等。
数据库由三个元素组成:
以下是DB的预期功能:
它应具有 CT 中连接的图形表示。
用户(通过提交)获得的每笔 CT 记录必须与时间戳一起存储。
用户技能的权重是用户获得的特定 CT 的简单计数。
技能中的每个新条目都应该是用户学习新知识的事件。
在当前体系结构中,我有一个 User 类,该类继承了 Skill 类。并且 Skill 类与 CT 相连。
每次用户获得 CT 时,都会在该 skill 节点与 CT 之间创建一个新优势。因为没有数据类型数组或列表,我只能在其中附加日期。使其效率极低。而不是上面的图,当前看起来像这样:
它也打破了OOP,因为我希望时间戳成为 skill 类的属性。其基本原理是技能是 CT 收入的集合。获得技能是一件大事,而获得技能将是技能的一项属性,而不是优势。
我还可以为所获得的每种技能创建一个新节点,但我认为它将在图表中引入冗余。