2011-09-14 83 views
1

我有一張學生桌和一張教育桌,教育桌的PK作爲學生桌的外鍵。但是,當教育被刪除時,學生不再出現在視圖中。我該如何解決這個問題?在顯示視圖時刪除外鍵時出現問題?

+0

你的意思是'外鍵'? –

+0

@ user818566,它不是很清楚你想實現什麼。你想阻止用戶刪除或阻止用戶查看刪除的「教育」? –

+0

因此......當刪除教育記錄時,具有已刪除記錄的外鍵(?)鍵的學生記錄不再顯示? –

回答

1

基於你在問什麼,我認爲你應該首先重新考慮你的數據庫結構。

回答下列問題:

  1. 是否有意義有一個不存在的education一個student

    如果您在Educations表中刪除education,但是FK到education行的學生居住在您的數據庫中,則會出現這種情況。這似乎是你所要求的,但它沒有多大意義,因爲它不能保證數據的完整性。

  2. 如果學生入讀education,您是否允許刪除education

    如果它不應該被允許,那麼你只需要在你的1對多關係中禁用級聯刪除,你的問題就可以解決。

  3. 如果一個eduction被刪除,所有被分配到所述教育的學生是否應該留在數據庫中?

    這是你想要的,但與你的數據庫的結構,它不是直接實現。

更簡單的解決方案?

之一將是建立3個表,而不是2:

  1. 的教育
  2. 學生
  3. StudentsEducationAssignments

在1你存儲有與您education實體只做eveything 。在2中,只有與你的student實體有什麼關係(請注意,他們選擇什麼類型的education不是僅描述student的東西)。在3你存儲什麼學生分配什麼教育。

這樣,如果您刪除education,分配給它的學生將不會被刪除,只有將學生關聯到該具體education的信息。這樣可以更輕鬆地保持數據庫完整性

希望這會有所幫助。

1

從您提供的信息來看,我的猜測是您已經在數據庫中強制引用了完整性。這意味着當你在教育中刪除一行時,與它關聯的學生也被刪除。

1

我發現絕對不要刪除表中的數據,因爲其他字段依賴於它們。相反,你應該在表中有一個名爲'IsDeleted'的布爾值,並且當你想'刪除'它並且當你拉取數據時確保你過濾掉了所有'IsDeleted'集到'真'

0

也許一個外部連接,而不是你的視圖中的內部連接?

如果您向我們展示視圖定義,我們可能會提供更多幫助,如果沒有它,我們只能猜測。

相關問題