問題タブ [many-to-many]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1732 参照

ruby-on-rails - Rails has_and_belongs_to_many は 3 つのテーブルにまたがって結合します

リスト、カテゴリ、サイトの 3 つのモデルがあります。リストとサイトの間には多対多の関係があり、リストとカテゴリの間には多対多の関係があります。したがって、リストは 1 つまたは複数のサイトと 1 つまたは複数のカテゴリに属します (リストは複数のサイトと複数のカテゴリに表示される場合があります)。

サイト ID とカテゴリ ID を指定すると、すべてのリストのセットが必要になります。サイト ID (listings = site.listings) からリストを取得する方法と、カテゴリ ID (listings = category.listings) からリストを取得する方法は理解していますが、一連のリストのトリプル結合を取得するにはどうすればよいですか?サイト ID とカテゴリ ID の両方?

SQL は次のようになります (sit_id と cat_id は入力です): リスト l、category_listings cl、listings_sites、ls から l.name を選択します。 .listing_id = l.id

前もって感謝します

0 投票する
1 に答える
134 参照

c# - 二重にリンクされた多対多の関係をクリーンアップする方法は?

まず、タイトルが私が言及しているものを正確に説明しているかどうかわからないので、これを何と呼ぶか​​についてコメントを残してください。または、担当者がいる場合は名前を変更してください。

たとえば、本と図書館の2つのクラスがあるとします。ライブラリには、所有するすべての書籍のリストであるプロパティが含まれています。ブックには、それが属するすべてのライブラリのリストであるプロパティがあります。

Bookには、ライブラリのリストからライブラリを削除するRemoveFromLibraryメソッドがあります。また、同じ方法でもう一方の端、つまり図書館が所有する本のリストをクリーンアップする必要があります。同じことがもう一方の端にも当てはまります。ライブラリのRemoveBookメソッドは、それを含むそのブックのライブラリのリストもクリーンアップします。

まず第一に、これは理にかなっていますか?コードを呼び出すのに、クリーンアップについて心配する必要がなく、1つの論理アクションを実行するために2つのメソッドを呼び出す必要がないのは便利なようです。つまり、一方のリストから削除しても、もう一方のリストから削除しても意味がありません。同時に、これはそれらをあまりにも緊密に結合していると言うことができますが、それが問題になった場合は、デカップリングするためにリファクタリングするだけだと思います。

