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

0 投票する
8 に答える
367703 参照

mysql - 複合主キーを適切に作成する方法-MYSQL

これは、私が取り組んでいる激しいセットアップを大幅に単純化しすぎたものです。table_1両方ともtable_2、IDとして自動インクリメントの代理主キーを持っています。とinfoの両方に関する情報を含むテーブルです。table_1table_2

infoとからのIDの複合の主キーを作成する必要があるかどうかを判断しようとしていtable_1ますtable_2。私がこれを行うとしたら、これらのどれが最も理にかなっていますか?
(この例では、ID11209とID437を組み合わせています)

INT(9)11209437 (なぜこれが悪いのか想像できます)
VARCHAR (10) 11209-437
DECIMAL (10,4)11209.437

または、他の何か?

これをMYSQLMYISAMDBの主キーとして使用しても問題ありませんか?

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

c# - 複合主キー/外部キーの問題

私は SQL Server 2008 R2、C#、および ASP.Net を使用しています。チケット番号と、そのチケットがテーブルに表示される回数で構成される複合主キーを持つテーブルがあります。チケットの頻度は、C# コードによって計算されます。

私のテーブルの制約/その他のコード

一意制約の理由は、主複合キーのその部分が他の 2 つのテーブルの外部キーでもあるためです。私が取得し続けるエラーは、一意の制約付き列に重複した値が存在することを私に怒鳴るときです。チケットが再送信される可能性があるため、すべてが開発から本番環境に移行すると、これが発生する可能性があります。

一意キー制約なしで外部キーを作成する方法はありますか? そうでない場合、どうすればこの問題を回避できますか?

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

java - Hibernate HBM2DDL は主外部キーの null 許容フィールドを生成しますか?

hbm2ddl (hibernate3-maven-plugin 2.2 から) を使用して、JPA アノテーション付きエンティティに基づいて DDL を生成しています。通常、これは正常に機能しますが、最近、2 つの外部キーで構成される複合キーを使用するエンティティを導入したため、DDL 生成で問題が発生しています。

具体的には、生成される DDL は、主キー列が NULL 可能であることを指定しており、これは主キー列には当てはまりません。その結果、MSSQL は、列が NULL 可能であるため、主キー制約を作成できません。

エンティティはこちら

エンティティは、主キー クラスとして PricePK を使用すること、さらに重要なこととして、主キーを構成する 2 つの ManyToOne エンティティがオプションではないことを指定します (これは、列が DDL で「null でない」ことを意味する必要があります)。PricePK クラスは次のとおりです。

Price テーブル用に生成される DDL は次のとおりです。currency_id と product_id の両方が null を許可することに注意してください。

MSSql でスクリプトを実行しようとすると、次の (驚くべきことではありませんが) エラーが発生します。

失敗: テーブル store.PRICE の作成 (version int null, amount numeric(19,2) null, currency_id int null, product_id int null, primary key (currency_id, product_id)) テーブル 'PRICE' の null 許容列に PRIMARY KEY 制約を定義できません.

生成されている DDL がこれら 2 つの外部キー列に「null」を指定する理由は何ですか?

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

hibernate - Hibernate Composite の主キーには、他のテーブルの主キーのサブセットである外部キーが含まれています。マッピング方法は?

シナリオは次のとおりです

テーブル A には複合 PK があります。

テーブル B にも、実際には A の PK のサブセットである複合 PK があり、ここでは FK としても機能しています。強制的な FK 制約はありません。

いくつかの方法を試しましたが、どれもうまくいきません。作業中の Hibernate マッピング ソリューションを教えてもらえますか? 注釈スタイルが優れています。

どうもありがとう。

ヴィヴ

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

ms-access-2007 - MSAccessで複合キーを定義する方法は?

私はMSAccessを初めて使用します。MSAccess2007で複合主キーを定義する方法を教えてもらえますか。

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

hibernate - Hibernateの第2レベルのキャッシュcomposite-id

永続性マッピングファイルにcomposite-idがマッピングされているHibernateの第2レベルのキャッシュにオブジェクトをキャッシュしようとしています。ログには、クエリを初めて実行したときに、composite-idとしてマップされたクラスがキャッシュに入れられたことが示されています。ただし、クエリを2回実行すると、オブジェクトはキャッシュからプルされません。代わりに、クエリを再度実行しています。

