查看您的数据库文件,我认为您今天早些时候得到的建议不是正确的方向。我可能会将其作为直接关系数据库来处理,具有如下表:
% processor(Id, Brand, Family, Series, Clock, Socket, RAM, Cores, Threads).
然后我会重新创建你制作的数据库,如下所示:
processor(pentium_g4400, intel, pentium, g4400, 3.3, lga1151, ddr4, 2, 2).
这就是您对关系数据库所做的事情,我认为这也是您应该在这里做的事情。现在,如果您只想查询一方面,您可以按位置进行查询:
?- processor(Processor, _, pentium, _, _, _, _, _, _).
Processor = pentium_g4400 ;
...
然后你会对另外两个亲戚做同样的事情:
component_ram(corsair_dominator_platinum_8gb_ddr4, corsair, dominator, platinum, '8gb', ddr4).
motherboard(asus_prime_z270m-plus, asus, prime_z270m-plus, z270, lga1151, 4, ddr4).
现在,只需在两个地方使用相同的变量即可完成“连接”:
?- processor(Processor, _, _, _, _, Socket_type, RAM_type, _, _),
component_ram(RAM, _, _, _, _, RAM_type),
motherboard(Motherboard, _, _, _, Socket_type, _, RAM_type).
这会产生 3 路连接。并且您可以使用更多变量从您获取的三个记录中获取更多信息:
Processor = pentium_g4400,
Socket_type = lga1151,
RAM_type = ddr4,
RAM = corsair_dominator_platinum_8gb_ddr4,
Motherboard = asus_prime_z270m-plus.