複数のテーブルと外部キーをクエリするためのベスト プラクティスは何ですか?
例えば:
ユーザーには多くのタスクがあり、多くのリマインダーがあります
ベストプラクティスは、外部キーを直接の親戚に保持することです。つまり、次のようになります。
タスク テーブル: id、user_id
リマインダー テーブル: id、task_id
...テーブルをすべての可能な親戚に接続する外部キーがたくさんある状況を避けるため。
ユーザーのリマインダーをすべて取得したいとします。
SELECT reminders.* FROM users
LEFT JOIN tasks ON users.id = tasks.user_id
LEFT JOIN reminders ON tasks.id = reminders.task_id
WHERE tasks.user_id = {#YourUserIdVariable}
レコードを取得するために結合を行うことが、データベースの整合性を上回るポイントはありますか? (reminders.user_id を保存することがそもそも悪い実践であると仮定しますか?
5テーブル?10?