2017-04-30 8 views
0

私はデータベース設計に比較的新しく、SSAS表形式モデルで多対多リレーションシップを導入するのに苦労しています。多対多データベースリレーションシップデザイン - Wordクラウドを有効にする

私はあるテーブルに「WordGroup」パフォーマンスデータを持っています。

WordGroup | IndexedVolume 
Dining | 1,000 
Sports | 2,000 
Movies | 1,600 
... and so on 

その後、私はそうのようなこれらの「WordGroups」座って別のカテゴリテーブル内に含まれる言葉」を、持っています。

WordGroup | Word 
Dining | Restaurant 
Dining | Food 
Dining | Dinner 
Sports | Football 
Sports | Basketball 
... and so on 

パフォーマンスデータ(IndexedVolume)は「Word」の詳細では表示されません。その中に含まれる「WordGroup」によってのみ表示されます。上記の例では、私は 'Football' IndexedVolumeを自分で見ることはできません。私はFootballを含む 'Sports' WordGroupしか選択できません。

しかし、 'WordGroup'で分析すると、ユーザーは「単語」が含まれていること(理想的にはWord Cloud Visualization)を理解することができます。したがって、私はこれらの2つのテーブルの間の関係を開発したかったので、誰かがワードグループ(または複数)を選択すると、ワードグループ内に含まれているワードを返すことができます。

User selects Dining WordGroup 
<<<Word Cloud or Flat Table would show Words below>>> 
Restaurant 
Food 
Dinner 

私は、などを連結/ストリングスに見えたが、ここでは詳細ははるかに複雑であるよう抑止し、各WordGroupは翻訳で、10+言葉が含まれていてもよいです。

アドバイスをいただければ幸いです!

答えて

0

WordGroupによってanalizingが義務要件がある場合は、これらのテーブルを使用sholud:あなたの言葉beacuse enter image description here

多対多apliesは、1つまたは複数のグループ、例えばにconectedすることができます木は環境、森林などに接続されます。 と明らかに1つのword_groupが多くの単語にconectedされます。

select w.idword , w.name, sum(wg.index_volume) 
from word w 
left join word_group_has_word wgw 
on w.idword=wgw.word_id 
left join word_group wg 
on wg.idword_group=wgw.word_group_id 

group by w.idword 

ですから、言葉にconectedすべてgroup_wordsのすべてのインデックスボリュームの合計が表示されます。Wordの使用によってパフォーマンスデータを表示するには 。あなたが単語グループに接続された単語を表示したいのであれば、あなたは:

select distinct w.idword , w.name 
    from word w 
    left join word_group_has_word wgw 
    on w.idword=wgw.word_id 
    where wgw.word_group_id in [listWordGroupsId] 
関連する問題