Teratailの質問で、回答が-1件となっているものを見つけました(URL、下図)。
一つの質問に対して回答は複数(0以上)あることから、1対多のリレーションシップということで回答の文書は質問とは別テーブルに保存していると想定されますが、それとは別に、質問テーブルに「現在の回答数」を列として持っているために「負の回答数」が生じたのだろうと解釈しました(この前提が間違っている場合はご指摘ください)。
一般的には、このようなデータ構造の実装として、「回答数」を列として定義するか、回答数の列は持たずに質問に対応する回答を都度数えるという2種類の方針があると思います。
この前提での質問ですが、以下の3点を伺いたいです。2番目の質問は意見が分かれることと予想していますが、様々な意見をいただきたいという意図です。
- 「教科書的な実装」では「回答数の列」は持たないものと認識しているが、それは正しいか?
- 「回答数を列として持つ」ことは現実の実装としては割とよくあるのか?
- このような「データベースの不整合」を未然に防ぐ、あるいは事後に検知する仕組みとしてはどのような候補があるか?
※ なお、teratailを非難する意図はまったくなく、長くサイトを運営していればこの程度の不整合はあるだろうなという貴重なサンプルとして使わせていただいております。
回答3件
あなたの回答
tips
プレビュー