問題タブ [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.
sql-server - 複合主キーの1つの列を参照する外部キーを作成する方法
CatalogとCatalogIndexの2つのテーブルがあります
カタログには次の列があります
ここで、2つの列DN、PIDは、このテーブルの複合主キーの一部です。
CatalogIndexには次の列があります
PIDとPItemは、CatalogIndexテーブルの複合主キーの一部です。
カタログテーブルのPIDを参照するPID列のCatalogIndexにforiegnキーを追加したいと思います。
SQLServer2008を使用しています
ありがとうございました
.net - NHibernate - 複合 ID を親子参照にマップする方法
私は次のシナリオを持っています (より良い説明のために、例は非常に単純化されています) データベースモデル BAS_COSTCODE は BAS_CONTEXT を参照します。このテーブルのキーは、COSTCODEID と CONTEXT_FK の複合です。CONTEXT_FK は BAS_CONTEXT を参照します。階層ツリーを構築するために、CostCode は親を持つことができます。このため、テーブル自体への参照があります。
Context のスキーマ ファイルは次のようになります。
そして、CostCode のスキーマは次のようになります。
新しい CostCode エンティティを作成して Commit() を実行すると、次の例外が発生します 。
NHibernate は、親の CostCode オブジェクトを参照する ParentCostCode の参照に問題があると思います。NHIbernate は、列 PARENTCOSTCODE_FK と CONTEXT_FK に値を書き込むことを前提としています。マッピングでは、composite-id が CONTEXT_FK を指し、ParentCostCode が CONTEXT_FK を指します。したがって、それらは同じ列を「共有」しており、NHibernate は列 PARENTCOSTCODE_FK にのみ値を書き込む必要があります。
1 つの解決策は、追加の列 (おそらく PARENTCONTEXT_FK) をテーブル BAS_COSTCODE に追加して、親オブジェクトのコンテキストを表すことです。しかし、親オブジェクトへの参照が存在する場合、CONTEXT_FK と PARENTCONTEXT_FK の値は同じ値でなければならないため、追加の列は必要ありません。そして、それは冗長になります。
その種の問題に対するより良い解決策はありますか?または、BAS_COSTCODE に列を追加することを防ぐことはできませんか?
ご回答ありがとうございます。
grails - GORM を使用して複合主キーを作成するにはどうすればよいですか?
Beer、Review、および Reviewer の 3 つのドメイン クラスがあります。
Review テーブルで Beer と Reviewer の間に多対多の関係を作成する必要があるため、Review の主キーを Beer と Reviewer の id フィールドの合成にする必要があります。私はこのGrailsのドキュメントに従っています。
これが私のドメインクラスです。
コンパイル エラーが発生していましたが、stackoverflow に関する別の回答では、追加する必要があるとのことでしたimplements Serializable
。これでエラーは解決しましたが、データベースを見ると、複合主キーがまだ取得されていません。
テーブル定義を見ると、次のようになります。Postgresを使用しています。
一意の制約を持つ複合インデックスだけで満足しますが、その方法もわかりません。一意ではない複合インデックスを作成できましたが、これには 2 つの問題があります。1つ、それはユニークではありません。2 つ目は、列がインデックス (beer_id、reviewer_id) でアルファベット順に指定されていることです。インデックス内の列の順序を指定したいと思います。
android - Androidコンポジット主キー?
autoincrement_id列を含むAndroid1.6で複合主キーを宣言する方法を教えてもらえますか?構文がわかりません。値を追加しようとすると、Javaで強制することになります(registrationNumber + dateはテーブル内で一意である必要があります)。
_id列は実際には必要ありませんが、テーブルに_id列がない場合は、作業が難しくなる可能性があります。
乾杯、バリー
database-design - Question about composite primary keys
Example table:
Assuming that id
and tenant_id
on each table make up composite primary keys, and that ticket_id
is a foreign key to Ticket
will this setup protect me from a circumstance where a TicketItem
has tenant_id=1
and ticket_id=5
where the Ticket
with id=5
has tenant_id=2
? In simpler words, would the database allow me to link rows from 2 tables - each with different tenant_id
- together, ruining my data, or does it protect me from this?
Also, does the above example seem like a "good" use of a composite primary key?
sql - SQLServer2005の複合クラスター化インデックスと非クラスター化インデックス
複合主キー、たとえばPrmIDとTypeを使用して新しいテーブルを作成したため、新しい複合クラスター化インデックスが作成されました(PrmIDが最初です)。Typeに別の非クラスター化インデックスを追加します。
私の質問は、Typeで任意のステートメントを実行するクエリ(GROUP BYなど)を生成するとき、SQLエンジンは非クラスター化インデックステーブルまたはPKクラスター化インデックス(この種のクエリではより高価です)を使用していますか?
mysql - intおよびvarcharフィールドを持つテーブルのMysql主キー?
映画のテーブルがあり、別のタイトルを保存したいと思います。代替のタイトル/エイリアスを別のテーブルに保存します。ただし、使用するのに最適な主キーが何であるかはわかりません。
movie_id
INT
フィールドとフィールドがありますalias
varchar(255)
。主キーは両方のフィールドにある必要がありますか(1つの映画に複数のエイリアスを含めることができるため)?代わりに、主キーに別のフィールドを追加する必要があります。たとえばalias_id
、自動インクリメントするだけですが、それ以外の目的はありません。または、このテーブルには主キーが必要ですか?多分それはエイリアスに一意のインデックスを持っているべきであり、主キーは必要ありませんか?
sql - テーブルがそれ自身の主キー インデックスにどのように違反する可能性がありますか?
主キーが 3 つの列に適用されたテーブルを持つ PostgreSQL データベースがあります。データベースによると、キーにはインデックスがあります。
それでも、いくつかの簡単なテストで、重複したキーがあることがわかりました。
明らかに、(主キーに基づく) 個別の行の数は、行の数よりも少なくなっています。私の質問は、これはどのように可能ですか?
編集:完全なテーブル定義は次のとおりです。
重複行の例:
eclipse - この JPA 2.0 マッピングによって Eclipse/JBoss Tools でエラーが発生するのはなぜですか?
私は次のような状況です:
(ソース: kawoolutions.com )
JPA 2.0 マッピング (エラーの原因は Zip および ZipId クラスのみであると考えられるため、おそらく十分である可能性があります):
非常にシンプルなデザイン:
国は地域であり、ルート クラスから ID を継承します。郵便番号は国内で一意であるため、ISO コードと実際の郵便番号を PK として組み合わせます。したがって、Zip は Countries.iso_code を参照します。このコードには、代替の一意の非 null キーがあります (非主キー列への参照!)。Zip.country アソシエーションは @Id アノテーションを取得し、その変数名はその ID クラス ZipId のものと同じです。
ただし、Eclipse内から次のエラーメッセージが表示されます(JBossツールも使用):
検証メッセージ: 「ID クラス属性 country に一致する属性のタイプが正しくありません java.lang.String」
- JPA 2.0構文でこれが間違っているのはなぜですか(Zip.country の @Id アノテーションを参照)。そうではないと思います。結局、Zip.country と ZipId.country のすべてのタイプは、@ManyToOneの @Id アノテーションと ID クラスの対応物となる単純な整数である PK のため、JPA 2 で同じにすることはできません。誰でもこれを確認/確認できますか?
- これは、おそらく JBoss Tools のバグでしょうか? (上記のバグを報告しているソフトウェア コンポーネントはどれですか? 3 つのテーブルとエンティティ クラスを新しい JavaSE プロジェクトに配置すると、正確なコードでエラーが表示されません...)
sql - 複合主キーを使用して、挿入したばかりのレコードを選択します
次のように配置された複合主キーを持つテーブルがあります。
これらの列はどちらも主キーの一部です (実際には、実際のテーブルでは 4 つの部分からなる PK ですが、例のために簡略化しています)。どの列も ID ではありません。order_seq
指定された次のレコードに新しいレコードを挿入するストアド プロシージャを作成していsome_id
ます。
@newSeq の設定方法を知る必要があります。同時実行の問題に遭遇したくないため、挿入後に選択クエリを実行することは避けたいと思います。テーブルをロックしたり、トランザクションを使用したりすることは禁止されています (質問しないでください)。
私の知る限りSCOPE_IDENTITY()
、どの列もIDではないため使用できません。どうすればnewSeq
正しく設定できますか?