問題タブ [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.
sql - IS-A関係をどのように実装しますか?
1つのテーブルのPKをFKとして他のテーブルに追加することにより、1対多の関係を実装します。2つのテーブルのPKを3番目のテーブルに追加することにより、多対多の関係を実装します。
IS-A関係をどのように実装しますか?
エンティティは技術者と管理者であり、どちらも従業員です。テーブルEMPLOYEE(id、name、surname、role、... AdminFields ...、... TechFields ...)で追加のフィールドを使用できます。
しかし、私はIS-Aオプションを探求したいと思います。
編集:私はドニーが提案したようにしたが、役割フィールドはなかった。
ruby-on-rails - Rails クラステーブルの継承 gem、偽の継承、および欠落しているメソッド
Class-Table-Inheritance gem (https://github.com/brunofrank/class-table-inheritance) を使用するように、既存の Rails アプリの一部を変更する作業を行っています。すべて問題ありませんが、すべてのサブクラスがアクセスできるようにする必要があるスーパークラスである Person にいくつかのインスタンス メソッドを定義しました。たとえばfull_name
、連結された名と姓を返す 、またはcite_name
のイニシャルと姓を返します。CTI gem は実際には Ruby の継承を使用していないため (すべてのサブクラスは引き続き ActiveRecord::Base から継承され、gem は ActiveRecord フィールドをリンクするためにいくつかのファンキーなブードゥーを実行します)、サブクラスでこれらのメソッドにアクセスすることはできません。作成した。これを回避するための考えはありますか?私は STI には興味がありませんが、この特定の CTI gem をフォークしてハックするか、他のソリューションを検討するつもりです。
doctrine-orm - XMLマッピングでDoctrine 2で「クラステーブル継承」を使用する方法
Doctrine 2 の「クラス テーブル継承機能」を XML マッピング (Symfony 2 PR 7) で使用しようとしています。
XML スーパークラス CatalogProduct の XML 定義:
CatalogProduct を拡張する XML スーパークラス CatalogBook の XML 定義:
./php app/console doctrine:generate:entities "CatalogBundle"
正常に動作しますが (entities generatetd)、CatalogBook は「単純な」クラスであり、CatalogProduct を拡張していません。
例外につながります:
私は、CatalogBookエンティティにCatalogProductを拡張するように指示するXMLに何かが欠けていると思います。しかし、私はDoctrine 2のドキュメントやGoogleで役立つものを見つけることができませんでした.
mysql - クラステーブルの継承に代わるCakePHP?
CakePHP でクラス テーブル継承モデルを作成したいと考えています。
upc、価格など、すべての製品が持つべきすべての基本情報を保持するためProductBase
に、テーブルのようなものと呼ばれるモデルが必要です。product_bases
次に、特定の製品タイプ モデルにそれを拡張させます。たとえば、ring_size、center_stone などの特定のリング情報を保持ProductRing
するテーブルを使用します。product_rings
次に、ProductBase モデルから直接データを取得する場合は、すべてのタイプを取得します。
または、特定のタイプのみを検索します。
CakePHP でこのようなことは可能ですか? そうでない場合、代わりに何をすべきですか?
このようなことを行う適切なケーキの方法は何ですか?
database - Doctrine2CTI継承のエンティティタイプを変更する方法
クラステーブル継承を使用して、Doctrine2でエンティティタイプを(可能であれば)どのように変更しますか?
Person
親クラスタイプと2つの継承タイプEmploye
とがありますClient
。Person
私のシステムでは、Personを作成し、そのタイプを指定できます(実装はかなり簡単です)が、レベル情報(IDおよびその他の関連情報)を維持しながら、PersonをEmployeからClientに変更できるようにしたいと思います。記録)。
Doctrine2でこれを行う簡単な方法はありますか?
doctrine-orm - IDを残してエンティティを変換する方法
STI(またはCTI)を使用したエンティティ(地域、国、都市)がいくつかあります。古いIDを残して国を都市に変換するにはどうすればよいですか?
zend-framework - Zend Framework 1.11 + Doctrine 2 + エンティティの生成に関するクラス継承マッピング (YAML) の問題
CTI を実装しようとすると多くの問題が発生します
まず、エンティティ クラスにカスタム ローダーを使用します。
アイデアは、application\Entities
次のような名前空間を持たないクラスに使用することです$user = new Users();
次に、クラス継承を定義しました
次に、クラス Work を手動で作成してプロファイルを拡張しました
最初の問題は 2.0.0 (2.0.1) で始まりました。コンソール ツールのgenerate-entitiesを使用すると、クラスの ID がないWork
というエラーが表示されますWork
。はすでに定義されています。Profiles
id
id
ただし、Work
クラスの列を追加しようとしましたが、列が既にあるというメッセージが表示されますid
。ドー!
PK に他の列名を追加しようとしましたが、適切な継承列も作成されるため、実際には不要な余分な列が取得されます。id
CTI では、単一の FK 列が必要であり、自動生成された値を持つ他の PK はありません。
だから私はドクトリンクラスをハックして、欠落しているIDのチェックを削除するという悪いことをしました。醜いですが、うまくいきました。エンティティが適切に生成され始め、db 構造に問題はありません。
後で、奇妙な動作はすべて doctrine 2 のバグによるものであり、2.0.5で修正されていることがわかりました。
さて、私は 2.0.5 を試してみましたが、まったく同じ問題があったので、間違いは私のコードにあると思いました。
doctrine の jira にバグを報告したところ、私の定義が間違っていて、サブクラスの ID が必要であるという回答がありました (特に YAML マッピングに関して、私たちが知っていることはすべて非常に貧弱であるというドキュメントを参照しました)。私はあきらめて、自分のハックに固執しました。
後で 2.0.6 と 2.1 を試しましたが、これらのバージョンではエンティティが更新されなくなりましたが、generate-entities を使用するたびに新しいクラス定義が最後に追加されるため、重複があります。
私の質問は:
これは教義の問題ですか、それとも間違っていますか?
それが私の中にある場合、CIをマッピングする適切な方法は何ですか
database-design - 継承とデータベース設計
データベースモデルでクラステーブル継承関係を介して継承をモデル化する場合、...
1)各レコードの特定のサブパイプを識別する属性(2つのサブチップのブール値、さらにサブチップの文字列)を含めますか?
2)すべての可能なサブタイプの説明を含むテーブルへの外部キーとしてこのIDを含めますか?
3)上記のどれも、必要な数回のサブテーブルでの「試行錯誤」ルックアップに依存していますか?
php - Doctrine2でクラステーブル継承の外部キー列を指定するにはどうすればよいですか?
Doctrine 2のクラステーブル継承との外部キー関係に使用される列を指定するにはどうすればよいですか?たとえば、次の2つのクラスを考えてみましょう。
これにより、Doctrineはこれに沿ったテーブル構造を期待しています。
employee.person_id
を指す外部キーがありますperson.id
。しかし、どの列を使用するかをDoctrineにどのように伝えることができますか?person.id
参照はクラスの@Id
アノテーションからのものであると思いますが、代わりPerson
にFKを作成したい場合はどうなりますかperson.ssn
(SSNは当然一意であるため、これは考えられます)。
また、代わりにemployee.person_id
が呼び出されるレガシーデータベースがある場合はどうなりますか?employee.p_id
sql - SQL の 1 対多テーブルと複数の 1 対 1 の関係
私は次の目的でプロジェクトに取り組んでいます: ユーザーはチャレンジを作成し、このチャレンジに参加するオプションのライバルを選択できます。チャレンジは毎日のエントリを生成し、これらの統計を追跡します。
基本的な User エンティティと Entry エンティティは次のようになります。
悩んでいる作品はライバルコンセプトのチャレンジ作品です。2 つのアプローチが見られます。
最初のアプローチの問題は、userIds が存在する 2 つの列 (ownerId とriverId) があるため、参照整合性が難しいことです。外部キーを設定するには、すべてのテーブル (owner_entries、river_entries、owner_stats など) を 2 つ作成する必要があります。
2 番目のアプローチはこれを解決し、将来的に複数のライバルを許可するなどの利点があります。ただし、このアプローチではもはやできないことの 1 つは、チャレンジ テーブル全体ではなく、1 人のユーザーに対してチャレンジ名の一意性を強制することです。さらに、チャレンジの所有者を見つけるなどのタスクはよりトリッキーになりました。
チャレンジ テーブルへの正しいアプローチは何ですか? これらのテーブルを開発者に優しい方法でセットアップする方法はありますか、それともクラス テーブルの継承までジャンプして、所有者/ライバルの概念を管理する必要がありますか?