我在创建一个小练习 ERD 时遇到问题。我正在尝试做一些更困难的事情,但我不确定组织它的标准方式是什么。
基本上,我不知道哪一个是最正确的。另外,我正在尝试添加一些数据:“最后一次视频聊天;最后一次语音聊天;最后一次即时消息;最后一封电子邮件”。
是has
比 更好的交互词friends
吗?
我应该使用:
user->gold_friends->user; user->silver_friends->user
,user->has->friend; friendship->is->gold
(如果是,这些将如何连接),或user->has->gold_friend; goldfriend->is->user
?
同样,您更喜欢哪个以及为什么:
user->emails->user; email->was at->date
,怎么silver
画gold
出来的type
?user->has->email_interaction
, 或者user->has->interaction
;interaction->was via->email
如果我添加 的朋友friendID
,我是否应该确定friendID
是作为交易生成的派生密钥传输的?为什么或者为什么不?添加朋友的过程如何以编程方式工作?是连接到添加的用户的密钥,然后传送给添加的用户,还是连接到添加的用户的密钥,然后发送给添加的用户,或者每个用户都有一个永久密钥,该密钥添加到每个用户的数组中用户同时添加?
首先,“朋友”可能不是一个不同的实体,而只是从“用户”到“用户”的关系,但你的情况可能很特殊,我不知道。那么
"if I add a friendID, should I have it as a derived key from user"
,假设朋友只是另一个用户 - 是的。'last voice chat' & 'last im' 等附加信息不应成为复合属性的一部分,每个 'last' 本身都是有意义的,复合属性无济于事。如果你想知道,
when user AAA lastly called anybody?
那么这些信息应该是'User'的属性,但是如果你想知道,when user AAA lastly called user BBB?
那么这些信息应该是用户AAA和BBB之间关系的属性。关系的类型可能应该是一个简单的属性(枚举),但这取决于。如果友谊既可以是银也可以是金,那么它应该是布尔值 isSilver、isGold 等的复合属性。但如果只有银或金(或者可能是正常的)但只有其中一个,它应该是一个简单的枚举属性。
最后,您应该考虑如何定义友谊的不同方式,您可能想通过以下问题了解更多信息:
祝你好运!