在我寻求理解 Mnesia 的过程中,我仍然在努力思考关系方面的问题。所以我会把我的挣扎放在这里,并寻求解决它们的最佳方法。
一对多关系 假设我有一群人,
-record(contact, {name, phone}).
现在,我知道我可以将电话定义为始终保存为列表,因此人们可以有多个电话号码,我想这就是这样做的方法(是吗?然后我将如何反过来查找,比如说,找到一个数字的名字?)。
多对多关系 现在让我们假设我有多个可以放入人员的组。组名没有任何意义,它们只是名称;这个概念是“unix 系统组”或“标签”。天真地,我会将这个成员资格建模为一个 proplist,比如
{groups [{friends, bool()}, {family, bool()}, {work, bool()}]} %% and so on...
例如,作为上面“联系人”记录中的一个字段。如果我希望能够根据组名快速查找组的所有成员,并且还希望能够查找个人注册的所有组,那么在 mnesia 中对此进行建模的最佳方法是什么?当然,我也可以将其建模为仅包含组标识符的列表。对于与 mnesia 一起使用,对此进行建模的最佳方法是什么?
如果这个问题很愚蠢,我很抱歉。有很多关于 mnesia 的文档,但它缺乏(IMO)一些整体使用的好例子。