1

現在、MySQL データベースに合計 12 個のテーブルを作成しています。これらのテーブルのうち 11 は相関データを共有し、相互にインデックスを作成しています。テーブルの個々のフィールドに値を入力し、それらが適切にインデックス付けされていることを確認するのに苦労しています。foreign_key手動で行うことなく、他のテーブルとの適切な一致 (インデックス作成)を心配することなく、1 つのレコードのすべてのテーブルの各フィールドにデータを入力できる簡単な方法があるかどうか疑問に思っていました。おそらくクエリで機能しますが、そのようなクエリを作成する方法がわかりません。または、この例に特に関連するその他の提案。

以下は、私のデータベースにテーブルの正確なコピーを作成したい場合のテーブルとクエリのデザインへのリンクです。

テーブル構造・デザイン

すべてのテーブルを作成するためのクエリ

4

1 に答える 1

2

前の質問のテーブルに基づいて、INSERT最初に独立したテーブル (またはベース テーブル) に記録する必要があります。これらのテーブルの一部はeventsemester、などです。外部キー制約が定義されていないMajor_Minorため、これらは独立したテーブルと呼ばれます。

独立したテーブルに挿入するサンプル クエリ、

-- INSERTING records on table event
INSERT INTO event (ID, event_description, event_datetime) VALUES
  (1, 'hello', NOW()),
  (2, 'world', NOW()),
  (3, 'stack', NOW()),
  (4, 'overflow', NOW());

-- INSERTING records on table semester
INSERT INTO semester (ID, SEMESTER_NAme) VALUES
  (1, 'First Semester'), 
  (2, 'Second Semester'), 
  (3, 'Summer'); 

-- INSERTING records on table Major_Minor
INSERT INTO Major_Minor (ID, Major_Minor_Name) VALUES
  (1, 'Math'),
  (2, 'Science'),
  (3, 'English');

-- INSERTING records on table class
INSERT INTO class (ID, class_name) VALUES
  (1, 'Alpha'),
  (2, 'Beta'),
  (3, 'Gamma'),
  (4, 'Omega');

INSERTレコードが挿入された後、従属テーブルを使用できるようになりました。これらは、外部キー制約が定義されているため、従属テーブルと呼ばれます。他のテーブルに存在しない特定のフィールドに値を追加することはできません。従属テーブルの例はMajor_Class_br、テーブル、

-- INSERTING records on table Major_Class_br
INSERT INTO Major_Class_br (ID, Class_ID, Major_Minor_ID) VALUES
    (1,1,1),
    (2,1,2),
    (3,1,3),
    (4,2,1),
    (5,2,1),
    (6,4,2);

ご覧のとおり、Class_IDとの値はMajor_Minor_IDすでにテーブルに存在していました:classMajor_MinorテーブルMajor_Class_brはそれらに依存しているためです。詳細を説明するために、値がまだテーブルにClass_ID存在しない以下のクエリを実行してみてください。Class

INSERT INTO Major_Class_br (ID, Class_ID, Major_Minor_ID) VALUES (7,5,2);

このエラーが表示されます

スキーマの作成に失敗しました: 子行を追加または更新できません: 外部キー制約が失敗しました ( databaseName. major_class_br, CONSTRAINT cc_fk1FOREIGN KEY ( Class_ID) REFERENCES class( ID)):

于 2012-11-08T05:41:18.447 に答える