我有第3或第4个普通形式的mnesia数据库,所讨论的表应该是键/值哈希,但是,架构师将键和值放在记录的关键部分。
它看起来像:
-record(idx,{key,value}).
...
Invoice = 1,
Date = now(),
K1 = {?NORMAL_TYPE1,Invoice,Date},
mnesia:write(#idx{key=K1}).
...
所以问题是......如果我只知道发票编号,我是否仍然可以在同一时间从数据库中获取数据,就像发票是唯一的密钥而不是元组一样?
K2 = {?NORMAL_TYPE1,Invoice,'_'},
Rec = mnesia:read(#idx{key=K2}).
答案 0 :(得分:1)
答案简短:不。
答案越长:如果表格是orderet_set或者其他类似的话,你可能有机会,但我不会指望它。
旁白:mnesia通常不太有效w.r.t.标准化数据。通常最好使用标准的RDBMS系统。
答案 1 :(得分:0)
您可以使用mnesia:match_object/1/3
和mnesia:select/2/3/4/1
来提供可以包含'_'
作为无关变量的模式。我认为这就是你的意思。