13

Ok。だから私はDBの主キーが何であるかを知っています。データベースにテーブルがある場合、主キーはテーブルの各行に固有の単一の値です。例えば:

id   | name    | whatever
-------------------------
1      Alice     ....
2      Bob       ....
45     Eve       ....
988    ....      ....

したがって、外部キーが正確に何であるかを説明するには、適切で簡単な例が必要です。私はそれを理解していないので:)


編集: OK、それはかなり簡単です。私は問題を複雑にしすぎていたと思います。

最後の質問です。外部キーの唯一の制限は、参照しているテーブルの有効な主キー値であるということですか?

4

8 に答える 8

25

外部キーは、別のテーブルの主キーを指すフィールドです。

例:

Table Name - Users

UserID    UserName    UserRoleID
1         JohnD       1
2         CourtneyC   1
3         Benjamin    2

Table Name - UserRoles

UserRoleID    Desc
1             Admin
2             Moderator

Users.UserRoleID は、主キー UserRoles.UserRoleID を指す外部キーであることがわかります。

外部キーを使用すると、他のテーブルでのリレーションシップの設定が簡単になり、複数のテーブルのデータをうまくリンクすることができます。

例:

SELECT
    a.UserID, 
    a.UserName, 
    b.Desc as [UserRole]
FROM 
    Users a INNER JOIN 
        UserRoles b ON a.UserRoleID = b.UserRoleID

出力は次のようになります。

UserID    UserName    User Role
1         JohnD       Admin
2         CourneyC    Admin
3         Benjamin    Moderator
于 2009-03-17T18:16:26.387 に答える
15

ホームシティである別のフィールドがあるとします。

id   | name    | city
-------------------------
1      Alice     San Francisco
2      Bob       New York
45     Eve       New York
988    Bill      San Francisco

さて、同じ都市を多くの行で繰り返すことは意味がありません。これにより、タイプミス、スペースの過剰使用、その他の問題の中でも特に結果を表示するのが困難になる可能性があります。したがって、外部キーを使用します。

id   | name    | fk_city
-------------------------
1      Alice     1
2      Bob       2
45     Eve       2
988    Bill      1

ホームシティテーブル:

id   | name
-------------------------
1    | San Francisco
2    | New York

それがあなたにとって物事をより明確にすることを願っています。:-)

更新:最後の質問について:はい。:-)

于 2009-03-17T18:18:03.233 に答える
3

外部キーは、あるテーブル内の列であり、別のテーブル内の何かを一意に識別する必要があります。したがって、値はその他のテーブルの主キーに対応する必要があります。

たとえば、コースを受講している学生のテーブルがある場合、すべてのレコードには学生 ID とコース ID が含まれます。これらは、学生テーブル (学生 ID ごとに 1 つのレコードがある) およびコース テーブル (コース ID ごとに 1 つのレコードがある) への外部キーです。

参照整合性とは、すべての外部キーがこれらのターゲット テーブルの主キーに実際に対応することを意味します。たとえば、登録テーブル内のすべての学生 ID とコース ID は、実際の学生 ID とコース ID に対応しています。

于 2009-03-17T18:18:33.293 に答える
0

リレーショナル データベースでは、子テーブルが親テーブルの ID を参照することによって、1 対多の関係が実装されます。子テーブルの親 ID は、別のテーブルの主キーを参照するため、外部キーと呼ばれます。

于 2009-03-17T18:17:55.307 に答える