维护数据库中表的多级层次结构

时间:2014-12-26 07:11:13

标签: php mysql facebook facebook-graph-api graph

我必须维护喜欢特定类别帖子的朋友列表的数据。这可能在任何层面。例如。 如果A的朋友是B,就像一个想要的帖子。然后我将保留A的朋友和B的朋友的记录。基本上我的要求是 如果用户访问我的产品网站,我必须告诉他/她您已经访问过的朋友已经访问了该网站,并且他们实际上建议您使用此功能并建立您正确的方式,因为您的朋友也在使用它。我还想建议A,作为B的朋友的C从现在开始使用这个产品,C建议许多人使用它。

我知道这个逻辑已在良好的网站中实现。  我只是一个首发。所以请建议我后端的数据库和前端需要的东西。 特别是这个问题是维护数据库的记录。所以我要求数据库应该使用什么,而不是我应该如何实现下一步。 因为我打算使用Graph数据库。在图表中bigdata或Neo4j。 您的想法非常受欢迎,我们将不胜感激。感谢

2 个答案:

答案 0 :(得分:0)

友'关系是一种经典的多对多方案。您需要两个表来实现这一点:
1.包含个人数据的表格,例如姓名,电子邮件等(可能更复杂,如人物 - 财产关系)
一张有朋友的桌子。零售数据,通常它包含关系所代表的朋友的ID对和关于关系本身的一些数据,例如类别(朋友/家庭/同学等),亲和力水平(如果> 0表示正面关系,< 0负面如敌人)等。假设第一个ID是此关系所属的人(并且可以由其维护),第二个ID是此关系适用的人。通常这种类型的表被限制为唯一的ID对,因此没有人能够将两个人添加为朋友两次 以下是一些示例:

CREATE TABLE person
(
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(255),
    email VARCHAR(255),
    PRIMARY KEY (person_id)
);
CREATE TABLE relationship
(
    id_person INT NOT NULL REFERENCES person(id),
    id_person_related INT NOT NULL REFERENCES person(id),
    id_category INT REFERENCES relcategories(id),
    affinity INT,
    PRIMARY KEY (id_person, id_person_related)
);

请注意,affinity和id_category fiels是可选的,最后一个要求表relcategoriesINT id字段首先创建
一个朋友对另一个朋友的访问也可以存储在relationship的单独字段中

答案 1 :(得分:0)

我希望我的逻辑可能会向你迈进几步

最初我们必须保持共同的朋友记录

敌人的例子

id  mut_id
1   2,3,4

这里2,3,4是你的朋友

接下来我们需要维护已购买/访问过的记录

prod_id buy_id
1       2,1

现在假设3个id想要购买或访问网站,那么我们可以显示您的朋友已经访问过或购买了产品