問題タブ [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.
wordpress - Doctrine 2.1 - エンティティを複数のテーブルにマップする
次のデータベースの状況があります。
今、私はすでにこれらの2つのテーブルを1つのUser
エンティティに「融合」するために何時間も試みてきました。
テーブルを変更せずにそのようなマッピングを達成する方法はありますかwp_user
(更新の理由でやりたくない)?
ruby-on-rails - クラス テーブル継承モデルを使用したフォームの処理
gemform_for
を使用したクラス テーブル継承モデルがある場合を除き、使用したいと思います。citier
それらは次のように定義されています。
問題は、フォームの最初の部分でFruit
モデルの属性を入力することです。Apple
次に、果物の種類 ( 、 )の選択フィールドに応じて、Banana
その特定のモデルの属性を入力しますが、form_for
ヘルパーでの検証も必要です。これにどのようにアプローチできるかについての提案...または追加の説明はありますか? ありがとう。
ruby-on-rails - Railsのアセットの単一テーブル継承の長所と短所
私はファイルアップロードの宝石を見ていますが、すべてのアセットを単一の「アセット」テーブルに配置し、STIを使用してそれらをサブクラス化する傾向があるようです。、、などのようImageAsset
に。VideoAsset
AudioAsset
Railsは初めてで、STIを使用したことはありません。以前は、images
別のテーブルを作成していました。確かに、いくつかの列を共有する可能性がありますが、いくつかの異なる列もあると思います(サンプルレートは画像には適用されません。たとえば)videos
audios
これらすべてを1つの「アセット」テーブルに詰め込むことの長所:すべてのアセットに対してクエリを実行するのが簡単です。短所:テーブルはより速く大きくなります。それが問題である場合、私は常に「タイプ」列をシャーディングできると思います。また、画像の行などでは、音声のみの列がすべてnullになると予想されます。
私のアプリ全体はアセットに基づいているので、決定を下す前に、長所と短所があることを確認したいと思います。誰かがSTI資産を作って後悔したことがありますか?誰かがそれをして後悔していませんか(大量の資産のために)?ここでは、CTI(クラステーブル継承)がより良いソリューションになるでしょうか?
mysql - Class Table Inheritance (CTI) と Insert Select ステートメント
すべてのテーブルがテーブルで表される 1 つの基本型 (オブジェクト) から継承されるように、MySQL 内で継承データベース モデルを構築する作業を行っていobject
ます。これにより、参照整合性を維持しながら、Notes をデータベース内の任意のテーブルの任意のオブジェクトにリンクできます。設計は次のようになります (同様の構造を持つ子テーブルは他にもたくさんあります)。
この設計により、人を主題とするメモ、別のメモを主題とするメモ、または object から継承した他の多くのテーブルの 1 つを主題とするメモを作成できます (これらのテーブルは、簡潔)。参照整合性によって強制することはできませんが、この設計の前提として、各 object_id は 1 つの子テーブルの 1 つの行でのみ使用されるため、note_id が person_id であるメモはありません。
INSERT... SELECT
person または note に対してステートメントを実行したいときに問題が発生します。user
テーブルがあり、すべてのユーザーをに挿入したいとしましょうperson
。まず、person
作成している新しい行数を に挿入しobject
、次に新しい行を に挿入する必要がありますが、person_id 列を設定するために各行を行にperson
一致させる方法がありません。user
object
私が最初に考えたのは、新しいレコードを作成し、それに応じて値を更新するBEFORE INSERT TRIGGER
onを作成することでした。残念ながら、外部キー制約は、トリガーの起動が許可される前に評価され、孤立した行を修正する前にキャッチしてしまいます。 person
object
NEW.person_id
私が探しているのは、BEFORE INSERT トリガーが制約に先行するように制約実行の順序を変更する方法、または MySQL 内でクラス テーブル継承データベース構造を実現するより洗練された方法のいずれかです。
sql - クラステーブルの継承について
products
3 つのフィールド (name、model(PK)、および class_name)を持つ製品テーブルがあります。クラスはテーブルに対応します。以下に例を示します。
製品表:
AMPS 表:
質問:
PK (モデル) とそれに対応するクラス名を保持するテーブルを作成し、製品テーブルでクラス ID を使用する必要がありますか? すべてのモデルとそのクラスを保持するテーブルを持つ方が効率的でしょうか?
ruby-on-rails - クラステーブルの継承で、親と子に同じIDを使用させる方法は?
と の 2 つのクラスがTopic
ありBuy::Topic
ます。後者は、外部キー ( ) による前者のサブクラスBuy::Topic.topic_id == Topic.id
です。したがって、基本的にこれはクラステーブルの継承パターンを使用しています。
Buy::Topic
親オブジェクトを指す独自id
の外部キーがあります。topic_id
Topic
ただし、次のように 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 に変更される可能性は低いです。
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 が正しいパラメーターです。
このクエリの実行に使用されるコードは次のとおりです。
python - Sqlchemy には結合継承と Firebird が存在します
sqlaclhemy 結合テーブルの継承を使用しようとしたところ、奇妙なことが起こりました。
クエリを書くとき:
それは私に次のようなものを生成します:
そして、exist 句のオブジェクトが外部オブジェクトをオーバーライドするため、これは機能しません。私が使用した回避策は sqlexpression から直接存在するため、
ただし、列とテーブルの名前に大きく依存します。
existsステートメントでオブジェクトテーブルのエイリアスを指定するにはどうすればよいですか?
Debian wheezy、python-2.7.3rc2、sqlaclhemy 0.7.7-1
ruby-on-rails - スタック レベルが深すぎる (モデルの継承を変更する場合)
次の方法で、 citer gemを使用して、既に存在するいくつかのモデルを変換しようとしています。これまでのところ、これは機能します:
作成されたモデル:
両方のモデルに追加acts_as_citier
し、問題なく移行を作成して実行しました。データベース ビューも作成されます。これを既存のモデルに適用しようとすると、次のようになります。
前:
後:
そして、rails g migration
またはrails console
のようなコマンドを実行しようとすると、次のようになります。
script/rails:6: stack level too deep (SystemStackError)
残念ながら、これは私がどこかに無限ループを持っているという疑いを超えて多くを教えてくれません. 誰がこれを引き起こしているのか知っていますか? または、この問題に関する詳細情報をどこで確認できるか、または入手できる場所がわかりませんか? citierで作業するためにモデルを最初から作成し直す必要があるのは、私にとって良い解決策ではありません...
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)として実装しますか、それとも間違った方向に進んでいますか?
ありがとうございました。