alt:
"春日部つむぎ: で、次は逆参照をrecordで持たないって話なんだけど、これ結構大事!
雪さん: 逆参照?
春日部つむぎ: 例えばさ、フォローってあるじゃん? AさんがBさんをフォローしてるって情報は、Aさんのrepositoryにあるfollow recordで管理されてるよね。で、逆参照っていうのは、Bさんの視点で「Aさんにフォローされてる」って情報をrecordで管理することなんだよ。
雪さん: なるほどね。
春日部つむぎ: でも、こういう逆参照のrecordって、作らない方がいいんだよね。
雪さん: え、なんで?
春日部つむぎ: 例えば、AさんがBさんのフォローを外したとするじゃん? で、Bさんのrepositoryにも「Aさんにフォローされてる」ってrecordがあると、整合性とらなきゃいけなくなるよね。
雪さん: ああ、確かに。
春日部つむぎ: で、Aさんがフォローを外したことをBさんが知る方法って、基本的にはないんだよね。 Aさんのrepositoryを見に行くしかないんだけど、Aさんがフォローを外す度にBさんがAさんのrepositoryをチェックするなんて現実的じゃないでしょ?
雪さん: うん、それは無理だね。
春日部つむぎ: だから、逆参照のrecordを作っちゃうと、データの整合性が取れなくなって、システムが壊れやすくなっちゃうんだよね。
雪さん: なるほど〜。
春日部つむぎ: recordっていうのは、そのrepositoryの所有者のアクションによってのみ作成・編集されるべきなんだよ。フォローするのもフォロー外すのも、Aさんのアクションだから、Aさんのrepositoryにあるfollow recordだけを更新すればいいんだよね。
雪さん: つまり、recordは一方通行の情報って考えればいいんだね。"