私はこれらの2つの用語について非常に混乱しています。それらは同じですか、異なるですか?
一部の本や人々は同じだと言い、他の人は違うと言う。
試しましたが、決定的な答えが見つかりませんでした。
FOREIGN KEY
キーワードが使用されていないREFERENCES
の使用について話していると思われます。
author_id INTEGER REFERENCES author(id)
... の代わりに ...
author_id INTEGER,
FOREIGN KEY(author_id) REFERENCES author(id)
答えは、同じものの単純な構文であるということです。 2つの間を変更する際の主な関心事は、読みやすさです。
「参照キー」は、リレーショナルモデリングまたは米国英語のSQL実装における通常の技術用語ではありません。
外部キーは、他のテーブルのキーを「参照」します。それが混乱の原因なのでしょうか?
本当に何かを参照キーとは呼ばない...それらは同じものです...あなたはWordを見るかもしれませんreferencessqliteでの例:このような構文を使用して、著者と本のデータベースを開始できます。これにより、1人の著者が多くの本を所有できることを示すことができます。これは、books.author_id
(数行上で定義)参照author.id
CREATE TABLE 'author' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
firstname varchar(255)
lastname varchar(255)
);
CREATE TABLE 'books' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
author_id INTEGER,
title varchar(255),
published date,
FOREIGN KEY(author_id) REFERENCES author(id)
);
外部キーmust主キーを参照します。 REFERENCES制約を単純に使用する場合、参照されるキーが主キーである必要はありません。
おそらく、「参照キー」という用語を多少緩く使用しているのでしょうか?
1つの行の外部キー値は、対応するキー値を含む行を「参照」すると言われます。前の文の「参照」という単語は動詞なので、参照する外部キー値と参照されるキー値があると言うことができます。
参照されているのはテーブルキー制約ではなくキー値ですが、大まかに言って、参照される可能性のある値を含む行を意味する「参照キー」と言うことができると思います。次に、「参照キー」が「参照キー」になり得るが、その起源を信じることができない方法を確認します。
外部キーは、他のテーブルのキーを「参照」します。他のテーブルのそのキーは、参照キーと呼ばれます。 phpmyadminでグラフィック機能を使用している場合、おそらくこれについてよく耳にするでしょう。
2つのキーワード「FOREIGN KEY」と「REFERENCES」キーワードの唯一かつ最も重要な違いは、どちらもデータを親テーブルの子データにすることですが、「FOREIGN KEY」はテーブルレベルの制約を作成するために使用されますがREFERENCESキーワードは、列レベルの制約の作成にのみ使用できます列レベルの制約は、テーブルの作成中にのみ作成できますが、テーブルレベルの制約は、ALTER TABLEコマンドを使用して追加できます。
外部キーを宣言するには2つの方法があります。
外部キーが単一属性の場合:
リファレンス()
外部キーが属性のリストである場合
外部キー()のリファレンス