質問: 通販サイトのカート、動画サイトのウォッチリストや履歴などは、 1ユーザーに対し、複数のデータ(カート内の商品,閲覧したページ)が結びつくかと思いますが、 それらはどのようにDBに保存し、取得すればいいのでしょうか? 配列で保存、と思ったりしましたがよろしくない気がしました(なんとなくですが...) > > 環境 > > -MySQL5.6 > > -Play framework2.3 > > -Scala2.11 > > >
回答: つい最近でた "理論から学ぶデータベース実践入門" という本の第9章が「履歴データとうまく付き合う」となっているので、参考になるのではないかと思います。 今、手元にないので、記憶を元にすごく簡単に要約しておくと * そもそもリレーショナルデータベースは履歴データを扱うものとして作られたわけではないので、完璧な方法は存在しない * 扱おうとすると、いくつかの方法がある * それぞれの方法はトレードオフなので、それらを理解して状況によってどれを使うか判断すべき * DBのカラムにフラグを追加する方法は一見手軽だが、かなりデメリットが多いので避けるべき という感じだったと思います