問題は、非常に大きな関係があるため、正規化した後、実際には外部キーである20個の主キー(複合キー)のようなものになることです。
これらは、関係を一意に識別するために主キーとして宣言する必要があります。これは正しいです?
問題は、非常に大きな関係があるため、正規化した後、実際には外部キーである20個の主キー(複合キー)のようなものになることです。
これらは、関係を一意に識別するために主キーとして宣言する必要があります。これは正しいです?
「実際には外部キーであるが、主キーとして宣言する必要がある外部キー」があると言う場合、実際には、データベース設計を行う能力とスキルおよび権限が不足していることを示します。
外部キーと「主」キーはまったく異なる概念であり、データベース設計の分野に少しでも精通している人が互いに混同することはまったく不可能です。
たぶん、あなたはそれがあなたが実際に何を意味しているのかを説明するためにもう一度試してみることができます。
まず、複合キーを使用しないでください。それらは悪いテクニックです。それらは遅く、変化したときに維持するのは悪夢です。
2つ以上のフィールドで一意性が必要な場合は、主キーは必要ありません。一意のインデックスが必要です。テーブルのPKを代理キー(できればint)にします。
1対1の関係でテーブルを作成しようとしている場合は、親テーブルのPKを子テーブルのPKとして使用し、テーブル間にPK_FK関係を設定することができます。ただし、20個の個別の1対1のテーブルが必要になることはまれです。
データベースは巨大で、多くの関係があるようです。主キーの状況を単純化するためにできることの1つは、各テーブルの主キーとして1つの列を定義し、自動的にインクリメントされるintまたはguidデータ型を使用することです。そうすれば、一意性を確保でき、外部キーは少なくとも主キーから独立しています。
1つのテーブルに関係する20のテーブルでデザインを視覚化するのに問題があります。
データ設計を見ないとわかりませんが、リレーショナルデータベースではなく、階層型データベースを設計したようです。