問題タブ [associative-table]
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.
entity-framework - 追加の列をジャンクション テーブルに追加した後に edmx を更新する
私は.Net 4.5、エンティティフレームワーク5、データベースを最初に使用しています。データベースにジャンクション (多対多) テーブルがあります。この例では、テーブルが「StudentsCourses」であるとしましょう:
これは今のところうまく機能します。「データベースからモデルを生成」は、Course エンティティへのナビゲーション プロパティを持つ Student エンティティを作成します。しかし、ここで問題が発生します。
StudentsCourses テーブルに別の列を追加する必要があります。この列を「CourseYear」と呼びましょう。したがって、ジャンクション テーブルは次のようになります。
そのため、この列をデータベースに追加し、edmx で「データベースからモデルを更新」を実行しました。StudentCourses 用に作成されたエンティティが、Students と Courses の両方へのナビゲーション プロパティを持つことを期待しています。しかし、そのようなエンティティは作成されません。以前と同じナビゲーション プロパティを持つ同じ 2 つのテーブル (Students & Courses) が表示されます。
私は多くの読書と研究を行ってきましたが、明確な答えに出くわしていません. 私のシナリオには当てはまらないコード ファーストに関する情報が豊富にあります。私が求めているものを手に入れる方法はありますか?StudentCourses テーブルに PkId を追加するのと同じくらい簡単ですか? SQL レプリケーションが原因で、これを行うことができません。コンポジットで十分だと思いますが、EFには魔法を行うためにPKが必要なのでしょうか? 関係を手動で設定する方法について少し読みましたが、私の特定の状況に当てはまるものは見つかりませんでした。データベースから edmx を更新するプロセスで、単純な手順を見逃している可能性があります。新しいテーブルの追加、列の追加、列の削除など、これを何度も行ってきました。いつもと同じ手順に従っています。
助けてくれてありがとう。大変感謝しております。さらに情報が役立つかどうか教えてください。
database - 連想オブジェクトへのSQLAlchemyテストデータ
sqlalchemy を使用して DB を構築しており、モデルをテストしたいと考えています。いくつかのトピックを読んだり、ドキュメントを読んだりしても、データを連想テーブルにロードする方法を理解しているかどうかはわかりません。この方法で2つのクラスを作成しました:
次に、セッションを作成してフラッシュします。
object/tableCustomerInstance
は 2 つの ID のみで構成されているため、どのように入力すればよいでしょうか? 私は正しい道を進んでいますか?同じ質問ですが、primary_key が FK であるテーブルにデータを挿入する方法は?
database - 単一のテーブルで複数の外部キーを使用する場合と、連想テーブルを使用する場合はいつですか?
複数の外部キーをテーブルに含めるタイミングと連想テーブルを使用するタイミングを理解しようとしています。
編集:うまくいけば理解しやすくするために図を追加しました。
多くの設定が部門または分類に固有の設定システムがあります。したがって、たとえば、「チームあたりの数」のような設定は、ディビジョン 1 のクラス A とディビジョン 3 のクラス A では異なる場合があります。また、「最小スコア」は、ディビジョン 1 のクラス A とディビジョン 1 のクラス A とで異なる場合があります。 C. もちろん、同じテーブルに入れるべきだと思う部門や分類とは関係のない設定もあります。
したがって、これを行う 1 つの方法は、div/class ID を FK として設定テーブルに入れることです。次に、どちらか一方 (またはどちらか) に依存しない設定は、それらの ID に対して null になります。
分割、分類、設定キーの組み合わせは 1 つしかないので、それでうまくいくはずですよね? しかし、それはどういうわけか「間違っている」ように感じます-ほとんど、競合しているさまざまなイベントをすべて競合他社の表に入れるようなものです. また、後で設定を適用したい追加のカテゴリ/タイプを考え出さないことも保証できません。だから私は次のようなことをしたいと思うようになります:
これにより、新しいカテゴリができたときに成長が容易になると思います (「categories」テーブルと「settings_to_categories」テーブルを作成するだけです)。しかし、設定テーブル ([id]、「min_score」、5) にほぼ重複するレコードのセット全体と、関連するアイテムの複数のほぼ同一のテーブル (id、ラベル、説明) がある可能性があります。 1 つのユニークな設定レコードを作成します。
では、男性と女性で異なる設定が必要だと言うとどうなりますか? 設定テーブルに追加のフィールドを追加して、「男性」と「女性」の文字列をレコードにハード コードし、性別固有の設定を除いてどこでも null にするだけですか? または、反対に、レコードが 2 つだけの別の「性別」テーブルを作成し、それをユーザー テーブルでも使用しますか? 突然、私は:
ほとんど...過度に正常化されているように感じ始めます。たぶんそれは私だけです。
ディビジョン 3 のすべてのプレイヤーに一部の設定が適用されても、さらにカテゴリが必要であり、アプリケーションがディビジョン 3、クラス A、カテゴリ グリーン、ローグ、男性プレイヤーと女性プレイヤーの比較。データベースやアプリケーションをあまり再設計する必要はありません。異なる設定を簡単に取得/設定する必要はありません。
これは新しい概念ではないことは確かです。これはどこかで認識されている設計パターンである必要がありますが、単一のデータベース エンティティを関連付ける方法が 3 つ (または 5 つまたは 8 つ) ある状況に対処するための方法とアプローチを探すのは困難です。
私は現在、関連付けテーブルのアプローチ (大幅な正規化) に傾倒していますが、実際には DBA ではありません。それで、私は愚かな設計上の決定を下していますか?そのアプローチのマイナス/課題は何でしょうか? まだ別のアプローチが良いでしょうか?
java - AUTO INCREMENTED 行を取得して連想テーブルに挿入しますか?
2 つの入力があります。
と
<form>
そして、送信時に次の 2 つの SQL 挿入を同時に実行したいと考えています。
SQL 1 : ;'Basket Name'
というテーブルに挿入します。'Baskets'
SQL 2 : 'fruitID'
(ie <option value = "01"> Apple </option>
) を連想テーブルに挿入します。'Baskets_Fruits'
私のテーブル構造:
バスケットテーブル:
バスケット ID -> AUTO_INCREMENT int(11)、NOT NULL
バスケット名 -> varchar(255)
BASKETS_FRUITSテーブル:
BasketID_FK -> Baskets テーブルの「basketID」の外部キー
fruitID_FK -> Fruits テーブルの「fruitID」の外部キー
フルーツテーブル:
fruitID_FK -> AUTO_INCREMENT int(11)、NOT NULL
フルーツ名 -> varchar(255)
参照されているのがAUTO-INCREMENTEDbasketID_FK
の場合、現在の値を取得するにはどうすればよいですか? AUTO-INCREMENTED 列の値を取得するための SQL 構文のコーディング方法がよくわかりません。basketID
編集:
次のようなことをしますか?
しかし、"Foo"
andの"Bar"
構文はどのようなものでしょうか?
sql - 連想テーブルから主キーに基づいて削除 - エラー
(3)テーブルから主キーに基づいて1レコードを削除しようとしています。
これが私が使用しているステートメントです
顧客テーブルから VISA を持つ顧客のレコードを削除します。
ここに私が得ているエラーがあります
ORA-02292: 整合性制約(PLATINUMAUTOGROUP.CDRIVERLICENSENUM_FK)に違反しています - 子レコードが見つかりました
私CDRIVERLICENSENUM
が持っている3番目のテーブルの外部キーだと思います。どうすればいいですか?1つのステートメントで3つのテーブルから1つのレコードを削除できますか?
3つのテーブルは
mysql - 関連エンティティを使用して複数の行を挿入する
私が取り組んでいるプロジェクトの問題に直面しています。
Node.js スクリプトで使用する MySQL データベースがあります ( mysql npm パッケージのおかげです)。
多対多の関係を持つ 2 つのエンティティAとBがあります。それらの間には、 Map_A_Bという名前の連想エンティティ テーブルがあります。外部キーは、AとMap_A_Bの間、およびBとMap_A_Bの間で定義されます。
これがどのように見えるかです:
私が直面している問題は、データ (複数の行) を挿入しようとしているときです。多くの行の INSERT を実行しているため、各テーブルの ID がなく、マッピング テーブルを埋めることができません (各Aに 100 個のBが含まれているとします)。
以前は、連想エンティティ テーブルを使用する代わりに、 Aidを格納するのに役立つBの内部に外部キーがあっただけで、これは非常に簡単に実行できました。でも今は、これしかできません。
以前にいくつかの調査を行ったことがあります.JOINを使用すると、問題なくSELECT / DELETEを実行できます.この複数行のINSERTについて少し迷っています...
この問題を解決する方法についてアイデアはありますか?