2

私はテーブルを持っています:

Users{UserId ...}
Professors{UserId ...}

両方のテーブルで PK になるように設定UserIdし、1:1 の関係にしました。

Professorしかし、新しいユーザーを挿入しようとすると、テーブルへの挿入も必要になるため機能しません。

1人のユーザーがProfessorテーブルに1つのレコードしか持てないようにしたいのですが、Professorテーブルに存在する必要がないようにしたいです(すべてのユーザーを教授にしたくありません:))。

SQL Server Management Studio で 1 対 (0...1) の関係を設定する方法は?

キー制約を NO に設定することは解決策ではないことを私は知っています:)

4

3 に答える 3

7

これらの要件がある場合:

  • ユーザーは教授になることも、そうでないこともできます
  • 教授は常にユーザーです

それが1 :: 0..1関係であることは正しいです。SQL では、次のように実装できます。

CREATE TABLE Users
  ( UserId INT NOT NULL
  , ...
  , PRIMARY KEY (UserId)
  ) ;

CREATE TABLE Professors
  ( UserId INT NOT NULL
  , ...
  , PRIMARY KEY (UserId)
  , FOREIGN KEY (UserId)
      REFERENCES Users (UserId)
  ) ;

あなたの説明から、外部キー制約を逆の順序で定義した可能性があります。

于 2013-10-13T19:16:43.900 に答える
0

ここでは外部キーを使用する必要があると思います。教授 ID は、すべての問題を解決するユーザー テーブルの外部キーである必要があります。

外部キーとは何か、外部キークエリの書き方を調べてください

于 2013-10-13T19:06:47.250 に答える
-1

Professors テーブルで、ProfessorID を作成し、UserID を FK nullable として追加する必要があります。

于 2013-10-13T19:06:10.063 に答える