Hibernateには第2レベルのキャッシュ複合IDに問題がありますか?

関連情報:

  1. Hibernate 3.1、ehcache2.4.2を使用する
  2. 複合IDクラスはシリアライズ可能を実装します
  3. クエリを2回実行するときに、新しいHibernateセッションを使用しています
  4. オブジェクトを取得するためにhibernateTemplate.load(Class、ID)を使用しています

これは、IDを作成し、クエリを実行する方法です。

そして、これが私の永続性マッピングファイルが上記を定義する方法です:

編集:プロットが厚くなる...

これを読み取り専用キャッシュポリシーに変更すると、正常に機能しました。トランザクションキャッシュの動作は非常に予測できないようです。上記が読み取り/書き込みキャッシュで発生したのに、読み取り専用で正常に機能した理由を誰かが説明できますか?このテーブルは更新されていないため、トランザクションセマンティクスがそのインスタンスで物事を変更する理由がわかりません。

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

sql - 複合インデックス主キーと一意の自動インクリメント主キー

クラスター化された複合主キーを持つ1億1100万行を超えるトランザクションテーブルがあります...

...SQL 2008 R2 データベースで。

アーカイブ プロジェクトのためにすぐにテーブルを切り捨てて再入力する予定です。そのため、インデックスを正しく取得する機会は、テーブルが切り捨てられてからになります。複合主キーを保持した方がよいでしょうか、それとも一意の自動インクリメント主キーに移行する必要がありますか?

テーブルのほとんどの検索は、DateOfSale 列と RevenueCentreID 列を使用して行われます。また、SaleItemID 列に参加することもよくあります。SaleType 列を使用することはほとんどありません。実際、一意性のために主キーに含まれているだけです。新しい売上高の挿入と削除にかかる時間(一晩で行われる)は気にしませんが、レポートを返す速度は気にしません。

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

mysql - sql - 1 列の外部キーから 2 列の主キーへ

重複の可能性:
外部キーは一意でないインデックスを参照できますか?

MySQL から PostgreSQL および MS SQL Server に 1 つのアプリケーションを移植したところ、奇妙な (少なくとも私の知る限り) 定義が見つかりました。

これは単純化された例です。

なぜこれが MySQL で可能になり、どのように動作する必要があるのでしょうか?

t1.a は一意ではなく、t1.b も一意ではありません。一緒に一意のレコードを作成し、それが主キーになります。t2.a は t1.a への外部キー参照ですが、t1.a は t1 の主キーの一部にすぎません。

これについてあなたはどう思いますか?

明らかにデータベースの設計が間違っていますか? もしそうなら、なぜこれが MySQL で許可されているのでしょうか?

ありがとう!

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

sql-server - SQL Server 2005 + Entity Designer -- 外部キー制約エラー?

VS2010 で Entity Designer を使用して SQL Server 2005 用のデータベースを構築します。「モデルからデータベースを生成」によって生成された SQL を介して実際にテーブルを構築しようとすると問題が発生します。テーブルはすべて正しく作成されていますが、外部キーの制約で鳴っています。

問題のエンティティは次のとおりです。

生成された SQL コードのこの部分が問題です。

エラーは次のとおりです。

参照テーブル 'dbo.Zone' には、外部キー 'FK_ZoneRegion' の参照列リストと一致する主キーまたは候補キーがありません。

この問題は、私の複数列の主キー (WORLD_ID+ZONE_ID+REGION_ID) で、ZONE_ID と WORLD_ID の両方が外部キーであり、具体的には WORLD_ID が実際には外部キーでもあるという事実と関係があると想定する必要があります。 FK のソースを含むテーブル。

ここで私の構造に何か問題がありますか?ゾーン -> リージョンから 1 つの関連付けを作成するだけでは問題でしょうか? 実際には、ワールド -> リージョンから 1 つとゾーン -> リージョンから 1 つの 2 つの関連付けを作成する必要がありますか?

ありがとう、ダン

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

primary-key - 主キーの更新

A(コード、ID、番号、アドレス)としてテーブルがあります

ここで、code、id、および num は主キーであり、外部キーの依存関係は他のテーブルには存在しません。

numを使用して更新する必要がありidます…できますか?

num は電話番号でした。私はこれを理解しました。しかし、別の質問があります

num のみを使用して同じ列 num を更新できますか。例 UPDATE A SET num = '' WHERE num = '';