为了更好地理解Mnesia,我仍然在努力用关系术语来思考。因此,我将在这里列出我的困惑,并询问解决它们的最佳方法。
一对多关系 假设我有一堆人,
-record(contact, {name, phone}).
现在,我知道我可以定义电话号码始终保存为列表,这样人们就可以拥有多个电话号码了,我想这就是正确的做法(是吗?那么如果反过来查找,比如找到一个名字对应的电话号码呢?)。
多对多关系 现在假设我有多个可以将人员分组的组。 组名没有任何意义,它们只是名称;概念是“Unix系统组”或“标签”。天真地说,我会将这种成员身份建模为proplist,例如:
{groups [{friends, bool()}, {family, bool()}, {work, bool()}]} %% and so on...
比如,在上面的“联系人”记录中作为一个字段。如果我想要能够快速查找所有属于某个组的成员,并且还想要能够查找某个个体注册在哪些组中,那么最好的方法是在mnesia中对其进行建模?当然,我也可以将其建模为仅包含组标识符的列表。对于mnesia,最佳建模方式是什么?
如果我的问题很愚蠢,我感到很抱歉。尽管有很多有关mnesia的文档,但整体使用的一些好例子却不足(在我看来)。