2011-04-07 50 views
2

參照這裏給出答案的最後一部分: What's the difference between identifying and non-identifying relationships?強制性和非非強制性標識關係

非識別關係可以是 可選或強制性的,這意味着 外鍵列允許NULL或 分別禁止NULL。

我在MySQL Workbench中創建了一個非標識關係,並且我是否持有外鍵列強制或非強制,沒有任何影響。即使它是非強制性的,我也不能輸入NULL值。我必須明確選擇那個特定的外鍵作爲允許NULL,然後才能存儲NULL值。
所以我想問問這是否是正確的行爲,或者這是MySQL Workbench或MySQL的問題?

謝謝

回答

0

G'day,

答案:MySQL工作臺中的錯誤。

解決方案:工作臺似乎有時會感到困惑,我注意到我需要首先刪除任何現有的關係,然後手動刪除關係中表中遺​​留的工件。然後重新建立關係。

對於非識別關係,工作臺應該指出是否由填充的粉紅色菱形圖標強制(或不是由未填充的粉紅色鑽石強制)。對於識別關係,您應該看到指示主鍵的鍵。

雖然我不抱怨社區版中的錯誤!工作臺軟件從我身上獲得10/10。另一方面,如果您正在運行標準版本,請聯繫MySQL。

(我運行MySQL工作臺v5.2.34 CE,版本7780.)

乾杯

0

這聽起來像您的設計工具,我不熟悉的問題。

SQL中的外鍵約束始終是可選的。也就是說,外鍵在引用表中不需要行,它只需要每個引用行在被引用表(父表)中都有相應的行。這是ER建模不能很好地映射到SQL數據庫的一種方式。您可以在ER圖中繪製強制性1到N(N> 0)關係的圖片,但對於大多數實際用途,您無法在SQL中實現 - 它實際上始終爲1到0/N。

儘管可以爲空的外鍵是允許的,我不建議你這樣做。外鍵中的空值可能會導致後面的錯誤結果出現問題,它們在不同的DBMS中工作方式不同,即使由專家用戶也不能正確理解。

+0

這是我使用的工具,它是由MySQL開發團隊提供。 http://wb.mysql.com/?p=1043 – Ali 2011-04-07 11:39:20