問題タブ [composite-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 投票する
1 に答える
1329 参照

ruby-on-rails - Railsのcomposite_primary_keysgemが機能しないのはなぜですか?

私はここの指示に従い、composite_primary_keysgemを経由してインストールしました

それはうまくいきました。モデルに以下を追加すると

そして私は得る

また、ここで説明するように、移行で複数の主キーを使用しても効果はありません。

これが機能しない理由と、それを機能させる方法について何かアイデアはありますか?

注:複合キーを使用すべきでない理由についてのスピーチは必要ありませ。私はすでに決心しており、これを機能させたいだけです。ありがとう!

0 投票する
4 に答える
1043 参照

mysql - MySQL: 結合されたキーの自動インクリメント

OK、次のようなテーブルがあります。

アイデアは、単一の投稿を複数回行うことができますが、バージョンが異なるため、ID とバージョンを合わせて主キーにするということです。

私の質問はこれです: Id を自動インクリメントしたいと思います。このような設定でこれは可能ですか?たとえば、投稿の 2 番目のバージョンを挿入すると、問題が発生しますか?


ここでいくつかのことをクリアする必要があるようです。私がしたいのは、次のようなことです:

これにより、自動インクリメントされた ID を持つ新しい投稿が作成されます。ID 7 を取得したとしましょう。新しいバージョンを作成したいと思います。

それはうまくいくでしょうか?または、ID は引き続き自動インクリメント値を取得しますか? そして、それが機能したとしても、データベース設計の観点などからしてすべきではないことを行っているのでしょうか?

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

mysql - MySQL 複合外部キーの挿入に失敗する

2 つの間に複合外部キーを持つ 2 つのテーブルがあります。子テーブルに行を挿入しようとすると、親テーブルに値が存在するにもかかわらず、拘束エラーが発生します。

親テーブルの概要は次のとおりです。

子テーブルには、プロセッサおよび転記日付列への外部キーがあります。

プロセッサ = 1、posting_date = 2010-03-10 で、residual_reports テーブルに行を挿入しました。

プロセッサ = 1、posting_date = 2010-03-10 で、residual_data テーブルに挿入しようとすると。

私は得る:

[Err] 1452 - 子行を追加または更新できません: 外部キー制約が失敗しました ( residual_data, CONSTRAINT residual_data_ibfk_1FOREIGN KEY ( processor, posting_date) REFERENCES residual_reports( processor, posting_date) ON UPDATE CASCADE)

値が親テーブルに確実に存在することを確認しましたが、それでも外部キー制限エラーが発生します。複合外部キーで欠けているものはありますか?

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

c# - Fluent nhibernate:文字列が必要なときに複合キーの列挙型が int にマップされる

デフォルトでは、FNH の動作は列挙型をデータベース内の文字列にマップすることです。

ただし、複合キーの一部として列挙型をマッピングすると、プロパティは int としてマッピングされます。
たとえば
、この場合

AddressType の場所

FNH マッピングは次のとおりです。

このマッピングのスキーマ作成により、

そしてhbmは

AddressType が生成される場所

デフォルトの文字列列挙型汎用マッパーとして FNH に mappit を指示するにはどうすればよいですか?

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

relational-database - 複合キーを壊すことは可能ですか?

テーブルの複合キーを壊して、そのうちの 1 つを他のテーブルの主キーとして使用することはできますか? はいの場合、どうすればよいか教えてください。

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

ruby-on-rails - 代理キーが存在する場合、ドメイン制約の複合外部キーをどのように定義する必要がありますか?

Railsを使用して新しいアプリを作成しているので、すべてのテーブルにid列があります。外部キーを使用してドメイン制約を適用するためのベストプラクティスは何ですか?私の考えと欲求不満の概要を説明します。

これが私が「TheRailsWay」として想像するものです。それは私が始めたものです。

これに伴う問題は、ある会社の製品が別の会社の請求書に表示される可能性があることです。LineItemsに(company_id:整数、nullではない)を追加しました。これは、自然キーとシリアルのみを使用する場合と同じように、複合外部キーを追加しました。

これにより、LineItemsは単一の会社に適切に制約されますが、過剰に設計されており、間違っているように見えます。LineItemsのcompany_idは、代理外部キーが外部テーブルですでに一意であるため、無関係です。Postgresでは、参照される属性に一意のインデックスを追加する必要があるため、idは単純に一意ですが、Products and Invoicesの(id、company_id)に一意のインデックスを作成しています。

参照される列はすでに自然キーであり、一意のインデックスがすでにあるため、自然キーとシリアル請求書番号を含む次の表では、このような複雑さは増していません。

LineItemsテーブルの代理キーは無視できますが、これも間違っているようです。使用する整数がすでにあるのに、なぜデータベースをcharで結合させるのですか?また、上記とまったく同じように行うには、製品と請求書に自然外部キーであるcompany_codeを追加する必要があります。

妥協...

他のテーブルに自然外部キーは必要ありませんが、使用可能な整数がある場合は、charで結合されます。

スキーマとインデックスを複雑な混乱に変えることなく、神が意図したような外部キーを使用してドメイン制約を適用するクリーンな方法はありますか?

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

database - phpmyAdmin (複合キー) を使用したデータベースの関係

優れたリレーショナル データベースの作成について、少し混乱しています。phpmyAdmin を使用してデータベースを作成しています。次の4つのテーブルがあります。場所と価格はオプションであることを心配しないでください。

  1. 人 (必須)
  2. 項目 (必須)
  3. 場所(任意)
  4. 価格(オプション)

アイテムはメインテーブルです。常に人がリンクされます。* mysql でテーブルの結合を行っていることは知っています。テーブルを一緒にリンクしたい場合、(各テーブルの ID を使用して) 複合キーを使用できますが、これがテーブルをリンクする最も正しい方法ですか? また、アイテムにはそれ自体を含む 5 つの ID があることも意味します。place と price がオプションで、 items テーブルへの 1 つのエントリで使用されていない場合、そこに null 値があるため、これはすべて null 値を引き起こします (明らかに、私が理解できる大きな違いです)。助けてください!

前もって感謝します。これが理にかなっていることを願っています。

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

asp.net-mvc - Asp.NetMVC作成/更新/削除と複合キー

複合キーの使い方がわかりません。

私のCategoriesテーブルにはCategoryId(PK、FK)、LanguageId(PK、FK)、CategoryNameがあります

私はこのデザインに従っています

デフォルトのアクションは次のようになります

およびActionLink

私は次のようなものを使用する必要があります

したがって、URLは

/Category/Edit/5-5

またはルートを次のようなものに変更します

/Category/Edit/5/5

または、もっと良い方法がありますか?

0 投票する
9 に答える
78231 参照

java - @OneToManyと複合主キー?

私は(春に)注釈付きのHibernateを使用しており、順序付けられた多対1の関係を持つオブジェクトがあります。このオブジェクトは、複合主キーを持つ子オブジェクトであり、その1つのコンポーネントは外部キーに戻ります。親オブジェクトのID。

構造は次のようになります。

注釈のさまざまな組み合わせを試しましたが、どれも機能していないようです。これは私が思いついた最も近いものです:

私は長い実験の末にこれに到達しました。そこでは、他のほとんどの試みで、さまざまな理由で休止状態にさえロードできないエンティティが生成されました。

更新:コメントをありがとう。私はいくつかの進歩を遂げました。私はいくつかの調整を行いましたが、より近いと思います(上記のコードを更新しました)。ただし、現在、問題は挿入にあります。親オブジェクトは正常に保存されているように見えますが、子オブジェクトは保存されていません。私が判断できたのは、休止状態が子オブジェクトの(複合)主キーのparentId部分を埋めていないためです。 m一意ではないエラーが発生する:

自分のコードに属性namepos属性を入力していますが、親IDはまだ保存されていないため、もちろんわかりません。これを記入するように休止状態を説得する方法についてのアイデアはありますか?

ありがとう!

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

c# - NHibernate MySQL 複合キー

組み込みの MySQL.DB テーブルの PrimaryKeys のセットを模倣する複合キーを作成しようとしています。

Db 主キーは次のとおりです。

これは私のDataBasePrivilege.hbm.xmlファイルです

以下は、複合キーの 2 つのクラスです。

そして、以下は私が得ている例外です:

編集:今、私はこの例外を受けています。誰でも助けてもらえますか?