2017-06-28 2 views
0

私はインターネット上のどこにも答えが見つからないという質問があります。 データベース設計についてです。FKまたはFPK?リレーショナルデータベース

FPKとFKの違いは何ですか? 私はPKを知っています。

しかし私は、FKまたはFPKを持っているときはいつでも、FK/FPKキーを完全に理解しているわけではありません。

+0

「FPK」はありません。それはどういう意味ですか?あなたは "FK"とは何と思いますか?あなたが使用している参照教科書は何ですか? PS私の答えを見てください。 – philipxy

答えて

1

あなたは外部キーと主キーを参照してください。ここ は、キーを説明する興味深い記事です:1が、dowsがメインテーブルにすべてのレコードのレコードが関連していない:あなたは1を関連しているテーブルを持っているとき https://www.essentialsql.com/what-is-the-difference-between-a-primary-key-and-a-foreign-key/

A外国主キーを使用することができます。

例: テーブルT1に情報があり、一部のレコードでユニークな情報レコードがありますが、T1ではすべてではありません。

したがって、何百もの空のセルを含む列を持たないために、別のテーブルT2にデータを保存することにします。

これらは一意のレコード(T1とT2の間に1:1)であるため、T2はプライマリID(T2.T1_id)として外部キーを使用して独自のプライマリキーと外部キーを持つことができます。

CREATE TABLE `T1` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, 
    PRIMARY KEY (`id`) 
); 

CREATE TABLE `T2` (
    `T1_id` int(11) NOT NULL, 
    `specinfo` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, 
    PRIMARY KEY (`T1_id`), 
    CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`T1_id`) REFERENCES `T1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE 
); 
+0

私はまだ外国の主キーの考えを完全に得ていません: –

0

「FPK」(外部プライマリキー?)はありません。それはどういう意味ですか?なぜあなたはそれがあると思いますか? "FK"(外来キー)はどういう意味ですか?どの学術(組織/人)教科書を使用していますか?

リレーショナル・モデル(ただし、SQLではありません):スーパー・キーは、一意の値を持つ列のセットです。 (SQL UNIQUE NOT NULL列セット。)CK(候補キー)は、スーパーキーが含まれていないスーパーキーです。 PKはあなたがPKと呼ぶことを決めたCKです。 FKは、PK(プライマリキー)だけでなく、任意のCKを参照します。列リストのサブロー値は、他の場所のCK列リストのサブロー値として表示する必要があります。

SQLで

:それはつまり、SQL UNIQUE NOT NULL列リスト、スーパーキーを参照する、すなわち、FK宣言は、外国スーパーキーを宣言します。 実際にが参照するスーパーキーが実際にはCK(場合によってはPK)である場合、すなわち実際にはより小さなスーパーキーを含まないスーパーキーです。UNIQUE NOT NULLまたはPKには、より小さなUNIQUE NOT NULLまたはPKが含まれません。

関連する問題