問題タブ [self-referencing-table]

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 に答える
1413 参照

c# - Entity Framework Core での多対多の関係の自己参照

プロジェクトのモデルを構築するために Entity Framework Core (EF) を使用しています。

今、私は会社とその階層を保存したいと考えています。したがって、次のケースがあります。

  • 子会社 (Child) には、任意の数の子と任意の数の親があります。
  • 親会社には、任意の数の子と任意の数の親もいます。

多対多の関係はほとんど問題ではありません。本当の問題は、多対多と自己参照 (同じテーブル名) の組み合わせです。

これらのケースでモデルを作成する方法がわかりません。誰でも私を助けてくれることを願っています。

0 投票する
0 に答える
310 参照

ruby-on-rails - Ruby/Rails: オブジェクトのネストされた配列を効率的に作成する方法

地域を扱う API を開発しています。自己参照として作成され、列を含むテーブルがありparent_idます。そのテーブルにはこれまでに 144 のレコードがあります。

クライアント アプリは、ネストされたローカリティを受け取る必要があります。私はRailsを使用しているので、最初はシリアライザーの力を使ってそれを実行しようとしていました:

機能しますが、効率的ではないようです。まず、ログにはデータベースへの大量の SQL クエリが表示されます。もちろん、次のようなものを使用してデータを熱心にロードしようとしましLocality.includes(:childrens).allたが、機能せず、効果がありません(何か間違ったことをしたのでしょうか?)

最終的に、地域 ( ) の完全なリストをLocality.all取得し、各要素の parent_id をチェックしてそれらをネストする再帰関数を作成しました。だから私は LocalitySerializer で関連付けを削除しました:

独自のシリアライザー内で個別にビルドします。

これは少し高速ですが、それでもまだ非常に遅いです。ここでは低レベルのキャッシュを設定して、後続のリクエストで高速化することに注意してください。私は実際にベンチマークを作成したことはありません (エンド ユーザーの認識に基づく私の言葉に基づいています) が、ベンチマークを生成するためのより高速な方法を誰かが理解するのに役立つ場合は、喜んで作成します。