1. ホーム
  2. sql

[解決済み] 外部キーは同じテーブルの主キーを参照できますか?

2023-06-07 21:37:37

質問

私はただ、外部キーに uniqueness プロパティを持たないからです。

しかし、いくつかの人々は、それがテーブルを自己結合する場合になることができると言いました。 私は初めて SQL . それが本当なら、どのように、なぜ説明してください?

Employee table
| e_id | e_name  | e_sala  |  d_id  |
|----  |-------  |-----    |--------|
|  1   |   Tom   |  50K    |    A   |
|  2   | Billy   |  15K    |    A   |
|  3   | Bucky   |  15K    |    B   |


department table
| d_id | d_name  |
|----  |-------  |
|  A   |   XXX   | 
|  B   |   YYY   | 

さて、d_idは外部キーなので、どのようにして主キーになるのでしょうか。また、以下の点について説明してください。 join . その用途は何ですか?

どのように解決するのですか?

質問が少しわかりにくいと思います。

もしあなたが「外部キーは同じテーブルの主キーを『参照』できるのか」という意味であれば、いくつかの回答があるように、答えは完全に「イエス」です。たとえば、従業員テーブルでは、従業員の行にマネージャーの従業員番号を格納する列があり、マネージャーも従業員であるため、他の従業員の行と同様にテーブル内に行を持つことができます。

もしあなたが「列(または列のセット)は同じテーブルで主キーにも外部キーにもなり得るか」という意味であれば、私の考えでは答えは「いいえ」で、意味がないように思われます。しかし、次の定義はSQL Serverで成功します!

create table t1(c1 int not null primary key foreign key references t1(c1))

しかし、このような制約があっても、誰かが実用的な例を挙げてくれないと意味がないと思うのです。

AmanSさんの例では、Employeeテーブルの主キーがd_idであることはありえません。テーブルには主キーは1つしかありません。d_idはdepartmentテーブルでのみ主キーになることができます。