あなたは良い答えを得ています。別のものを追加しようとしましょう。
サブスクリプションには、サブスクライバとカテゴリの両方が必要です。したがって、これらの列のそれぞれはNULLを許可すべきではありません。 NULLの防止は、外部キー制約と同じではありません。
ユーザーがUSERS表にまだ存在しない場合は、SUBSCRIPTIONSに行を挿入することも不可能です。 CATEGORIESテーブルにカテゴリが存在しない場合は、SUBSCRIPTIONSに行を挿入することは不可能です。これらのルールにサブスクリプションテーブルを強制するには、2つの外部キー制約が必要です。
のALTER TABLEのサブスクリプションは、CONSTRAINT FK_SUBSCRIPTIONS_USERS FOREIGN KEY(ユーザーID)は ALTER TABLEのサブスクリプションがCONSTRAINT FK_SUBSCRIPTIONS_CATEGORIES FOREIGN KEY(区分)がカテゴリー(区分)を参照ADD USERS(ユーザーID)を参照ADD取得任意の値がこのテーブルが既に、他のテーブルに存在するに挿入されていることを確認してください:あなたがテーブルの上に外部キー制約を作成すると
は、データベースエンジンに言って有効です。ところで、制約を作成するための要件は、テーブルで参照される列に固有の制約が有効でなければならないということです。つまり、テーブルです。通常、の参照された列は、テーブルがのテーブルの主キーになります。
外部キー制約を作成することで、データベースエンジンに言ってないます:行はこのテーブルに挿入されますことを確認してください。 このテーブルには、まったく行がありません(それは珍しいかもしれませんが)かなり可能です。外部キーの制約は、がに挿入されるの値がのテーブルにあることを確認するだけです。
出典
2011-05-31 13:12:19
Tim
「何かを購読することは必須ではありませんが、ユーザーテーブルとサブスクリプションテーブルの間に外部キーが必要ですか? - はい。 –
これは、サブスクリプションがジャンクションテーブルである多対多の関係と考えられるのでしょうか? – johan