これは循環参照ではありません。
電子メールが招待状と強力な整合性関係を持ち、招待状が独立した強力な整合性関係を電子メールに戻す場合 (たとえば) です。
編集:デザインについて
Henk Holterman が指摘するように、問題は設計が適切な程度まで正規化されているかどうかです。
表の想定: 主キーなど
ユーザー: id
電子メール: id、users_id
招待: id、users_id、email_id
また、table_id フィールドに外部キーがあり、テーブルに他の制約が設定されていない (たとえば、キーの一部のみが一意であるなど) と仮定すると、次のようにモデル化されます。
- ユーザーごとに複数の電子メールが存在する可能性があり、対応するユーザーレコードのない電子メールを持つことはできません
- メールごとに複数の招待があり、対応するメールやユーザー レコードがない招待はできません (注: 上記の定義から、user_id がメールまたはユーザーのエントリを参照しているかどうかはわかりません)。
これらのルールが、モデル化しようとしている現実世界の状況のルールに対応しているかどうかを判断できるのは、あなただけです。
データベース設計を見る 1 つの方法は、実際には間違ったデータベース設計はなく、ほとんどの場合、エラーのように見えるものを正当化するデータを見つけることができるということです。そのため、規則 (文の形式) と表 (ER 図、表と関係の説明) の両方を使用しないと、設計に問題があるかどうかを判断することはできません (個人的な経験から提案を与えることは可能ですが)。
説明すると、上記の注記では、user_id がどのテーブルを参照しているかが明確ではないため、簡単に答えられるように思えるかもしれません。そして、すべての招待にはメールがあるとあなたが言ったことを考えると、一般的な答えは、mail テーブルから user_id を参照する必要があるということです。
そうしないと、招待状に記録されている user_id と、メールに記録されている user_id が異なる招待状が存在する可能性があります。
通常、これにより、「データを正規化する」というラベルの付いた赤いライトが頭の中で点滅します。しかし、ここでは、email_id が user_id を決定するという暗黙の仮定がよくありますが、それは正しくない可能性があります (!)。
これは、データのセマンティクス (各テーブルの述語) によって異なります。たとえば、ある人に招待状を送信し、別の人から電子メールの返信を受け取ることができる状況をモデル化しようとしている場合 (たとえば、秘書を通じて人々を招待し、直接の返信を受け取る)、赤いライトが消え、すべて問題ありません。これが実際に起こったことであり、設計で許可することです。