Структура базы данных для моделирования односторонней системы следования, такой как Twitter - PullRequest
1 голос
/ 29 сентября 2010

Будет ли это идеальным / наиболее оптимальным способом реализации односторонних отношений «следования»?

У меня есть 2 таблицы следующим образом

Таблица 1: User_Info_Table

UserID    Name   JoinDate

Таблица2: User_Follower_Table

FollowerID     FollowingID    Status 

FollowerID и FollowID являются ограничениями FK для столбца User_Info_Table UserID

Имеет место следующая логика:

• Пользователь A следует за пользователем B

WHERE NOT EXISTS (SELECT 1 FROM User_Follower_Table WHERE FollowerID = A and FollowingID = B and Status = 0)
BEGIN

    INSERT INTO User_Follower_Table (FollowerID, FollowingID, Status)
    VALUES (A, B, 1)

END

ELSE

    UPDATE User_Follower_Table
    SET Status = 1
    WHERE FollowerID = A and FollowingID = B and Status = 0

• Пользователь A отменяет подписку на пользователя B

UPDATE User_Follower_Table
SET Status = 0
WHERE FollowerID = A and FollowingID = B and Status = 1

• Пользователь B решает следовать за Пользователем A назад

WHERE NOT EXISTS (SELECT 1 FROM User_Follower_Table WHERE FollowerID = B and FollowingID = A and Status = 0)
BEGIN

    INSERT INTO User_Follower_Table (FollowerID, FollowingID, Status)
    VALUES (B, A, 1)

END

ELSE 

   UPDATE User_Follower_Table
   SET Status = 1
   WHERE FollowerID = B and FollowingID = A and Status = 0

• Пользователь B отменяет подписку на пользователя A

UPDATE User_Follower_Table
SET Status = 0
WHERE FollowerID = B and FollowingID = A and Status = 1

1 Ответ

1 голос
/ 29 сентября 2010

Взгляните на этот аналогичный вопрос / ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...