質問: 私はこれが循環参照であることを知っているが、なぜこれが悪いのかを理解することは難しい 私たちは、ETLの作業を別の会社が作成した新しいデータベースに取り入れる必要がある場所でプロジェクトを実行しています。開発者が私に与えたデータベースダイアグラムを見ているうちに、私はテーブルのうちの4つに循環参照があることを見ました: 私はダイアグラムをアップロードすることはできませんが、ここにはテーブルの一般的な構造があります: 場合 * ID (PK) 場合StatusInfo (FK) * サインオフプランニング (FK) * SignOffReportReview (FK) * SignOffQuarterlyReview (FK) 場合StatusInfo * ID (PK) * 場合Id (FK) サインオフプランニング * ID (PK) * 場合Id (FK) SignOffReportReview * ID (PK) * 場合Id (FK) SignOffQuarterlyReview * ID (PK) * 場合Id (FK) How these Info tables linked to the 場合 table will be used is that it will be storing historic statuses of a 場合 by having the primary key stored within each Info table. This really does make logical sense but i feel that it might have been better to normalize these tables even further to keep the historic data in those normalized tables. 私の質問は次のとおりです。テーブルをさらに正規化するのではなく、このタイプのデータベース構造を持つことによって、どのような問題が発生する可能性がありますか?
回答: あなたは本当にこれらのテーブルと1-1の関係が必要なように思えます。私はテーブルのそれぞれが他のプロパティのヒープを持っていると仮定しているので、あなたはなぜそれらを巨大な場合テーブルに結合したくないのか理解できます。その場合、PK/FKを組み合わせて1-1の関係を強制したいかもしれません... 場合 * ID (PK) * 場合StatusInfo (FK) * サインオフプランニング (FK) * SignOffReportReview (FK) * SignOffQuarterlyReview (FK) 場合StatusInfo * 場合Id (PK, FK) サインオフプランニング * 場合Id (PK, FK) SignOffReportReview * 場合Id (PK, FK) SignOffQuarterlyReview * 場合Id (PK, FK)