問題タブ [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.
mysql - テーブルに 2 列 (複合) PK があり、そのうちの 1 つが自動インクリメントである InnoDB に MyISAM を変換します。
外部キーのサポートを利用できるように、MyISAM テーブルの一部を InnoDB に変換したいと考えています。ただし、ほとんどのテーブルは、これらの列の 1 つが自動インクリメントである 2 列 (複合) 主キー設計を使用します (これは歴史的な理由で行われ、自動インクリメント列が一種の他の列の値のコンテキスト内のレコードの増分キー)
自動インクリメントと InnoDB を使用するには、複数列の主キーを廃止する必要があることを認識しています。ただし、何千ものレコードがあり、これらのレコードには他のテーブルとの関係があります。
これらのテーブルを InnoDB に変換する方法に関するヒントはありますか? 私が思いついた唯一の方法は、最初に各テーブルに新しい列を追加し、それを唯一の自動インクリメント主キーとして設定し、スクリプトを使用して依存テーブルを更新して新しい (本当に一意の) 主キーを指すようにすることです.
ありがとうスティーブ
ruby-on-rails - Railsのcomposite_primary_key Gemの問題
drnic の複合主キー gem を使用していますが、問題があります。テストで次のコマンドを使用して CourseOrder (cpk を使用) を作成したい場合:course_order = CourseOrder.new(:daily_order => daily_orders(:daily_order_one_of_today_for_hans),:course => courses(:non_veg_2), :finished => false, :ordered_at => Time.now)
次のエラーが発生します。
ActiveRecord::StatementInvalid: PGError: エラー: 列 "course_iddaily_order_id" の null 値が not-null 制約に違反しています: INSERT INTO "course_orders" ("course_iddaily_order_id", "course_id", "ordered_at", "finished", "daily_order_id") VALUES ( NULL, 489519433, '2011-03-01 10:19:27.169397', 'f', 594369222) RETURNING "course_iddaily_order_id"
course_iddaily_order_id が間違っていると思いますよね?
私の移行ファイルは次のようになります。
結果のスキーマ部分は次のようになります。
私のモデルは次のようになります。
ここで何が問題なのかわかりません、助けてもらえますか?
hibernate - 条件結合が複合テーブルで機能しない
複合埋め込み可能キー テーブルを選択して、1 回の呼び出しで 2 つのプロパティを取得できません。最初にカウントを取得してからページングしています。サイト全体の他の場所でも同じロジックが使用されています。クエリで以下のエラーが発生します。ここで本当に負けました。
java.sql.SQLSyntaxErrorException: ORA-00904: "U3_"."ID": 無効な識別子
UserBadge.java
java - 複合主キーHibernateとJavaの実装
私は非常に単純なデータベースを次のように定義しました:
私は休止状態のプラグインを使用して、顧客と注文の間の1対多の関係を含むさまざまなクラスを生成しています。この関係は、顧客にリンクされていないと注文が存在し得ないため、識別関係として作成しました。
次の3つのクラスがあります。
=>クラスのお客様
=>クラスの順序:
=>クラスOrderId
次に、メインクラスがあります:
私のDAOオブジェクトは特別なことを何もしていないことに注意してください...セッションを取得して最後に「save」メソッドを呼び出す通常のHibernateUtil実装です。私の問題は次のとおりです。私はこれまで複合キーを扱ったことがありません...事前に私の愚かな質問をすみません。異なるIDと主キーを手動で処理したくありません。Cutomerクラスの場合、データベースに保存するときにIDを自動的に作成する戦略を設定したので、問題はありません。Orderクラスについては、私もそれを扱いたくありません。ただし、キーは複合であるため、このオブジェクトをDBに保存しようとすると、HibernateはidentifierGenerationExeptionを生成します...次のようになります=>自動的に生成された注文IDであり、注文オブジェクトで顧客を設定したため、
ありがとう
entity-framework - Entity Framework (モデル優先) で複合キーを生成できますか?
Entity Framework の「モデル優先」アプローチを使用してデータベースを設計しています。ここで受け取った優れたフィードバックに基づいて、DB の一部にスーパータイプ/サブタイプのパターンを採用しています。
このパターンには、少なくとも 2 つのテーブルの 2 つの列に基づく複合キーが必要です (以下のスキーマを参照)。
フォーラムで「エンティティ フレームワーク」と「複合キー」を検索しましたが、見つけた質問のどれも、このより基本的なレベルに関するものではありませんでした: 1 つのテーブルを生成するようにエンティティ モデルを設定できますか (「データベースの生成」を使用) from Model...") 2 つの列に複合主キーを使用して、1 つが 2 番目のテーブルの外部キーになるようにしますか? 別のテーブルでは、FK を除いて同じ状況が最初のテーブルの 2 つの列に基づいていますか?
または、複合キーを使用せずに EF に DB を生成させてから、SQL Server に移動し、主キーを (再) 設定し、モデルを削除して、新しくインスタンス化されたデータベースに基づいて新しいモデルを作成する方がよいでしょうか? もちろん、その方法は知っています。しかし、私はまだ DB 構造の細部を 1 つまたは 2 つ検討しているので、この時点で DB 構造を本質的に焼き付けることになるものはすべて延期したいと思います。
推奨されるスーパータイプ/サブタイプの構造を次に示します。これは、エンティティ モデルに反映されています (複合キーを生成する方法はまだわかっていません)。
nhibernate - Nhibernate複合キー質問
次のようなperson_skillsというテーブルがあります。
person_id、skill_type_id、base_score、misc_score
スキルタイプのID、名前を含むルックアップテーブルがあります。
ここで注意が必要なのは、person_id、skill_type_idの複合キーがあることです。人は5つのスキルを持っている可能性があるため、このテーブルには多くのエントリがあります。
現在、私はそのようなクラスを持っています:
次に、以下のようにこれらすべてを含むクラスがあります。
これがこの関係を処理するための最良の方法であるかどうかはわかりません。最終的には、人々にスキルへのリンクを提供できるようにする必要があります。多くのスキルに対して1人の人間がいます。
auto incrememnt id列を入れて、それをPKとして使用することを考えていましたが、理想的ではないようです。必要に応じてモデルとDBを変更できますが、これはページのajax部分で使用されるため、スキルを変更してからデータベースに更新できる必要があります。
c# - 外部キーとしての複合キー
MVC3アプリケーションでEntityFramework4.1を使用しています。主キーが2つの列(複合キー)で構成されているエンティティがあります。そして、これは外部キーとして別のエンティティで使用されています。関係を作成する方法は?通常のscneriosでは以下を使用します:
しかし、カテゴリに2つの列のキーがある場合はどうなりますか?
ef-code-first - EF 4.1 Code First を使用した複合キー
EFコードを使用して複合キーを作成する方法を理解しようとしています 最初の4.1 RC.
現在、[キー] データ アノテーションを使用していますが、複数のキーを指定できません。
複合キーをどのように指定しますか?
これが私の例です:
「ActivityName」もキーにする必要があります。確かに、これを回避するためのコーディングはできますが、それは適切なデータベース設計ではありません。
linq-to-sql - Linq2SQLデータベース設計:複合/代理キーのマッピング
2つの異なるフォーラムのような異なるデータソースからのスレッドと投稿を保存する巨大なデータベースを持っているというイメージ。データソースごとに、エンティティのID(ThreadId、PostId ...など)は一意ですが、別のデータソースによって取得されたエンティティのIDと衝突する可能性があります。たとえば、forum1とforum2の両方にThreadid=1のスレッドを含めることができます。
Linq2Sqlとリポジトリパターンを使用して、アプリケーションをデータベースに接続しています。Linq2Sqlを使用するときは、複合キー(ThreadIdとDatasourceIdの間)を避ける必要があることを読みました。したがって、代理主キーが私の唯一の選択肢だと思います(そうですか?):
テーブルスレッド:
- UniqueId-int、PK
- DatasourceId-int
- ThreadId-int
- ..。
テーブル投稿:
- UniqueId-int、PK
- DatasourceId-int
- PostId-int
- ThreadId-int、FKからThreads.ThreadId
さて、私の質問は次のとおりです。Linq2Sqlは、生成されたクラスの投稿とスレッドの間の1:1の関係をマッピングできますか?投稿にThread.ThreadIdへの外部キーがあり、同じThreadIdを持つ2つのエンティティがある場合(もちろん、異なるDatasourceIdがある場合)はどうなりますか?これにより、投稿に割り当てられたスレッドのコレクションが返されると思いますが、これは望ましくありません。どういうわけか、同じDatasourceIdを共有する投稿ごとに1つのスレッドを返すことはできますか?
sql - 候補キーと複合キーの違いは何ですか?
候補キーと複合キーについて読んでいます。私はそれを知るようになりました
- 候補キーは主キーとしての資格を得ることができ、単一の列または列の組み合わせにすることができます
- 複合キーも列の組み合わせです。
複合キーについては、このリンクを参照しました
SQL Server Management Studioで複合キーを作成するにはどうすればよいですか?
したがって、候補キーと複合キーの両方が列の組み合わせである場合、それらは主キーとしての資格を得ることができます。では、正確な違いは何ですか?例を挙げて説明していただけますか?