[解決済み] 外部キーは同じテーブルの主キーを参照できますか?
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テーブルでのみ主キーになることができます。
関連
-
[解決済み] T-SQLを使用して外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] SQL Serverで、指定したテーブルを参照しているすべての外部キーを一覧表示するにはどうすればよいですか?
-
[解決済み] 外部キー制約のあるテーブルを切り捨てるには?
-
[解決済み] MySQLで外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] Sqliteの複数カラムの主キー
-
[解決済み] テーブルやカラムに対するすべての外部キーを確認するにはどうすればよいですか?
-
[解決済み] postgres の主キー配列が同期しなくなったときにリセットする方法は?
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み】既存テーブルへの外部キー追加
-
[解決済み】Postgresと外部キーおよびプライマリキー上のインデックス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
MHAクラスタエラーサマリーの構築
-
[解決済み] ストアドプロシージャ 'dbo.aspnet_CheckSchemaVersion' が見つかりませんでした。
-
[解決済み] アドホッククエリとは何ですか?
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] NOT IN vs NOT EXISTS
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?