問題タブ [polymorphic-associations]

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 投票する
2 に答える
2032 参照

ruby-on-rails - RoR: has_one "またはその他"? (または、継承のないポリモーフィズム。)

こんにちは、私のプロジェクトには興味深い要件があります。has_oneどちらか一方のクラスであるが、継承のない関係が必要です。それが唯一の方法であれば、継承を回避できますが、2 つの関連付けられたレコードは完全に異なるデータを持ち、まったく関連していません。

私が把握する必要があるのは、次のようなものです。

または のいずれかFooのタイプの 1 つの割り当てがあります。それらは共通の列を 1 つしか共有しないので、おそらくそこから親オブジェクトを作成できます。ただし、共通のオブジェクトから継承する場合 (実際に含まれるデータがオレンジとリンゴである場合)、レコードのテーブルを作成する必要がありますか? レコードが抽象的なレコードであるが、子レコードがそうでない場合、おそらくそれを回避できますか?BarBaz

ここまで来れば私の難しさはお分かりいただけると思います。私は RoR にかなり慣れていませんが、これまでのところ気に入っています。これを回避する方法があると確信していますが、それが何であるかを理解できない場合は気が遠くなるでしょう。

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

database-design - データベース設計における継承のようなもの

さまざまな車両の衝突試験データを格納するデータベースをセットアップしているとします。スピードボート、乗用車、ゴーカートの衝突試験のデータを保存したいと考えています。

SpeedboatTests、CarTests、および GokartTests の 3 つの個別のテーブルを作成できます。ただし、多くの列は各テーブルで同じになります (たとえば、テストを実行した人の従業員 ID、衝突の方向 (正面、側面、背面) など)。ただし、多数の列が異なるため、すべてのテスト データを 1 つのテーブルにまとめることは望ましくありません。スピードボートでは常に null になる列がかなり多く、常に null になる列がかなりあるからです。車の場合は null になり、ゴーカートの場合は常に null になるものがかなりあります。

テストに直接関係のない情報 (テスト対象の設計者の従業員 ID など) も保存したいとします。これらの列は、特に同じ車両のすべてのテストで繰り返されるため、「テスト」テーブルに配置するのは適切ではないようです。

関連する質問を確認できるように、考えられるテーブルの配置を 1 つ示しましょう。

この構造の良い点/悪い点、およびこのようなものを実装するための好ましい方法は何ですか?

Vehicles テーブルに含めたいすべての車両に適用される情報もある場合はどうでしょうか。CarTests テーブルは次のようになりますか...

これは王室の混乱になりつつあるようです。このようなものをどのように設定する必要がありますか?

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

mysql - 同じ列で外部キーを参照する

私は mysql の bd スキームを設計しています。私のデータベースには、a、b、または c の 3 種類のポイントが格納されており、パスは n ペアのポイントで構成されています。

ルート = [ (a1 または b1 または c1 ; a2 または b2 または c2), (a2 または b2 または c2 ; a3 または b3 または c3), ...]

(*) ポイントのペアは (m, n) または m から n まで

そのため、パスのIDとともにポイントのペアを保存しています。私の問題は、テーブルの名前 m と n を識別する 2 つの列を作成しなければならなかったことです。m の場合は table_from、n の場合は table_to です。したがって、コードでこれら 2 つの列を使用して、ルートに保存されているポイントの種類 (path と point_pairs テーブル) を知る必要があります。私の質問: MySql は、同じ列で n 個の外部キーを参照するためのものを提供していますか? a、b、c のポイント テーブルを結合することは既に考えていましたが、この新しいテーブルに type 列を追加する必要があり、私の php クラスは役に立たなくなります。

前もって感謝します!

0 投票する
2 に答える
35077 参照

ruby-on-rails - ポリモーフィックアソシエーションで外部キーを使用できないのはなぜですか?

以下にRailsモデルとして示されているような、ポリモーフィックな関連付けに外部キーを設定できないのはなぜですか?

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