これを実装する限り、私がよくわからないのは、通常のパブリックメソッドを呼び出すだけで、各メソッドが他のメソッドを呼び出す無限ループになるということです。クリーンアップしない別の内部プロパティ(C#で動作)を作成することもできますが、他の1つのメソッドからのみ呼び出されることを意図したメソッドでAPIを散らかしているように感じます。または、基になるコレクションを内部として公開することもできます。これは少し優れていますが、それでも理想的ではないようです。より良い解決策はありますか、それともこれら2つのうちのいずれかを使用する必要がありますか、それとも呼び出しコードがクリーンアップ自体を実行することを確認する必要がありますか?

0 投票する
5 に答える
18656 参照

entity-framework - Entity Framework - エンティティへの Linq - 多対多のクエリの問題

Linq To Entities で多対多の関係を照会する際に問題が発生しています。基本的に、Linq を使用してこのクエリを複製しようとしています。

私はネットを見回しましたが、これを行う方法の適切な例は実際には見つかりませんでした。私が持っている最も近いものは次のとおりです。

これに関する問題は、顧客が複数の関心を持ち、そのうちの 1 つが「サッカー」である場合、それらすべてが返されることです。逆の問題を持つ All() も調べました。つまり、興味が 1 つあり、それがサッカーの場合にのみ返されます。2 つあり、そのうちの 1 つがサッカーでない場合は何も返されません。

誰でもアイデアはありますか?

0 投票する
3 に答える
355 参照

c# - NHibernate の多対多の関係で使用するアルゴリズム

写真とタグの間に多対多の関係があります。写真には複数のタグを付けることができ、複数の写真で同じタグを共有できます。

ディレクトリ内の写真をスキャンして NHibernate に追加するループがあります。そのプロセス中にいくつかのタグが写真に追加されます。たとえば、写真が 2009 年に撮影された場合は 2009-tag です。

Tag クラスは Equals と GetHashCode を実装し、Name プロパティを唯一の署名プロパティとして使用します。Photo と Tag の両方に代理キーがあり、バージョン管理されています。

次のようなコードがあります。

私の問題は、タグが存在しない場合です。たとえば、新年の最初の写真です。AddDefaultTags メソッドは、タグがデータベースに存在するかどうかを確認し、タグを作成して NHibernate に追加します。これは、1 枚の写真を追加する場合はうまく機能しますが、新しい年に同じ作業単位内で複数の写真をインポートすると、データベースにまだ存在せず、再度追加されるため失敗します。作業単位を完了すると、同じ名前のタグ テーブルに 2 つのエントリを追加しようとするため失敗します...

私の質問は、NHibernate が上記の状況でデータベースに単一のタグのみを作成しようとすることを確認する方法です。新しく追加されたタグのリストを自分で維持する必要がありますか、それとも機能するようにマッピングを設定できますか?

0 投票する
1 に答える
1250 参照

django - カスタム m2m リレーションシップ モデルで汎用外部キーを使用する方法

最初のバージョンでは、パラメーター through=MyModel を使用して ManyToManyField のカスタム テーブルを使用できます。MyModel には外部キーを含める必要があります。しかし、一般的な外部キーを使用したい:

コンテンツオブジェクトを外部キーとして。

どうすればいいですか?

0 投票する
4 に答える
44868 参照

mysql - 多対多を照会する方法は?

Ruby on Railsのチュートリアルを見ているときに、次のテーブル構造を見つけました。

俳優が関与している映画を選択するためのクエリを作成するにはどうすればよいですか?

私はRubyonRailsコードを求めていません。実際のmysqlクエリ文字列が必要です。

ありがとうございました!

0 投票する
1 に答える
3408 参照

django - 多対多の関係を使用するには、「Answer」インスタンスに主キー値が必要です

という別のモデルと関係がある というモデルがAnswerあります。これは、当然のことながら、質問に対するいくつかの答えが存在する可能性があることを意味します。ForeignKeyQuestion

今、私はAnswerインスタンスを作成しようとしており、M2M 関係を に設定してChoiceいますが、M2M に触れる前に次のエラーが発生します:'Answer' instance needs to have a primary key value before a many-to-many relationship can be used.

もちろん、コメントアウトする[1]と問題は解決しますが、そもそもなぜ問題が発生するのかわかりません。ご覧のとおり、M2M で何もしていないからです。


編集:名前にも問題はないようですchoicesoptions同じ問題で、すべての発生をに変更してみました。

0 投票する
6 に答える
8202 参照

many-to-many - 結合テーブル (結合テーブル) を 1 対多のリレーションシップにも使用できますか?

定義によると、ジャンクション テーブル(ブリッジ テーブル/リンク テーブル) は、次のように使用すると、多対多の関係に使用されます。

しかし、1 人のユーザーが多くの注文に関連付けられているこの例のように、1 対多の関係にも同じように簡単に使用できませんでした:

(私はデータベースについてよく理解していないので、誤解があれば訂正してください。)

0 投票する
5 に答える
1223 参照

primary-key - RDBMS で多対多のコレクション エンティティをどのように解決しますか?

私はアーティストと曲をモデル化しようとしていますが、多くのアーティスト (デュエットなど) が Song_Performance を実行できるという問題があるため、曲の実行者を表す Artist_Group があります。

これで、Artist と Artist_Group の間に多対多の関係ができました。ここで、Artist_Group は、そのグループ内のアーティストのコレクションによって一意に識別されます。Artist_Group へのアーティストの参加を表す交差エンティティを作成できます (Artist_Group_Participation?)

同じアーティストのセットが同じグループを表すという事実を保持する Artist_Group エンティティの主キーを作成する方法がわかりません。Artist_Group エンティティの主キーがないということは、 Artist_Group_Participation エンティティの外部キー。

John Carlis と Joseph Maguire による本「Mastering Data Modeling」では、この形状について言及し、「Many-Many Collection Entity」と呼んでおり、非常にまれであると述べていますが、解決方法については述べていません。 -to-many の関係は、RDBMS に直接格納することはできません。これを表現するにはどうすればよいですか?

編集:

誰もが交差テーブルを提案しているように見えますが、それは私の問題ではありません。私は持っています。私の問題は、Artist_Group エントリに含まれるアーティストのグループが既存のグループと同じである場合、順序を無視して、Artist_Group エントリを追加できないという制約を適用することです。Artist_Group の ID を、それを構成するさまざまなアーティストの連結である varchar にすることを考えました。これにより、順序が重要な場合は問題が解決しますが、「エルトン ジョンとビリー ジョエル」の Artist_Group を使用しても追加は妨げられません。 「ビリー・ジョエルとエルトン・ジョン」のグループ。

0 投票する
1 に答える
320 参照

.net - 多対多のルックアップテーブルからオブジェクトをクエリする

私はMaster1andと、 andオブジェクトへの外部キーを含むSub1別の呼び出しを持っています。の単一のIDに関連付けられているIDが複数あります。Master1Sub1_MapMaster1Sub1Sub1Master1

Sub1特定のレコードに割り当てられているすべてのレコードを表示したい場合Master1.ID、SubSonicオブジェクトを使用してそれを行うにはどうすればよいですか?SqlQueryとINネストされたselectを使用してそれを行うことができますが、マップテーブルが外部キーを使用しているため、より良い方法はありますか?Sub1Collectionが返されると便利です。

にいくつかの参照TableSchemaがありますが、探しているものが何をするのかわかりません。