題 如何在兩個實體之間創建強制的,非標識的關係?


我在MS Visio 2010工作。這是我的ERD的相關部分:

ERD

Event和Adventure之間的關係是正確的:從Event到Adventure有一個外鍵,而FK是Event主鍵的一部分。

然而,我無法弄清楚的是如何使從Adventure到AccomodationType的關係線與從Event到Adventure的關係線相同,而不將這種關係​​作為冒險PK的一部分。當我查看該關係線的“雜項”屬性時,我希望它是:

  • 基數: 零或更多
  • 關係類型: 非標識
  • 孩子有父母: 不可選(強制性)

但是第三個屬性的複選框是灰色的,並且當我建立關係非識別/識別時,在True / False之間切換。

我可以弄清楚的唯一方法是斷開兩列,從“定義”選項卡,然後取消灰色的“可選”複選框,但然後我丟失了accomType列上的外鍵屬性,而關係符號這是正確的,線仍然是點綴。

如何使左邊的線條的基數看起來與右邊的關係線相同,而不是在冒險的PK中添加accomType?


3
2018-05-17 04:57


起源




答案:


這個MS TechNet主題 將問題標識為與在實體之間創建關係時Visio 2010自動插入外鍵的方式有關:

確實似乎首先鍵入外鍵字段名稱   建立這種關係使這成為可能。選中/取消選中   請求外鍵然後自動檢查/取消選中可選   在關係上。

有兩種方法可以解決此問題,具體取決於您是在圖表上創建新關係還是嘗試修復現有關係。

如何創建強制性,非識別關係

在創建關係之前,使用與父實體的PK中相同的名稱將所需的FK屬性添加到子實體。確保為每個FK屬性選中“Req'd”選項。

在您的示例中,我們向Adventure實體添加“name”屬性:

現在添加關係會自動創建FK,但會在Adventure上保留現有屬性的非標識,非可選狀態:

您可以隨意重命名FK屬性。

請注意,“Child has parent:Optional”複選框仍顯示為灰色。即使在此之後,改變關係的屬性和/或涉及的屬性有時會產生不希望的副作用,並且您可能會發現錯誤的烏鴉腳符號再次“卡住”。幸運的是,有一種更快的方法來解決這個問題,而不是刪除關係並重新開始。

如何修復現有關係

選擇與“卡住”烏鴉腳符號的關係,然後轉到“數據庫屬性”窗口中的“定義”選項卡。

您將看到一條帶有箭頭的線,用於連接父實體和子實體中的PK和FK屬性。在兩個表中選擇已連接的屬性,然後單擊中間列中的按鈕將其斷開連接。如果鍵是複合鍵,您將看到多對屬性:

斷開關係中涉及的所有屬性後,“其他”選項卡中的“Child has parent:Optional”框將再次變為活動狀態。使用Optional parent將關係的屬性設置為Non-identification,仔細檢查子實體中的FK屬性是否設置為“Req'd”,然後返回到Definition選項卡並重新關聯PK和FK屬性:


1
2018-03-17 16:12





Visio在創建新關係時自動添加外鍵列。要更改關係的強制性,只需設置此列的必需屬性(在實體屬性,選項卡列中)。


-1
2017-08-09 20:35