database - StackOverflow のクローンでは、コメント テーブルは質問と回答に対してどのような関係を持つべきですか?

私が構築している StackOverflow に似たアプリケーションで、 my と table の関係を決定しようとしQuestionsAnswersCommentsます。

Questions単一のテーブルでAnswers両方を表すことができますPosts

これにより、Commentsへの単一の外部キーを持つことができますPosts

しかし、QuestionsAnswersが別々のテーブルである場合、これらのそれぞれにどのような関係が必要Commentsでしょうか?

更新: 選択された回答ではクラス テーブルの継承アプローチが推奨されており、これはデータベース用語では最良のアプローチのように思えますが、このオプションは Rails ORM ではサポートされていません。したがって、Rails では、私のモデルは単一テーブルの継承を使用する必要があり、おそらく次のようになります。

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

jpa - JPAでポリモーフィックな関連付けを表現するにはどうすればよいですか?

ポリモーフィック アソシエーションは、外部キーまたは多対 1 の関係に似ていますが、ターゲットが多くのタイプ (言語のクラス、データベースのテーブル) のいずれかであるという違いがあります。

数年間使用してきたデータベース設計を PHP から Java に移植しています。古いコードでは、独自の ORM を展開していましたが、これは多くの理由で最適ではありませんでした。後で微調整を開始し、自分で再度実装することになるかもしれませんが、今のところ、エンティティ クラスで市販の ORM と JPA を使用したいと考えています。

データベースのレイアウトについて、JPA で表現する方法がわからないことが 1 つあります。

Nodeグラフを格納するテーブルがEdgeあります(重要な場合はDAG)。各ノードは、必要に応じて、データベースから別のエンティティを 1 つ参照できます。これらのエンティティは、グラフ全体で複数回参照される可能性があり、ユーザーがアクセスできない「孤立した」エンティティも存在する可能性がありますが、少なくともしばらくの間保持することは理にかなっています。

これらのオブジェクトは、継承などの点でまったく関連していませんが、Customer->Site->Floor->Room のような自然な階層を持っています。実際、何年も前に、「親」オブジェクトを指す外部キー フィールドだけから始めました。しかし、この階層は十分に柔軟ではなく、バラバラになり始めました。

たとえば、ユーザーがフォルダー内のオブジェクトをグループ化できるようにしたいのですが、一部のオブジェクトは複数の「親」を持つことができ、時間の経過とともに関係が変化します。以前の関係を追跡する必要があるため、グラフのエッジにはタイムスパンが関連付けられており、そのエッジがいつからいつまで有効であったかが示されます。

ノードからオブジェクトへのリンクは、ノード テーブルの 2 つの列に格納されます。1 つは外部テーブルの ID を保持し、もう 1 つはその名前を保持します。例 (一部の列は省略):

JPAを使用する以外の解決策があるかもしれません。テーブルのレイアウトを変更したり、新しいテーブルを導入したりすることもできます。ただし、これについてはすでによく考えており、テーブルの構造は問題ないように思えます。思いもよらなかった第3の方法もあるかもしれません。

0 投票する
2 に答える
2722 参照

ruby-on-rails - Rails/ActiveRecord とのポリモーフィックな habtm 関係

Rails/ActiveRecord とのポリモーフィックな has_and_belongs_to_many 関係を作成するにはどうすればよいですか?

私が目にするほとんどの例は、1 つの親のみに関連するポリモーフィック側を制限する属している関係を作成することを含みます。

表: タスク

表: Tasks_Targets

表: CustomerStore

表: ソフトウェアシステム

この状況では、CustomerStore と SoftwareSystem の両方が「Targetable」タイプになります。私が理解していることから、ほとんどの例が示すようにポリモーフィックな関係を実装すると、Targetable を Taskに一度しか関連付けることができません。

ほとんどのオンライン検索では、この関係の背後にある理論の一部がまだ説明されていないため、いくつかの明確化が役立つ場合があります...

ありがとう!