2017-02-25 41 views
0

當運動員和使用Sequelize的組織之間存在多個表格時,我希望能夠檢查運動員是否屬於某個組織。這可能嗎?或者我是否需要將該協會延伸到運動員的班級?節點通過多個表格從何處穿過

例如,我有以下 enter image description here

喜歡的圖片的構造,你可以看到,運動員屬於團隊,屬於一個部門,等...直到一個組織。

我有一個使用Sequelize運行的節點/ mysql數據庫。我之前在rails上使用過ruby,在那裏你可以使用「through」來表示通過特定的直接關係可以找到間接關係,但是在belongsTo關係中沒有發現類似Sequelize的內容。

只要想一想,即使有解決方案來做到這一點,我猜想sequelize會加入所有這些表,這將是昂貴的。最好是讓組織直接與運動員建立聯繫,而不是通過一系列其他課程進行聯繫?

謝謝你的幫助。

回答

1

在Sequelize中,您可以在查詢中嵌套belongsTo。在你的情況下,它看起來像:

Athlete.find({ 
    include: [ 
     { 
      model: Team, 
      include: [ 
       model: Division, 
       include: [ 
        model: AgeGroup, 
        include: [ 
         model: League, 
         include: [ 
          model: Season, 
          include: [ 
           model: Organisation, 

          ] 
         ] 
        ] 
       ] 
      ] 
     } 
    ] 
}); 

這是相當醜陋 - 但不一定是一個問題。首先要做的就是嘗試一下,看看錶現是否是一個問題 - 有一切機會都會好起來的。

如果性能是一個問題,並且你已經掌握了所有的數據庫索引和東西,並且仍然無法達到合理的性能,那麼是的,將organisation_id直接添加到運動員中是可以的。這稱爲「反規範化」 - 您可以在其中存儲冗餘數據以優化讀取性能。這是你應該避免的地方 - 但是當你無法避免的時候,這很好。

你只需要記住,當你改變運動員的team_id時,你也可能需要更新他們的organisation_id

+0

雖然我沒有最終走向這個方向,但答案確實有助於告訴我最終走向的方向。謝謝 – user3331142