問題タブ [compound-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.

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

java - JPA の複合キー

自動生成された主キーだけでなく、他の 2 つのフィールドで構成される一意の複合キーを持つエンティティを作成したいと考えています。JPAでこれを行うにはどうすればよいですか?
主キーは別のテーブルで外部キーとして使用する必要があり、それを複合化するのは良くないため、これを行いたいと考えています。

次のスニペットでは、コマンドとモデルを一意にする必要があります。pk はもちろん主キーです。

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

jpa - JPA - それ自体との複合キーを持つテーブルの多対多の関係

JPA アノテーションを使用して、テーブル (RoutePlace) とそれ自体との多対多の関係を作成したいと考えています。結合したいテーブルの特異点は、複合キーがあることです。

例: https://h4losw2.files.wordpress.com/2008/10/tables.png

代替テキスト

助言がありますか?

前もって感謝します

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

.net - 複合主キーの ORM サポート

複合主キーは典型的な ORM コード ジェネレーターを混乱させると読んだことがあります。どの ORM が複合 PK で最もよく機能し、どれを避けるべきか? (特に .NET に興味があります)

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

mysql - 複合キーの MySQL SELECT LAST_INSERT_ID()。出来ますか?

MySQL で複合キーの LAST INSERT ID() を取得できますか?

0 投票する
3 に答える
768 参照

sql-server - データまたは複数列キーを非正規化しますか?

私は小規模な SQL Server '08 データベースの実装について判断を下そうとしています。

フラットファイル データベースの出力テキスト ファイルを古い COBOL システムから前述の SQL Server データベースに変換しています。これは、レンダー ID (7 桁の数字)、銀行口座番号 (15 桁)、および「口座サフィックス」 (2 桁) の組み合わせによって一意に識別できる、車両および不動産ローンのデータベースです。

データベース管理に関しては、私はかなりナイーブであることを告白します (正直に言うと、現在のポジションまで実際に行ったことはありません)。他のいくつかのテーブルにインデックスを付けるキー:

1) 上記の値の 3 列のキーを使用して各ローンを識別します。または
2) 3 つの値を組み合わせた 24 文字の文字列である「キー」列を実装して、データを非正規化します。

非正規化は醜いのは当然ですが、銀行間でローンをやり取りしたり、ローンの接尾辞を変更したりすることはできないため、更新の異常が発生することは予想できません。これらの値の変更は、別のアカウントであることが保証されています。

複合キーはより洗練されていますが、それが悪いことであると示唆する論文をいくつか読んだことがあります。

では、どちらのオプションがより良い選択になる可能性が高く、さらに重要なことに、その理由は?

0 投票する
3 に答える
24592 参照

database - Django を使用した複合/複合主キー/一意キー

Django を使用して複合 (複合) プライマリ/一意キーを使用してモデル (およびテーブル) を作成するにはどうすればよいですか?

0 投票する
5 に答える
110947 参照

sqlite - SQLiteテーブルの制約-複数の列で一意

SQLiteのWebサイトで構文「チャート」を見つけることができますが、例がなく、コードがクラッシュしています。1つの列に固有の制約を持つ他のテーブルがありますが、2つの列のテーブルに制約を追加したいと思います。これが、「構文エラー」というメッセージとともにSQLiteExceptionを引き起こしている原因です。

私はこれを以下に基づいて行っています:

テーブル制約

明確にするために、私が提供したリンクのドキュメントにはCONTSTRAINT name、制約定義の前にあるべきだと書かれています。

しかし、解決策につながる可能性があるのは、括弧で囲まれた列の定義に続くものはすべて、デバッガーが文句を言うものであるということです。

入れたら

エラーは「CONSTRAINT」の近くにあります:構文エラー

入れたら

エラーは「UNIQUE」の近くにあります:構文エラー

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

java - @EmbeddedId を使用した JPA 複合キー

レガシー データベースには、Users、Workgroups、UsersWorkgroup の 3 つのテーブルがあります。UsersWorkgroup は、ユーザーがワークグループで持つロールを保存します。関連するコード スニペットは次のとおりです。

