問題タブ [single-table-inheritance]

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

ruby-on-rails - 単一テーブルの継承

DB 設計に関する私の質問への回答は、単一テーブルの継承と呼ばれるものを提案しました。それについて少し調べてみましたが、それほど明確な情報を見つけることができないようです。

基本的に私が理解しているように見えるのは、すべてのフィールドとタイプ フィールドを含む大きなテーブルがあり、ORM レイヤーがタイプ フィールドを使用してさまざまなオブジェクト ビューを提供するということです。あれは正しいですか?

さらに重要なことに、単一テーブルの継承は「承認された」データベース設計手法ですか? つまり、それを使用するのは「賢明」ですか?それを使用しても安全ですか、それとも問題を引き起こしますか?

もう1つの問題は、これがレールでどれだけうまく機能するかということです? Railsからいくつかの参照を見つけましたが、従来とは異なる方法で問題を引き起こすのでしょうか?

どんな助けでも大歓迎です。

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

python - Django での単一テーブルの継承

Django での単一テーブル継承の明示的なサポートはありますか? 最後に聞いたのは、この機能はまだ開発中であり、議論の最中だったということです。

それまでの間、基本的な動作をキャプチャするために使用できるライブラリ/ハックはありますか? さまざまなオブジェクトが混在する階層があります。従業員クラス、従業員の種類のサブクラス、および manager_id (parent_id) を持つ企業構造の標準的な例は、私が解決しようとしている問題の適切な近似です。

私の場合、従業員が別の従業員によって管理されている間、他の従業員を管理できるという考えを表現したいと思います。Manager と Worker に個別のクラスがないため、これをテーブル全体に広げるのが難しくなります。サブクラスは、従業員のタイプ (プログラマー、会計士、販売員など) を表し、誰が誰を監督するかは関係ありません (OK、いくつかの点で典型的な企業ではなくなったと思います)。

0 投票する
7 に答える
12341 参照

ruby-on-rails - Rails STI派生モデルで検証とコールバックを無効にするにはどうすればよいですか?

与えられたモデル

派生モデル(基礎となるデータベーステーブルにはtypeフィールドがあります-これは単純なrails STIです)

DerivedModel良いOOの方法でBaseModel、を含むすべての動作をから継承しvalidates_presence_of :parent_idます。の検証をオフにしDerivedModel、コールバックメソッドが起動しないようにします。できれば、変更したり、壊したりすることはありません。BaseModel

これを行うための最も簡単で堅牢な方法は何ですか?

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

ruby-on-rails - 単一テーブル継承でRailsアプリでmemcachedを使用していますか?

次のようなさまざまなタイプのユーザーを処理するために STI を使用する Rails アプリがあります。

memcached を使用したいのですが、恐ろしい「unknown class/module」エラーが発生し続けます。すべての ActiveRecord モデルをプリロードしようとしましたが、役に立ちませんでした。最初のリクエストは通常​​どおり機能しますが、memcached からの最初のプルでエラーが発生します。私はこれらの指示に従っても役に立ちませんでした。

単一テーブルの継承で memcached を使用できますか?

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

entity-framework - Entity Framework:行バージョンフィールドを使用してクラス継承ごとに1つのテーブルを有効にするにはどうすればよいですか?

サブクラスで同じ名前のメンバーを定義できないのはなぜですか?クラス継承ごとに1つのテーブルがありrowversion timestamp、各テーブルにフィールドがあります。エンティティ設計者はこれを許可newし、プロパティのキーワードを使用してそれを実現する必要があるようです。回避策は何ですか?使用できない場合、継承チェーン内の同じフィールドを異なる値で指定するにはどうすればよいnewですか?これは、rowguids、modifiedbys、modifieddatesなどを持つ他のデータベースにも当てはまる可能性があります。

編集:それを行う論理的な方法は、フィールドへの参照の名前を変更すること、つまりPersonRowversion、から派生するStudentクラスで行うことだと思いPersonます。

しかし、これらの種類のフィールドを自動的に追跡できるEFがありませんか?

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

ruby-on-rails - Ruby on Railsの単一テーブル継承(STI)と単体テストの問題(PostgreSQLを使用)

