Вы можете использовать easyrec для своей задачи.Он будет хранить отношения в следующем формате:
CREATE TABLE `itemassoc` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`tenantId` int(11) NOT NULL DEFAULT '0',
`itemFromId` int(11) NOT NULL DEFAULT '0',
`itemFromTypeId` int(11) unsigned NOT NULL DEFAULT '0',
`assocTypeId` int(11) unsigned NOT NULL DEFAULT '0',
`assocValue` double NOT NULL DEFAULT '0',
`itemToId` int(11) NOT NULL DEFAULT '0',
`itemToTypeId` int(11) unsigned NOT NULL DEFAULT '0',
`sourceTypeId` int(11) NOT NULL DEFAULT '0',
`sourceInfo` varchar(250) DEFAULT '0',
`viewTypeId` int(11) unsigned NOT NULL DEFAULT '0',
`active` tinyint(1) NOT NULL DEFAULT '1',
`changeDate` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_itemassoc` (`tenantId`,`itemFromId`,`itemFromTypeId`,`itemToId`,`itemToTypeId`,`assocTypeId`,`sourceTypeId`),
KEY `idFrom_assoc` (`itemFromId`,`itemFromTypeId`,`assocTypeId`,`tenantId`),
KEY `recommender` (`itemFromId`,`itemFromTypeId`,`itemToTypeId`,`assocTypeId`,`tenantId`,`active`)
) ENGINE=InnoDB AUTO_INCREMENT=38480 DEFAULT CHARSET=latin1 COMMENT='Table containing item associations'
В основном это
- ITEMA
- ASSOCTYPE (например: BOUGHT_TOGETHER)
- ITEMB
- ASSOC VALUE (сила рекомендации)
easyrec может импортировать ваши "КУПИТЬ ДЕЙСТВИЯ" и вычислять из них правила.