2012-07-19 15 views
0

在我的項目中,我有以下實體: ProjectCategory和橫幅一對多關係。單一「一」不是實體

橫幅通過category_id鏈接到category。所以一個類別有幾個標語。

問題是,除了類別我有單(當前單個)頁面,我也需要插入橫幅。

Currentl我有幾個解決方案:

  1. 從類別取消鏈接的旗幟,通過代碼檢查約束,CATEGORY_ID -1表示此CMS頁面。好,但沒有檢查約束。我們需要約束嗎?
  2. 從類別中取消鏈接,創建Pages表格。頁面可能是類別,所以就像簡單的頁面一樣。附加的表格,單頁將保持單一。
  3. 向is_homepage這樣的表中添加參數。將橫幅附加到隨機類別。級聯問題可能發生。

什麼是最好的解決辦法?

P.S.我的工具symfony2.0和學說

回答

0

也許是最簡單的解決方案是同時擁有category_id(NULL-能夠對分類FK)和page_id在橫幅(NULL-能夠FK朝頁)。您可以允許或限制(通過CHECK)屬於類別和頁面的同一橫幅的可能性。

爲了每頁執行(至多)單個標題,使page_id爲備用密鑰(UNIQUE約束)。

與所有上述情況,你的模型看起來像:

enter image description here

CHECK (
    (CATEGORY_ID IS NOT NULL AND PAGE_ID IS NULL) 
    OR (CATEGORY_ID IS NULL AND PAGE_ID IS NOT NULL) 
) 

DBMS的外鍵衝突檢查時跳過NULL。

+0

那麼它似乎是最好的解決方案。但它意味着新的實體 - 頁面。不幸的是,就目前而言,將只有單一頁面 - 主頁%)我會考慮你的,這可能是我會使字段爲空,如果字段爲空,這意味着這是主頁。我明白,這不是一個好的解決方案:)))但我不想混亂添加。因爲1頁的實體。 – 2012-07-19 11:34:14

相關問題