我最近一直在潜入Erlang,并决定使用Mnesia来完成我的数据库工作,因为它可以存储任何类型的Erlang数据结构,而且没有问题,可以轻松扩展,可以与列表一起使用理解等保留与Mnesia的关系完整性
来自标准SQL数据库,大多数行可以并应该由主键标识,通常是自动递增整数。默认情况下,Mnesia认为一行的第一个字段是它的关键。据我所知,它也无法拥有自动递增的整数键。
鉴于我有这些虚构的记录代表我的表:
-record(user, {name, salt, pass_hash, email}).
-record(entry, {title, body, slug}).
-record(user_entry, {user_name, entry_title}).
我想使用的用户名可能是足够好为了某些目的,如条目标题,以识别资源,但是怎么办我去保持诚信?
假设用户更改了其名称,或者编辑后条目的标题发生了变化。我如何确保我的数据仍然正确相关?更改每个表时使用用户名,当它改变听起来像一个可怕的想法,不管它如何放置。
在Mnesia中实现某种主键系统的最佳方式是什么?
此外,如果第一个字段通常是关键字,那么中间表如'user_entry'会如何执行?否则,在Mnesia中代表多对多关系的更好方法是什么?
它真的是好方法吗?看起来make_ref/0在重新启动shell后会重置它的计数,并且会有多个相似的值。那不就是说你可以在服务器重启后得到错误的密钥吗?也许,将它与now/0耦合可能会有所帮助。 – 2008-12-27 21:43:44
实际上将now/0与node/0结合起来可能会更好。 – 2008-12-28 08:14:55