私は3nfデータベースを持っています。その中には、依存関係のより大きなチェーンの一部である一連の2つのテーブルがあります。これらの2つのテーブル(AとB)は、参照整合性の適用に関して問題を引き起こしています。
Table A
int AId //primary key
string Name
date Date
int BId //foreign key
Table B
int BId //primary key
string Name
string Description
int CId //foreign key
Table C
int CId
string HowTo
これらの表は例として部分的です。説明については、以下を参照してください。
表Cには、FooBarの作成方法に関する情報が記載されています。FooBarが作成されると、表Bは、追跡およびQAの目的でFooBarが作成された実際の方法を記録します。FooBarが作成され、その作成方法のデータが表Bに入力されると、表Aは、外部キーBIdを介して表Bからの情報とともに新しいFooBarを保持します。
私の問題はこれです。場合によっては、FooBarが作成されていなくても(基本的にはインポートとして)システムに入ることができる必要があります。ただし、設計が不十分なため、(この例では)テーブルAの外部キーが有効であり、参照整合性を壊さないことを保証するために、テーブルBに相関エントリがないとこれは不可能です。
私が考えていたアプローチは、AとBの間に別のテーブルを配置することでした。
Table AB
int ABId //primary key
int BId //foreign key
int AId //foreign key
その理由は、表Bの1つのエントリから複数のFooBarを作成できるためです。つまり、この変更により、次の結果になる可能性があります。
Table AB
ABId BId AId
1 2 6
2 2 7
3 2 8
4 3 9
5 3 10
A)テーブルBの外部レコードを満たす必要なしにレコードをテーブルAに追加できるように、この依存関係を削除するために使用する必要がある別のアプローチはありますか?
B)変更を加えると、クエリが遅くなることが示唆されていますか?