問題タブ [class-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 投票する
2 に答える
8532 参照

wordpress - Doctrine 2.1 - エンティティを複数のテーブルにマップする

次のデータベースの状況があります。

今、私はすでにこれらの2つのテーブルを1つのUserエンティティに「融合」するために何時間も試みてきました。

テーブルを変更せずにそのようなマッピングを達成する方法はありますかwp_user(更新の理由でやりたくない)?

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

ruby-on-rails - クラス テーブル継承モデルを使用したフォームの処理

gemform_forを使用したクラス テーブル継承モデルがある場合を除き、使用したいと思います。citierそれらは次のように定義されています。

問題は、フォームの最初の部分でFruitモデルの属性を入力することです。Apple次に、果物の種類 ( 、 )の選択フィールドに応じて、Bananaその特定のモデルの属性を入力しますが、form_forヘルパーでの検証も必要です。これにどのようにアプローチできるかについての提案...または追加の説明はありますか? ありがとう。

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

ruby-on-rails - Railsのアセットの単一テーブル継承の長所と短所

私はファイルアップロードの宝石を見ていますが、すべてのアセットを単一の「アセット」テーブルに配置し、STIを使用してそれらをサブクラス化する傾向があるようです。、、などのようImageAssetに。VideoAssetAudioAsset

Railsは初めてで、STIを使用したことはありません。以前は、images別のテーブルを作成していました。確かに、いくつかの列を共有する可能性がありますが、いくつかの異なる列もあると思います(サンプルレートは画像には適用されません。たとえば)videosaudios

これらすべてを1つの「アセット」テーブルに詰め込むことの長所:すべてのアセットに対してクエリを実行するのが簡単です。短所:テーブルはより速く大きくなります。それが問題である場合、私は常に「タイプ」列をシャーディングできると思います。また、画像の行などでは、音声のみの列がすべてnullになると予想されます。

私のアプリ全体はアセットに基づいているので、決定を下す前に、長所と短所があることを確認したいと思います。誰かがSTI資産を作って後悔したことがありますか?誰かがそれをして後悔していませんか(大量の資産のために)?ここでは、CTI(クラステーブル継承)がより良いソリューションになるでしょうか?

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

mysql - Class Table Inheritance (CTI) と Insert Select ステートメント

すべてのテーブルがテーブルで表される 1 つの基本型 (オブジェクト) から継承されるように、MySQL 内で継承データベース モデルを構築する作業を行っていobjectます。これにより、参照整合性を維持しながら、Notes をデータベース内の任意のテーブルの任意のオブジェクトにリンクできます。設計は次のようになります (同様の構造を持つ子テーブルは他にもたくさんあります)。

この設計により、人を主題とするメモ、別のメモを主題とするメモ、または object から継承した他の多くのテーブルの 1 つを主題とするメモを作成できます (これらのテーブルは、簡潔)。参照整合性によって強制することはできませんが、この設計の前提として、各 object_id は 1 つの子テーブルの 1 つの行でのみ使用されるため、note_id が person_id であるメモはありません。

INSERT... SELECTperson または note に対してステートメントを実行したいときに問題が発生しますuserテーブルがあり、すべてのユーザーをに挿入したいとしましょうperson。まず、person作成している新しい行数を に挿入しobject、次に新しい行を に挿入する必要がありますが、person_id 列を設定するために各行を行にperson一致させる方法がありません。userobject

私が最初に考えたのは、新しいレコードを作成し、それに応じて値を更新するBEFORE INSERT TRIGGERonを作成することでした。残念ながら、外部キー制約は、トリガーの起動が許可される前に評価され、孤立した行を修正する前にキャッチしてしまいます。 personobjectNEW.person_id

私が探しているのは、BEFORE INSERT トリガーが制約に先行するように制約実行の順序を変更する方法、または MySQL 内でクラス テーブル継承データベース構造を実現するより洗練された方法のいずれかです。

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

sql - クラステーブルの継承について

products 3 つのフィールド (name、model(PK)、および class_name)を持つ製品テーブルがあります。クラスはテーブルに対応します。以下に例を示します。

製品表:

AMPS 表:

質問:

PK (モデル) とそれに対応するクラス名を保持するテーブルを作成し、製品テーブルでクラス ID を使用する必要がありますか? すべてのモデルとそのクラスを保持するテーブルを持つ方が効率的でしょうか?

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

ruby-on-rails - クラステーブルの継承で、親と子に同じIDを使用させる方法は?

と の 2 つのクラスがTopicありBuy::Topicます。後者は、外部キー ( ) による前者のサブクラスBuy::Topic.topic_id == Topic.idです。したがって、基本的にこれはクラステーブルの継承パターンを使用しています。

Buy::Topic親オブジェクトを指す独自idの外部キーがあります。topic_idTopic

ただし、次のように id が親の idBuy::Topicと同じであることを確認したいと思います。topic_id

#<Topic id: 22598>#<Buy::Topic id: 22598, topic_id:22598

これはRailsで可能ですか? これは SEO の目的に適しており、Cancan の処理が容易になりますload_and_authorize_resource(cancan は 2 つの間違った ID を使用して検索することがあります)。

更新:

このスキーマは長い間設定され、実行されてきたため、現在 STI に変更される可能性は低いです。

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

php - クラステーブルの継承で新しいエンティティを挿入できません (Doctrine 2.2)

Doctrine 2.2 でクラステーブル継承パターンを使用しています。私のDBスキーマは次のとおりです。


access_id (主キー) access_type
(識別子列)
access_role
access_acl
access_primary
user_id (外部キー)

子 1
access_id (外部キー)
account_id (外部キー)

子 2
access_id (外部キー)
distribution_id (外部キー)

新しいエンティティをデータベースに挿入しようとすると、親クエリは問題ないように見えますが、子クエリには余分なパラメーターがあります。実行中のクエリをダンプすると、次のようになりました。

'2' インデックスは関係ありません。'1' => 39、'2' => 3 が正しいパラメーターです。

このクエリの実行に使用されるコードは次のとおりです。

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

python - Sqlchemy には結合継承と Firebird が存在します

sqlaclhemy 結合テーブルの継承を使用しようとしたところ、奇妙なことが起こりました。

クエリを書くとき:

それは私に次のようなものを生成します:

そして、exist 句のオブジェクトが外部オブジェクトをオーバーライドするため、これは機能しません。私が使用した回避策は sqlexpression から直接存在するため、

ただし、列とテーブルの名前に大きく依存します。

existsステートメントでオブジェクトテーブルのエイリアスを指定するにはどうすればよいですか?

Debian wheezy、python-2.7.3rc2、sqlaclhemy 0.7.7-1

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

ruby-on-rails - スタック レベルが深すぎる (モデルの継承を変更する場合)

次の方法で、 citer gemを使用して、既に存在するいくつかのモデルを変換しようとしています。これまでのところ、これは機能します:

作成されたモデル:

両方のモデルに追加acts_as_citierし、問題なく移行を作成して実行しました。データベース ビューも作成されます。これを既存のモデルに適用しようとすると、次のようになります。

前:

後:

そして、rails g migrationまたはrails consoleのようなコマンドを実行しようとすると、次のようになります。

script/rails:6: stack level too deep (SystemStackError)

残念ながら、これは私がどこかに無限ループを持っているという疑いを超えて多くを教えてくれません. 誰がこれを引き起こしているのか知っていますか? または、この問題に関する詳細情報をどこで確認できるか、または入手できる場所がわかりませんか? citierで作業するためにモデルを最初から作成し直す必要があるのは、私にとって良い解決策ではありません...

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

ruby-on-rails - Railsでクラステーブル継承を実装するにはどうすればよいですか?

書籍「アジャイルWeb開発とレール」第4版(http://pragprog.com/book/rails4/agile-web-development-with-rails )を読み終えたところですが、作成方法を理解するのに助けが必要です。モデル間の親子関係。私はいくつかのグーグルを行い、StackOverflowでこの辺りを突いて、単一テーブル継承とクラステーブル継承について一般的に学びました。

アーカイブコレクション内のさまざまなアイテムに関するメタデータがたくさんあります。メタデータの多くは、受入番号、タイトル、説明、著作権など、すべてのオブジェクトで同じです。一般的なメタデータに加えて、特定の種類のアイテムにのみ適用できるメタデータがあります。たとえば、写真を保持する必要があります。アイテムがカラーであるか白黒であるかを追跡します。録音物は、フォーマット(CD、DAT、カセットテープなど)と長さを追跡する必要があります。テキスト資料はページ数を追跡する必要があります。等

何千ものレコードがあるので、単一テーブル継承は非効率的すぎるとして除外しました。http://martinfowler.com/eaaCatalog/classTableInheritance.htmlに示されているように、クラステーブル継承の概念を理解していますが、これを新しいRubyonRailsプロジェクトに実際に実装する方法について混乱しています。クラステーブル継承をポリモーフィックアソシエーション(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)として実装しますか、それとも間違った方向に進んでいますか?

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