Будет ли это идеальным / наиболее оптимальным способом реализации односторонних отношений «следования»?
У меня есть 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