ユーザーと技術者(つまり、ユーザー<アカウント、技術者<アカウント)の情報を保持するために、単一の「アカウント」テーブルを持つSTIモデルを使用しています。すべてが機能的な観点から機能しますが、単体テストを実行すると爆発します。

... 8)エラー:test_the_truth(UserTest):ActiveRecord :: StatementInvalid:PGError:ERROR:リレーション "technicians"が存在しません:DELETE FROM "technicians" .. ..

基本的に、標準フレームワークは、技術者とユーザーのテーブル(またはPostgreSQLがそれらを呼び出す「関係」)が存在しないことを認識せず、実際、アカウントにエイリアスする必要があります。

何か案は?私はRoRに比較的慣れていないので、STIをまとめてリッピングせずにこれを修正する方法に迷っています。

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

java - JavaとRubyを使用したJSONのポリモーフィズムまたは継承

コンテキストとして、ほとんどのデータをJSON文字列として保存しています。これは、バックエンドのHadoopで非常にうまく機能し、フロントエンドのRubyで簡単に処理できます。私のデータ型は、継承の自然なパターンに適合しています。

簡単にするために、クラスPetと、ペットに餌を与えるプロセスFeedPetがあるとします。また、ペットの一種であるDogにのみ適用されるWalkDogプロセスもあります。私のデータは、犬ではないペットを歩こうとすることを心配する必要がないように編成されています。

私がやりたいのは、PetとDogがPetを拡張し、Dogに追加のメソッド「getLeash()」があることですが、これをJSONにマップする方法がわかりません。

代わりに、種データハッシュマップを持つクラスPetがあるため、WalkDogプロセスはdog.getLeash()ではなくpet.getSpeciesData( "leash")を呼び出します。

Dog extends Petを作成し、Jacksonライブラリを使用してそれをJSONにシリアル化できます。JSONオブジェクトにはリーシュフィールドがあります。しかし、私がすべてのペットに餌を与えたいと仮定します。すべてのペットにはgetFood()メソッドがあります。したがって、FeedPetプロセスはオブジェクトをPetに逆シリアル化します。しかし、これはリーシュフィールドを失います。

WalkDogプロセスは、すべての入力がDogsになることを認識しているため、これを実行できます。これにより、WalkDogプロセスは、Dogとして読み取り、Dogとして書き戻すことができます。

タイプを保持できるようにJavaオブジェクトをJSONにシリアル化する方法はありますか?Railsの単一テーブル継承のようなものを考えていますが、JSONライブラリが理解できるものでなければなりません。

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

mysql - MySQL / Railsのパフォーマンス:1つのテーブル、多くの行と多くのテーブル、少ない行?

私のRailsアプリには、アセット(添付ファイル、写真、ロゴなど)を扱ういくつかのモデルがあります。私はattachment_fuを使用していますが、これまでのところ、MySQLDBに情報を格納するための3つの異なるテーブルがあります。

STIを使用し、型列を使用し、異なる継承されたクラスを使用して、すべての情報を1つのテーブルに配置した場合、パフォーマンスに違いが生じるのではないかと思います。すべてが多くの属性と特性を共有しているため、より乾燥して保守が容易になります。

しかし、何が速いのでしょうか?多くのテーブルとテーブルあたりの行数が少ないのか、それとも1つのテーブルに多くの行があるのか​​。それともまったく違いはありませんか?1秒あたりに多くの情報と多くのクエリを処理する必要があります。

ご意見ありがとうございます!

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

ruby-on-rails - has_many と単一テーブルの継承

Feeds と Posts という 2 つのエンティティ間に has_many 関係があります。特定の種類の投稿、ビデオ、写真もあります。これは、単一テーブル継承を使用してデータベース内で構造化されます。

現在、フィードと投稿 (サブタイプを含む) の間の has_many 関係を指定するフィード モデルがあります。

これを指定するためのより良い、より従来の方法はありますか? それとも、私が持っているものは可能な限り単純ですか?

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

ruby-on-rails - Railsの単一テーブル継承

単一テーブル継承の場合、Railsに文字列の代わりに「type」列に整数列を使用させるにはどうすればよいですか?