對於連續第n次,我再次遇到同樣的老問題。這是關於「如何以無痛的方式將OOP結構映射到數據庫表」。
這是一個場景:我的系統中有幾種類型的「演員」 - 工人,僱主,聯繫人。它們具有某些共同的功能;其他作品則大不相同。所有參與者處理的實體都是「通信」,「筆記」(管理員喜歡在客戶端留言)等等。每個演員類型處理的其他實體類型有很多種,而其他實體類型則沒有。
目前,我的數據庫架構包括表:
演員:
- 工人
- 僱主
- 接觸
實體:
- 通信
- 筆記
- 等
關聯表:
- 工人通信ASSN
- 僱主通信ASSN
- 工人筆記-assn
- 等,你得到dril湖
這對我來說就像是一種「代碼味道」。每當顧客改變他們的角色時(即從「聯繫」提升到「僱主」),就需要運行一堆瘋狂的腳本。 Yuck ...另一方面,如果我在一個純粹的面向對象驅動的世界中運行,這將會容易得多 - 爲具有共同屬性的所有實體都有一個基類,並且可以完成它...
在數據庫世界中,這個選項在理論上似乎是可行的,但聽起來很混亂......也就是說如果我理解這個權利,我將擁有一個新的base_actor表,並且每個其他actor都有一個base_actor_id,然後這些關聯將位於base_actor和這些實體之間......但是,如何進行反向關聯查詢?即「向我展示只與工人類型的演員進行的所有交流」?
有什麼建議嗎?關於「將OOP結構映射到關係數據庫」的一般想法?
作品一些,除了反向關聯查詢變得毛毛:從通訊C – 2009-03-01 22:48:51
選擇姓名「告訴我,我已經在上個月發出信函給所有工人的名字」內部連接actor_base AB在c.actorid = ab.actorid其中ab.actortype ='工人' – Manu 2009-03-01 22:53:23
和c.date之間的getdate()和dateadd(m,-1,getdtate()) – Manu 2009-03-01 22:54:45