2011-06-27 30 views
1

我爲我的ORM和我的應用使用Doctrine 2我有用戶,他們可以與公司建立多對多的關係,但用戶只能有一個活躍/當前的公司。我的問題是在哪裏包括標記用戶當前公司的字段。我的想法是有兩種選擇: 1)將isCurrent字段添加到UsersCompanies參考表。但是,如果我想獲取用戶的當前公司,則必須遍歷用戶的UsersCompanies引用,並檢查每個引用的is_current字段。 2)將current_users_companies_id放入用戶表中,以便可以輕鬆訪問。學說2 /數據庫設計問題:用戶,公司,用戶公司參考表,以及在哪裏包括當前公司的領域?

一如既往,我感謝您的時間和意見。

回答

2

那麼,由於用戶只能有一個當前的公司,它會導致我認爲這是一個特定的一對多關係。因此,最好的(也是最簡單的:))方法就是在用戶對象中使用current_company_id屬性。

+0

感謝您的意見。我實際編輯了我的帖子,只是爲了澄清,usersCompanies表還包含職位,辦公地點等其他信息,這些信息是特定於用戶和公司之間的關係。因此,它是一個參考表而不是連接表。這會改變你的答案嗎?在這種情況下,檢索公司當前員工將很困難,因爲我不得不循環查看該用戶的當前公司是否匹配。有沒有更有效的方式來處理這個問題? – blacktie24

+0

那麼,如果您要在用戶中使用current_company_id,則可以在Doctrine 2中使其成爲關係。然後,您可以簡單地在公司實體上創建關係的另一端 - 這將允許您簡單地獲取該字段從公司找到所有當前的員工。 –

+0

我還需要一個current_user_company_reference_id以便快速訪問用戶當前的UserCompanyReference實體,因爲它包含與關係相關的其他信息,如果我同時擁有current_company_id和current_user_company_reference_id,那麼它是非規範化設計嗎? Thx再次,真的很感謝你的意見。 – blacktie24