外來鍵可以為空

2021-08-30 14:24:06 字數 921 閱讀 3456

一、

關於資料庫的外來鍵,以前我一直以為不允許為空的,今天看到乙個專案中使用了空的資料庫外來鍵,很驚訝,後來才發現是自己以前錯誤了。資料庫外來鍵是可以為空的。

不過為空的資料跟與之相關聯的表就沒有關係了。一般不採用。

二、按照資料庫理論上說的應該是外來鍵可以為空,為空表示其值還沒有確定;如果不為空,剛必須為主鍵相同。舉個例子:有兩張表,系資訊表,學生資訊表,學生資訊表中的系號為外來鍵,此時外來鍵可以為空,表示該學生還沒有確定所在的系;如果系號不為空則系號必須在系資訊表中存在!

外來鍵不能為空只是sqlserver等一些資料庫系統的特殊規則而已!

三、外來鍵可以為空的,乙個表的關鍵的標識是主鍵,外來鍵是否為空不影響表的結構及資料庫設計概念的.外來鍵只起個關聯表的作用.

至於書上提到的外來鍵不能為空是對的,但實踐中在資料庫裡沒有建立關聯時,好像是外來鍵,實則不是外來鍵.

雖然定義了關係

但是屬於未強制關係,這種關係的外來鍵約束被禁用。所以樓主定義無實際意義。所以可以插入null資料

外來鍵的值不允許參照相應主表中不存在的主鍵值,或者外來鍵為空值.

不知道樓主怎麼理解的這句話,我理解為外來鍵可以為空

外來鍵的值或者參照相應主表中存在的主鍵值,或者外來鍵為空值

四、聯機叢書中準確的解釋是

如果在 foreign key 約束的列中輸入非 null 值,則此值必須在被引用的列中存在,否則將返回違反外來鍵約束的錯誤資訊。

也就是說外來鍵中可以有null,除非外來鍵列定義了not null

五、外來鍵當然可以為空了

看看你引用的書上的話

"外來鍵的值不允許參照相應主表中不存在的主鍵值,或者外來鍵為空值. "

後面不是說了 "或者外來鍵為空值 ",不就是說外來鍵可以為空的嗎

外來鍵要有值的話必須是主表中存在的主鍵值,可不就是空值

外來鍵可以為空值,但如果有值的話一定是你參照的那個主表中的主鍵值.

外來鍵可以為空

一 關於資料庫的外來鍵,以前我一直以為不允許為空的,今天看到乙個專案中使用了空的資料庫外來鍵,很驚訝,後來才發現是自己以前錯誤了。資料庫外來鍵是可以為空的。不過為空的資料跟與之相關聯的表就沒有關係了。一般不採用。二 按照資料庫理論上說的應該是外來鍵可以為空,為空表示其值還沒有確定 如果不為空,剛必須...

資料庫外來鍵可以為空

一 關於資料庫的外來鍵,以前我一直以為不允許為空的,今天看到乙個專案中使用了空的資料庫外來鍵,很驚訝,後來才發現是自己以前錯誤了。資料庫外來鍵是可以為空的。不過為空的資料跟與之相關聯的表就沒有關係了。一般不採用。二 按照資料庫理論上說的應該是外來鍵可以為空,為空表示其值還沒有確定 如果不為空,剛必須...

可以為空的型別

來自 http msdn.microsoft.com zh cn library aa479317.aspx 可以為空的型別 可以為空的型別實際上就是由於其他原因而非上述原因而使用的泛型。處理資料庫時面臨的挑戰之一就是正確一致地處理支援null的列。在處理字串和其他類 稱為引用型別 時,您只需為 中...