人们网面试题 - 潜在好友挖掘

人人网面试题 -- 潜在好友挖掘
查找一个用户的潜在好友 即A的好友BCDEF皆有G而A却没有则把G推荐给A
用数据库实现:

首先要设计表
CREATE TABLE USER
(
   ID INTEGER (PK),
   .......
);

CREATE TABLE RELATIONSHIP
(
   ID INTEGER (pk),
   IDA INTEGER (fk),
   IDB INTEGER (fk)
);

查询SQL语句:

	  
          SELECT   b.IDB, COUNT(b.IDB)
          FROM     RELATIONSHIP a, RELATIONSHIP b
          WHERE    a.IDB = b.IDA
          AND      b.IDB NOT IN 
                   (SELECT c.IDB 
                    FROM   RELATIONSHIP c 
                    WHERE c.IDA=a.IDA)
	  AND 	   b.IDB != a.IDA
          AND      a.IDA = &1
          GROUP BY b.IDB
          HAVING   COUNT(b.IDB) > 3
          ORDER BY COUNT(b.IDB) DESC


在实际情况中,把数据简单存储在单一数据库中几乎不太可能,可以建立类似<A,B> <B,C>...的键值对,存储在文件中,然后采用一个函数来处理,可以用到map