В моем приложении я создаю библиотеку для постов (точно так же, как посты в Facebook), с каждым постом может быть связано несколько тегов, и пользователи также могут видеть посты по тегам, поэтому у меня есть 2 таблицы: -
"posts_has_tags"
post_id -> tag_id
"tag_has_posts"
tag_id -> post_id
разработчик может запросить публикацию и тег, используя библиотеку, подобную этой ->
Post $post = new Post($postId)
Tag $tag = new Tag($tagId)
тогда я хочу добавить функции, которые будут прикреплять теги к посту, но теперь я в замешательстве, потому что я могу создать 2 отдельные функции, одну, которая добавляет теги к посту (в классе записей), а другую - добавить пост к тегу (в класс тега) например:
первый: -
$post->addTags([$tag1, $tag2])
then
for (i = 0; i < numOfTags; i++){
$tag{i}->addPost($post)
}
так что здесь разработчики (пользователь библиотеки) будут иметь 2 функции, им придется вручную добавлять теги к записи, а также добавлять эту запись к тегу, поэтому, если вторая операция завершится неудачно (если эти таблицы находятся на отдельных машинах), они могут откатить первую операцию,
или
Я могу просто предоставить одну функцию в классе Post, которая будет делать все автоматически, например: -
$post->addTags([$tag1, $tag2...])
Итак, какой подход лучше? Предположим, что моя база данных защищена функцией (средние таблицы post_has_tags и tag_has_posts могут находиться на разных компьютерах), поэтому при первом подходе пользователь библиотеки может создать распределенную транзакцию на уровне приложения, если произойдет сбой второй машины. , мы можем откатить первую операцию с помощью функции removeTags (), а во втором случае это должно быть сделано на уровне библиотеки,
я хочу знать, какой из них лучше?, То же самое относится к подписчикам, где вы можете видеть подписчиков и подписчиков, и эти вещи также могут быть на разных машинах, извините за слабый английский, спасибо:)