私はテーブル関係について読んだことすべてを適用し始めましたが、第3のテーブルがあると考えると、MANY-TO-MANY
という関係のテーブルにデータを挿入する方法が混乱しています。外部キーまたは複合キー?
今、私はこれらのテーブルを持っています。 (多くのテーブルへの多くの)
被写体
name
code PK
units
description
schoolyear
schoolyearId PK
yearStart
yearEnd
schoolyearsubjects
id PK
code FK
schoolyearId FK
しかし、上記のschoolyearsubjectsテーブルの問題は、GUIからschoolyearId
をどのように挿入できるかわかりません。 GUIのスクリーンショットでは、できるだけ早く「保存」ボタンがクリックされると、(schoolyearsubjects
に挿入する) INSERT
文(subject
に挿入する)とを含むTRANSACTION
が実行されます。私が上記に固執すれば、私は校長IDを挿入する必要があります。 schoolyearId
は明らかにGUIから来ません。
schoolyear
--composite keys (yearStart, yearEnd)
yearStart (PK)
yearEnd (PK)
schoolyearsubjects(多くの多くのテーブルTO)
:私はこれにschoolyearsubjects
とschoolyear
の列を変更すると思っています
id PK
code (FK)
yearStart (FK) --is this possible?
yearEnd (FK) --is this possible?
1.)列を変更して複合キーを作成するソリューションはschoolyearId
の代わりにyearStart
とyearEnd
の値を挿入するだけですか?
2.)ジャンクション/リンクテーブルの学校の対象は正しいですか?
3.)アドバイスはありますか?
ご協力いただきありがとうございます。
ありがとうございました。
INSERT INTO schoolyearsubjects (code, yearStart, yearEnd)
SELECT @code, y.yearStart, y.yearEnd
FROM schoolyear y
WHERE @yearStart <= y.yearStart
AND y.yearEnd <= @yearEnd;
...しかし、私はそれは、例えば重複することができますので、あなたがあなたのschoolyearsubjects
と設計上の欠陥があると思う:
私にとってデータベースは問題ではないようです(技術的なIDまたは自然な複合キーで作業することもできますが、どちらも問題ありません)。これはGUIです。あなたは何をしたいのですか?新しい科目を追加しますか?新しい学年を追加しますか?科目を学年に関連付ける?別の行動でなければならないこれらのものを混ぜているようです。 –
ありがとうございます。学年を科目に関連づけたい。しかし、被験者の創造に関して被験者の関連が起こらなければならない。なにか提案を? – p3ace
私はこの問題を十分に理解していません。あたかもそれが何らかの形で生成され、あなたによって書かれていないかのように、GUIのことを話します。それは事実ですか?なぜあなたは単にリストから学年を選択させることができないのですか(リストボックスやコンボボックスに文字列 '2015/2016'、'2016/2017 'など)を選択させ、それらに件名を入力させ、取引を開始させます、ステートメントを作成して実行して件名を保存し、教科書オブジェクトを保存するステートメントを作成して実行し、コミットしますか? –