我正在设计一个架构来在基于浏览器的游戏中保存玩家数据。
我有三个关系。其中两个至少有两个候选键,但第三个只有三个属性:{playerId,message,date}由于存在1..1:0 .. *关系,此关系不会保留唯一行,这意味着每个玩家可以有任意数量的新闻元组。无论如何,我不需要能够唯一地识别任何元组,并且这些属性实际上都不能成为候选元素。
我的问题是:我理解关系模型表明不能有重复的元组,每个关系必须有一个密钥。我上面的模式与这两种约束相矛盾,但却符合我的目的。我知道我可以简单地添加一个唯一的索引属性(如ID),但这似乎是不必要的。我错过了什么吗?
感谢您的时间。
答案 0 :(得分:1)
我认为您缺少的是复合主键。
在您的情况下,如果您要保存以获取无共享条目,则您希望使用复合主键。
但是想想同一个玩家在同一天发送相同的消息.... 在这种情况下,您将与复合主键发生冲突。 虚拟唯一ID作为主键是一种更安全的方式。
答案 1 :(得分:0)
棘手的问题!我没有一个明确的答案,但我认为如果你对整个元组至少没有一个单一的约束,你可能遇到麻烦:想象一些应用程序运行错误并尝试插入相同元组的1.000.000.000倍你的桌子......