2013-10-13 49 views
0

我有表:如何設置1到0 ...在SQL Server Management 1間的關係工作室

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

我設置UserId是PK兩個表中並提出1:1的關係。

但是,如果我嘗試插入新用戶,它不起作用,因爲它需要插入Professor表中。

我想讓一個用戶在教授表中只能有一條記錄,但是我也想讓它不必存在於教授表中(我不想讓所有的用戶教授:) )。

如何在SQL Server Management Studio中設置1到(0 ... 1)的關係?

我知道,一套強制鍵約束NO是不是一個解決方案:)

+0

我認爲你已經設置了相反的外鍵約束。它應該在'Professors'表中,'(UserId)'引用'Users(UserId)'。我建議你向我們展示CREATE TABLE語句。 –

回答

6

如果你有以下要求:

  • 用戶可以教授 - 或不
  • 教授始終是一個用戶

那麼你是正確的,這是一個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) 
) ; 

從你的描述,你可能已經定義以相反的順序外鍵約束。

+0

我正在使用圖來設計關係。這可以使用圖解來解決嗎? – 1110

+0

可能是的。我現在無法測試,但嘗試顛倒FK的順序。或者刪除它並重新創建(以相反的順序)。 –

-1

在教授的表,你應該創建一個ProfessorID並添加用戶名作爲FK空。

0

我想你應該在這裏使用外鍵。 教授ID應該是用戶表中的外鍵,這將解決您的所有問題。

只看了一下外鍵,以及如何編寫外鍵查詢