私は2つのテーブルを持っています:
"sites" has_many "users"
"users" belongs_to "sites"
ユーザーがサイトに追加されるたびに、sitesテーブルにusers_countという列を追加し、それを1つ増やしたほうがよいでしょうか。または、ユーザーテーブルの条件付きカウントを行うのが最善の方法ですか?
私は2つのテーブルを持っています:
"sites" has_many "users"
"users" belongs_to "sites"
ユーザーがサイトに追加されるたびに、sitesテーブルにusers_countという列を追加し、それを1つ増やしたほうがよいでしょうか。または、ユーザーテーブルの条件付きカウントを行うのが最善の方法ですか?
「より良い」は主観的な用語です。
しかし、私はこれについて固執します。単にステップから外れる可能性があるという理由だけで、データベースに同じ情報の2つのソースがあってはなりません。
サイトに所属しているユーザーの数を確認する最も確実な方法は、ユーザーcount
を数えるために使用することです。
第3正規形では、すべての非キー属性がキー、キー全体、およびキー以外の何物にも依存しない必要があります(Codd、助けてください)。
キー値だけに依存するのではなくsites
、他のテーブルの情報にも依存するユーザー数をサイトに追加する場合。
影響を理解し、データの不整合(トリガーなど)の可能性を軽減する場合は、パフォーマンスの第3正規形から戻すことができますが、ほとんどの場合は3NFのままにする必要があります。