Использование предикатов [px] и ограничений [cx.y] .
[p1] User (UserID)существует.
[c1.1] Пользователь идентифицируется по идентификатору пользователя.
user {UserID} -- p1
KEY {UserID} -- c1.1
[p2] Follower (FollowerID)следующий автор (AuthorID).
[c2.1] Подписчик - это пользователь.
[c2.2] Автор - пользователь.
[c2.3] Для каждого подписчика этот подписчик может подписываться более чем на одного автора.
[c2.4] Для каждого автораза этим автором может следовать более одного подписчика.
[c2.5] Для каждой комбинации автора и подписчика эта комбинация этого автора и этого подписчика может встречаться не более одного раза.
[c2.6] Авторы не могут следовать за собой.
following {AuthorID, FollowerID} -- p2
KEY {AuthorID, FollowerID} -- c2.5, c2.3, c2.4
FOREIGN KEY {FollowerID} REFERENCES user {UserID} -- c2.1
FOREIGN KEY {AuthorID} REFERENCES user {UserID} -- c2.2
CHECK AuthorID != FollowerID -- c2.6
Итог, многие ко многим.Вы всегда можете настроить это, чтобы отразить ваши конкретные потребности, сосредоточившись на концептуальном / логическом дизайне, выраженном на естественном языке - предикатах и ограничениях.