そしてもちろん、問題は、それが機能しないことです。現在、私はこの例外を受け取ります:

例外の説明: [class entity.Workgroup] と [class entity.UsersWorkgroup] の間で互換性のないマッピングが発生しました。これは通常、マッピングのカーディナリティがそのバックポインタのカーディナリティと一致しない場合に発生します。

OneToMany は ManyToOne と一致する必要があるため、わかりません... それとも、ManyToMany の関係ですか? @ManyToMany に切り替えると、次のようになります。

例外の説明: クラス [class com.ericsson.rsg.ejb.entity.UsersWorkgroup] の関係属性 [workgroup] のターゲット エンティティを特定できません。ジェネリックを使用しない場合は、ターゲット エンティティが関係マッピングで定義されていることを確認してください。

複合キー (埋め込み) を理解しようとしていますが、見つけたすべての例には、外部キーではない単純な列しかありません (しかし、それが複合キーの要点ですよね?)。UsersWorkgroup テーブルを密かに結合テーブルにすることはできますか?

PK クラスを厳密な POJO クラスとして宣言する必要がありますか? または @JoinColumn アノテーションを PK クラスに入れる必要がありますか? 別のテーブルから複合キー内の列を参照するにはどうすればよいですか? 参照するクラス コンストラクターで PK オブジェクトを初期化する必要がありますか?それとも不要ですか?

私は完全に立ち往生しているように感じます。

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

mysql - java.lang.Integer フィールド ID を org.hibernate.id.IdentifierGeneratorHelper に設定できません

JPa 2/Hibernate 3.5.1 を使用して、MySQL データベースにデータを保存する必要があります。従来の理由から、データを保存したいテーブルには複合主キーがあります。主キーの最初の部分は INTEGER 型 (auto-increment-value)、2 番目の部分は BIGINT 型 (Java コードでは Long - 永続化する前に手動で設定) です。

@IdClass-Annotation を介して結合された主キーを実装しました (スタックトレースの下のコード例)。最初のキー部分には生成戦略も設定されています: @GeneratedValue(strategy = GenerationType.IDENTITY)

このようなコードでオブジェクトを永続化しようとすると

次の例外がスローされます。

私のエンティティクラスは次のようになります:

結合された主キー:

Test-Table は、次のステートメントで作成されました。

GenerationType を TABLE に変更すると機能しますが、idPartOne 値が 32.000 単位で生成されます。残念ながら、別のアプリケーションは、JPA/Hibernate を使用せずにこのまったく同じデータベース テーブルを使用し、この ID 部分を 1 ずつ適切にインクリメントしています。

どのアプリケーションがデータをこのテーブルに格納するかに関係なく、id 生成は同じ方法で行う必要があります (つまり、id を 1 ずつ増やします)。これを達成するための最良の解決策は何ですか?ヒント、他のアプリケーションを変更することはできません!

どんな助けでも本当に感謝しています。

どうも、

マーカス

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

sql-server - 複合キー+複合キーとして外部キーを使用してテーブルを作成する

SQLServerCompactでデータベースを作成する際に問題が発生しました

基本的に5つのテーブルがあります(CentreDeCout、Profil、Groupe、CCProfilPivot、CCProfilGroupePivot)

CentreDeCoutの主キーとしてNomCCがあります
Profilの主キーとしてNomProfilがあります

CCProfilPivotには、主キーとしてNomCCとNomProfilがあります(CentreDeCoutとProfilの主キーを参照)

Groupeの主キーはNomGroupeです

CCProfilGroupePivotには、CCprofilPivotの主キーとNomGroupeの主キーが必要です。

したがって、主キーはNomCC、NomProfil、およびNomGroupeになります。
NomCCとNomProfilはCCProfilPivotから取得され、NomGroupeはGroupeから取得されます。

これが私がやった方法です

最後の作成テーブルでこのエラーが発生します

p>

誰か助けてくれませんか?

ありがとうギビビット