問題タブ [shared-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.
java - zeroToOne を休止状態にする
ゼロ対 1 の 2 つのエンティティ間の関係を確立しようとしています。つまり、親は関連付けられた子エンティティなしで保存でき、関連付けられた子とともに保存することもできます。以下は2つのエンティティクラスです...
従業員(親)
EmployeeInfo (子)
MySql DB で AUTO INCREMENT に設定された唯一の親 (従業員) テーブルのこのような関係と id 列では、問題は、親->子オブジェクト グラフの保存中に、次の例外が発生することです。
DB で Child Table の Id プロパティを AUTO INCREMENT に設定してみましたが、このような Parent->Child オブジェクト グラフの永続化は成功しています。ただし、関連する EmpInfo オブジェクトなしで親 (Employee) オブジェクトを保存したいシナリオがあるため、ここで説明されている問題が表面化しており、したがって、子の id 列に AUTO INCREMENT を設定したくありません。
1 つの解決策は、PrimaryKeyJoinColumn を使用せずに特定の JoinColumn を使用することですが、それによって既存のテーブルに不要な列が追加されます。
誰もそのような問題に遭遇しましたか?はいの場合、ポインタは非常に役立ちます。
hibernate - hibernate 3.6 で単純な共有主キーの 1 対 1 マッピングをカスケード保存する方法
両方が主キーを共有する別のエンティティと 1 対 1 の関係を持つエンティティの単純な休止状態の例が必要です。主キーを自動生成するメイン エンティティのみを保存する必要があり、他の依存エンティティは自動的にカスケード保存されます。例えば:
これら 2 つのエンティティを簡単にセットアップできました。ただし、最初に人を保存してから、休止状態で名前を保存する必要があります。人を救うだけでいいということは非常に重要です。
mysql - 共有主キー
これは半ば一般的な質問だと思いますが、過去の質問のリストにはありません。主キーインデックスを共有する必要がある製品のテーブルのセットがあります。次のようなものを想定します。
明らかに、2つの製品テーブル間でインデックスを共有すると便利です。それらを分離しておくという考えは、基本を超えてフィールドのセットが大きく異なるためですが、共通の分類を共有していることに注意してください。
アップデート:
多くの人がテーブルの継承(またはgen-spec)を提案しています。これは私が知っているオプションですが、他のデータベースシステムでは、MySQLに同様のソリューションがあることを期待していたテーブル間でシーケンスを共有できました。回答に基づくものではないと思います。私はテーブルの継承に行かなければならないと思います...ありがとうございました。
nhibernate - NHibernate の主キーは 1 対 1 のマッピングですか?
多分私はこれを間違って設計しただけかもしれません.
現在、共有の主キーを持つ次のような 2 つのテーブルがあります。
person - id (PK)、名前、created_date、...
person_details - person_id (PK)、年齢、身長、...
これで個人が作成され、個人は 1 セットの詳細のみを持つことができます。そのため、最初は person_details をマッピングするときに、PK が割り当てられていると考えていました。これは、個人によって生成されるためです。
PersonDetails モデルのインスタンスを含む Person モデルを作成するとき、この時点ではどちらも Id を持っていないため、データベースにこのデータの最初のインスタンスを作成する方法について少し混乱しています。作成されていません。では、PersonDetails モデルに、作成時に Parent Person モデルから Id を取得するように指示するにはどうすればよいでしょうか?
私はただ怒っているだけですか、それとも Person モデルで行う必要がある簡単なマッピングがあり、それ自身の Id から挿入するときに PersonDetails Id を推測するように指示しますか? 最初の作成後に変更が加えられる場合、PersonDetails の Person_Id が Ajax によって外部で更新されるため、PersonDetails に Person_Id が必要になります...
sql - SQL Update: 最初のレコードの複合キー値の 1 つを変更できません
MSSQL Serverには、複合主キー( StudentID、CourseID )を持つテーブルStudentCourseがあります。選択した学生を別のコースに変更しようとしています。各コース グループの1 つの学生レコードが原因で、操作を実行できません。UPDATE
(1, 2)、(1, 3)レコードのCourseIDを5に更新できますが、 (1, 1)レコードのCourseIDを5に更新できません。同様に、(2, 2)、(2, 3)レコードのCourseIDを5に更新できますが、 (2,4)レコードのCourseIDを5に更新することはできません。
そのようなCourseIDグループの 1 つのレコードだけが、そのCourseIDフィールドを変更することを妨げています。次のエラーが表示されます。
PRIMARY KEY 制約 'PK_StudentCourse' に違反しています。オブジェクト 'StudentCourse' に重複するキーを挿入できません。ステートメントは終了されました。
各グループの最初または最後のレコードであるかどうかわからないため、CourseIDの変更が禁止されています。StudentCourseテーブルに CourseID = 5 のレコードがなく、Course テーブルに CourseID が 5 のコースレコードがあることは確かです。
どんな助けでも大歓迎です。
orm - JPA-複数のテーブル間で共有される主キーとの1対1の関係
以下の例を考えてみましょう。
フルーツ、オレンジ、アップルの3つのテーブルがあります
idはフルーツテーブルで生成され、ここで主キーになります
idはOrangeとAppleの主キーでもあります(共有主キー)
たとえば、フルーツのidが1、2、3、4、5の場合、シナリオは1、2はオレンジ、3、4はアップル、5は再びオレンジになります。
したがって、オレンジのテーブルのIDは1、2、5になり、アップルのテーブルのIDは3、4になります。
問題:JPAアノテーションのみとの関係をキャプチャするエンティティクラスを作成する方法(休止状態のgeneratedValueアノテーションを使用したくない)。
そのような注釈が純粋なJPAで可能である場合は、それに向けて私を案内してください。
ニック
c# - EF 4.1 で 1 対 0 または 1 をリンクする 2 つの子テーブルを持つマスター テーブルを作成する
MVC EF4.1 を使用して、テーブル (TableMaster) を TableChildOne (1 対 0 または 1 の関係) および TableChildTwo (1 対 0 または 1) にリンクしようとしています。TableChildOne と TableChildTwo は直接リンクされていません。
TablechildOne と TableChildTwo は、TableMaster の主キーを共有する必要があります (これは不可能だと読みましたが、回避策はありますか?)
これをもう少し明確にするために画像を含めています。外部キーをどこかに追加する必要があるかどうかはわかりません。これはコードによって作成された実際のモデルではありませんが、私が望むものです。どこかに外部キーが必要かどうかわかりませんか?
画像 : http://www.davidsmit.za.net/img/untitled.png
以下のコードはコンパイルされますが、コントローラーを追加しようとするとエラーが発生します。
「同じキーのアイテムが既に追加されています」
2 番目のテーブルを完全に削除すると、正常に動作します。
以下のリンクを例として使用しました (OfficeAssignment テーブルと Student テーブル)。これは、テーブルを 1 対 0 または 1 でリンクする方法を示しています。しかし、同じリンケージを持つ別のテーブルを追加するのに問題があります: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-a-more-complex-data-model- for-an-asp-net-mvc-アプリケーション
どんな助けでも大歓迎です。
ありがとうございます
entity-framework - エンティティフレームワーク-共有主キーを使用したエンティティ(およびそのナビゲーションプロパティ)の追加
これは私が解決しようとしている問題の単純化されたバージョンです:
2つのエンティティがあります:
アイテム
ItemID(PK)
その他の単純なプロパティ...
WorkItem(ナビゲーションプロパティ)
WorkItem
ItemID(PK)
その他の単純なプロパティ...
アイテム(ナビゲーションプロパティ)
アイテムとそのワークアイテムを作成する必要があります。また、保存する前に、2つのエンティティが相互にポイントできるように両方のナビゲーションプロパティを設定する必要があります。
これは私ができることです:
残念ながら、保存に関しては、これは失敗します。EFは、WorkItemのアイテムの関連付けを設定しようとすると、WorkItemの主キーを設定しようとすると思います。
誰かがこれを達成するための正しい方法について私に教えてもらえますか?
更新:
それで、私は継承を使用してモデルを構築しようとしました。モデルが構築され、検証されます。
残念ながら、モデルにWCFデータサービスを追加し、ブラウザーでサービスを表示しようとすると、次のようになります。
CostItemは、Itemから派生するWorkItemのような別のエンティティです。
database-design - 主キーとしての外部キー、または JPA コンテキストの外部キーとは異なる代理主キーを分離する
FK を PK として使用する、またはサロゲート PK を使用し、JPA コンテキストで FK を FK として使用するベスト プラクティスは何ですか? レガシ データベースがあるため、FK を PK としてマップする必要があると言う人をほとんど見かけませんでした。つまり、新しいテーブルの作成を制御できる場合は、次の構造を使用することをお勧めします。
それ以外の:
sql - SQL、2 つのテーブル、1 つの共有主キー
古いレコードを 2 番目のテーブルに移動できるように 2 つのテーブルが必要なので、メイン テーブルを小さく保ちますが、1 つの int プライマリ キーを使用して両方のテーブルにリンクできるようにしたいと考えています。
例: (実際のテーブルにあるものからこの例を単純化しました) セッションのトレースを保持していて、期限切れのセッションを Expired_Sessions テーブルに移動したいのですが、セッションを Login_Attempts テーブルのようなログ テーブルにもリンクしていますが、そうではありません。それらのテーブルへのリンクを壊したくありません。
これを行うには2つの方法がうまくいくと思いましたが、これを行うためのより良い方法があるはずだと思いましたか?
1: sys_constants テーブルに主キー カウンターを格納し、レコードを追加するたびにインクリメントします。また
2: セッション テーブルの主キーと期限切れセッションの主キーを 3 番目の主キーにリンクする別のテーブルを追加し、3 番目の主キーを使用してログ テーブルにリンクします。