問題タブ [composite-primary-key]
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.
ruby-on-rails - Rails ORM、同じテーブルを参照する2つの外部キーの複合主キーに対応できますか?
30 日 03:16 に編集し、移行とモデルの改善を示しました
それぞれが他の多くの要素に接続できる要素のテーブルがあります。Railsの移行とモデルでこれを行うことは可能ですか? (以下はSQLで実装されています)
要素の表:整数 ID の主キー フィールドと他のフィールドがあります。
要素間リンクの表:
そして、このクエリは、特定の要素にリンクされたすべての要素を、その ID (例: 3) で返します。
これはPostgresで機能し、Railsに変換したいのですが、Railsの解決策を見つけるのに苦労しています...私がやっていることは愚かですか、それともそれほど一般的ではないのですか?
これまでのところ、移行があります (これには、偽の複合主キーがあり、elements.id を参照する外部キーはありません):
また、次のモデルがあります。
どんな考えでも大歓迎です!
過去 24 時間に、近いと思われるものをいくつか見つけましたが、まだ完全には理解できていません。
- 同様の問題がここで議論されましたが、提案されたプラグインを突き止めることができず、移行の面では役に立ちません。
- このプラグインを使用して、InterElementLink で Rails の模造主キーを正常に取得したので、element1_id = 3 および element2_id = 5 の場合、InterElementLink.find(3,5) への呼び出しは機能しますが、明らかに InterElementLink.find(5,3 ) は機能しません...そして、I/ActiveRecord はそれを必要とします。
- ActiveRecord を含む ORM が外部キーをサポートしていないことは理解しています。これについての適切な議論を参照してください(ただし、このプラグインを使用できることは理解しています)。 主キーを作成するためにこれを試みましたが、失敗しました。
どうもありがとう!
jpa - ターゲット エンティティには複合主キーがあるが、ソースにはない場合の 1 対多の問題マッピング
ユーザーがいくつかのプロファイルを取得したユース ケースがあります。つまり、1 対多の関連付けです。
これは、疑似 SQL でこれらのレガシー テーブルを介してマップされます。
これは Java マッピングです。
および userprofiles クラス
UserDao からユーザーを取得すると、次の例外が発生します。
問題は、ソース エンティティ (1-N アソシエーションを取得したエンティティ) で、結合する列が 1 つしかないことです。
ターゲット エンティティの ID を変更しようとしました。そのため、user_id のみをキーとして宣言する user_profiles クラスでは: しかし、このように jpa がクエリを作成するとき、1-1 として関係を作る user_profiles の出現を 1 つだけ処理します。
問題を解決して関連付けを機能させる方法はありますか?
よろしくマッシモ
django - Django の複合 OneToOneFields
私は Django にかなり慣れていませんが、ORM の基本的な考え方はほぼ理解できたと思います。ただし、もっともらしい解決策が見当たらないという特殊な状況があります。Django アプリを作成しようとしているレガシー データベースがあります。両方のテーブルの sql 構造は次のとおりです。
最初のテーブルは、多くのコード (私が書いていません) を壊してしまうため、変更できません。2 番目のテーブルは私が作成したものです (したがって、サロゲート キーです)。2 番目の ('alerts') テーブルでは、(sid,cid) は一意です。
問題は、(sid,cid) がテーブルを効果的に結合できるキーであることです。Django が 2 つのテーブル間の関係を正確に把握できるようにするには、モデルをどのように書き直す必要がありますか? sid と cid の両方に対して OnetoOne を別々に試しましたが、OnetoOne は (sid,cid) に同時に適用する必要があるため、明らかに役に立ちません。OnetoMany も役に立たず、ForeignKey も (sid,cid) が外部キーである必要があるためです。(sid,cid) 複合フィールドは OnetoOne である必要があるようですが、それを実現する方法がわかりません。
注 - (sid,cid) 値は 1-55、2-55、3-55、1-56、2-57、3-60 などのタイプになります。これらはすべて一意であり、エントリは 1 つだけです。両方のテーブル。
後半の編集: Django は複合的な一対一のキーをサポートしていないと思います (少なくとも、Google グループのメンバーの 1 人が言ったことです)。SQLalchemy に移行したところ、希望どおりにモデルが表現されました (複合キーなど)。
ruby - oracle での ruby、activerecord、composite_primary_keys の過剰引用の問題
テーブル間の関連付けに対して SQL が生成されるため、Oracle エラーが発生します。複合主キーは関係ありませんが、composite_primary_keys gem を追加する前はこの問題は発生していませんでした。
アソシエーションの外部キーは、次のように SQL に追加されています。
列「bar_id」は存在します。ただし、このように "Bar_id" を引用符で囲むと、Oracle はこれを真剣に受け止め、すべて大文字と小文字を区別します。
これを生成していた場合のみ:
またはこれ:
大丈夫です。
表示されるエラーは次のとおりです。
私は実際にこれを修正 (「ハッキング」) し、composite_primary_keys gem のバージョン 3.1.0 で使用しましたが、4.0.0 にアップグレードする必要があるため、コードの変更が非常に重要であるため、以前使用していた単純なハックはもはや必要ありません。とても明白です。
これを修正する方法はありますか?
使用されたもののバージョン:
- 複合主キー 4.0.0
- アクティブレコード 3.1.0
- activerecord-oracle_enhanced-adapter 1.4.0
- jruby 1.6.3
java - プリミティブ属性ではない複合主キー
私はJavaとHibernateを初めて使用します。複合キーに問題があります。私はそのようなことをしようとしています:
演奏するとき
次に、AとBのタイプをデータベースに挿入できないという例外がスローされます。どういうわけか、Aオブジェクトを保存せず、A IDのみを保存するように休止状態に指示することは可能ですか?私のアプローチは絶対に間違っていますか?C_PKクラスでプリミティブデータ型を使用する必要がありますか?
mysql - mysqlトリガーを使用して複合主キーの一部のフィールドを更新する
私はmysqlトリガーを初めて使用し、次の場合にトリガーを作成する方法を理解しようとしています。
次の構造のテーブルがあります。
これは、いくつかのサンプルデータでテーブルがどのように見えるかを示しています。
作成するトリガーは、特定のグループで追加された新しいレコードごとに、注文フィールドが正しい注文インデックスで更新されることを確認する必要があります。
したがって、グループ1で新しいレコードを追加すると、注文フィールドは次の注文に自動的に更新されます。この例では、4になります。
entity-framework-4 - Entity Framework 4.1コードファースト、外部キーとしての結合された主キー
Entity Frameworkで問題が発生し、次のモックアップのようなものがあります。
ClassDで問題が発生しました。ClassCの主キーを表すプロパティを、ClassDの主キーにするだけでなく、外部キー参照にする必要があります。(上記のプロパティ名はテーブルの列名と同じであると想定します)
基礎となるデータベースでは、ClassCとClassDの対応するテーブルは1対1の関係にありますが、ClassAとClassCおよびClassBとClassCは1対多の関係です。
ただし、Entity Frameworkに関しては、主キーと外部キーとして同時に機能する同じ名前の複数のプロパティを処理できないようです。生成される基になるSQLで、ClassD_ClassAID、ClassD_ClassBIDの列を探していることがわかります。モデル構成を使用して正しいマッピングを指定する方法はありますか?
私が試してみました:
私も試しました:
これまでのところ、マッピングを導入する試みはすべて満たされています
「プロパティ名xxxはすでにメタデータに存在します」。
sql - 主キー制約に関する警告メッセージ
従業員情報を含むテーブルの1つに主キーを割り当てる際に問題が発生しました。そのテーブルには一意の列はありません。残っている唯一のオプションは、3つの列の組み合わせを主キーとして使用することです。
Warning! The maximum key length is 900 bytes. The index 'pk_hrempid' has maximum length of 1530 bytes.For some combination of large values, the insert/update operation will fail
しかし、これは将来データを挿入する際の大きな問題になることがわかったので、警告メッセージが表示されます。この警告の解決策はありますか?他の質問は、自動インクリメント値を一意のIDとして入れることができますか?それは推奨されますか?他の部署の従業員情報が入ったテーブルがたくさんあるので、今後も問題ないようにしたいと思います。一部の従業員は2つ以上のテーブルにいる場合があります
どんな助けでも大歓迎です!
database-design - 複合主キーを使用して、無関係なオブジェクトをリンクできないようにすることはできますか?
(お気に入りのフレームワークに名前を付けて)にいくつかのモデルがある場合:
主キーポイントの一部であるwhoResaturant
とのポイントを挿入できないようにするデータベース制約を設定することは可能ですか。基本的に、異なるテナントに属するオブジェクトを誤って関連付けることから私を保護します。tenant_id
TenantA
fruit_available
tenant_id
TenantB