2

最近作成したLDMには、次の構造を持つエンティティがあります。

Building_ID (Primary Key, Foreign Key),
Plant_ID (Foreign Key),
Build_Year (Primary Key),
Size

この設計を使用してSQLデータベースにテーブルを作成する必要があります。私が遭遇している質問は、ここで主キーをどのように処理するかです。SQLテーブルに複数の主キーがあっても大丈夫ですか?この質問に対する答えが「はい」の場合、どの列が一意のインデックスとして機能する必要がありますか?一意のインデックス識別子として機能する新しい列を作成する必要がありますか?

4

1 に答える 1

1

リレーショナルデータベースシステム(SQL Server、Oracle、Firebird、IBM DB2、Sybaseなど)のSQLテーブルは、1つのプライマリキーしか持てません。結局のところ、これがプライマリキーです。1つしか持てません。

ただし、主キーは複数の列で構成できます(「複合主キー」と呼ばれます)。次のような欠点があります。他のテーブルからのすべての外部キー制約も複合PKのすべての列を指定する必要があるため、テーブルの結合が少し面倒になります(キーに含まれるすべての列にすべての等式制約を指定する必要があるため)あなたの参加)。

主キーに加えて、複数の代替キー(行を一意に識別できる他の列)を使用することもできます。これらは、テーブルへのアクセスを高速化するのに役立つ場合など、インデックスの優れた候補になります(ただし、テーブルのインデックスを過剰に作成しないでください。少ないほど多くなります)。

于 2012-04-06T17:05:05.563 に答える