0

私が尋ねたい基本的なデータベースの質問があります:

多対多の関係を形成する 2 つのテーブルがある場合、2 つのテーブルの間に別のテーブルを含めて、1 対多の関係を作成してこの関係を停止します。作成した新しいテーブルのフィールドは両方とも主キーである必要がありますか?そして外国の鍵か、それとも外国の鍵である必要がありますか?

例えば

コース表:

CourseId (PK auto)  CourseNo  CourseName
1                   2343      ICT
2                   4030      Maths

Course_Module テーブル: (これは、PK と FK の両方にする必要があるかどうかを尋ねているテーブルです):

CourseId (FK course)  ModuleId (FK Module)
1                     3
1                     2
2                     1
2                     2

モジュール表:

ModuleId (PK auto)  ModuleNo  ModuleName
1                   344       Algebra
2                   223       Statistics
3                   303       Systems Stratergy
4

3 に答える 3

1

複合PK(つまり、courseIdとModuleIdの両方)と外部キーである必要があります。これは、courseIdとModuleIdの組み合わせを一意にする必要があり、参照整合性も必要なためです。

于 2013-02-14T21:38:43.650 に答える
0

通常、それらは両方です。あなたの場合CourseId、外部キーとして個別に使用されている間ModuleId、テーブルに複合主キーを形成する必要があります。Course_Moduleあなたが提供したサンプルデータには、そのテーブルに一意の行があり、これが私にとって決定的なポイントです.

于 2013-02-14T21:38:01.093 に答える
0

すべてのテーブルでプライマリを指定する必要はありませんただし、パフォーマンスに影響を与える可能性があるため、この場合は両方のフィールドに主キーを指定することをお勧めします。

また、フィールドを外部キーとして指定する必要はなく、MySQL の一部のエンジンでは、実際には外部キーを使用するオプションがないことに注意してください。

于 2013-02-14T21:38:40.393 に答える