テーブルMEALとテーブルRESTAURANTの間に多対多のテーブルを作成する必要があります。その後、私は '共同' のテーブルを作成し多対多テーブルSQL
CREATE TABLE RESTAURANT (
ID_Restaurant VARCHAR(10) NOT NULL,
ID_Hotel VARCHAR(10) NOT NULL,
Name VARCHAR(30) NOT NULL,
Number_of_Tables INT(3) NOT NULL,
PRIMARY KEY (ID_Restaurant),
FOREIGN KEY (ID_Hotel) REFERENCES HOTEL (ID_Hotel));
CREATE TABLE MEAL(
ID_Meal VARCHAR(10) NOT NULL,
Name VARCHAR(30) NOT NULL,
Preparation_Time VARCHAR(20),
Cooking_Time VARCHAR(20),
PRIMARY KEY (ID_Meal));
:まず、私は2つのテーブルを作成し
CREATE TABLE MEAL_SERVED(
ID_Meal VARCHAR(10) NOT NULL,
ID_Restaurant VARCHAR(10) NOT NULL,
Price INT(5) NOT NULL,
PRIMARY KEY (ID_Meal, ID_Restaurant, Price),
FOREIGN KEY(ID_Meal) REFERENCES MEAL(ID_Meal),
FOREIGN KEY(ID_Restaurant) REFERENCES RESTAURANT (ID_Restaurant));
私は最初の2つの表にいくつかのデータを入力:
INSERT INTO RESTAURANT(ID_Restaurant, ID_Hotel, Name, Number_of_Tables)
VALUES ('REST1', 'H1', 'Benares Indisk Restaurant', 26);
('REST2', 'H2', 'La Gaichel', 35),
('REST3', 'H3', 'Tapas Restaurant', 17),
('REST4', 'H4', 'Faubourg 101', 19),
('REST5', 'H5', 'Pizzeria Roma', 38);
INSERT INTO MEAL(ID_Meal, Name, Preparation_Time, Cooking_Time)
VALUES ('MEAL1', 'Croque-Monsieur', '5 min', '4 min'),
('MEAL2', 'Salad', '6 min', NULL),
('MEAL3', 'Hot Dog', '3 min', '2min'),
('MEAL4', 'Panini', '6 min', '5 min'),
('MEAL5', 'Coca-Cola', NULL, NULL);
までは、今問題はありませんが、3番目の表にデータを入力しようとしたとき:
INSERT INTO MEAL_SERVED(ID_Meal, ID_Restaurant, Price)
VALUES ('MEAL1', 'REST1', 50),
('MEAL4', 'REST1', 50),
('MEAL5', 'REST1', 35),
('MEAL1', 'REST2', 3.5),
('MEAL2', 'REST2', 3.5),
('MEAL4', 'REST2', 5);
例えば10
、その後、私はエラーメッセージを持っている:
FOREIGN KEY constraint failed: INSERT INTO MEAL_SERVED(ID_Meal, ID_Restaurant, Price)
私はこのメッセージを持っているし、どのようにそれを修正するために、なぜ私は理解していません。前もって感謝します。
挿入一つ一つを実行します。どちらが失敗するかを確認してください。正確なキー値を持つ両方のテーブルに対してselectを実行し、それらが存在するかどうかを確認します。 –
Varchar id's ...整数に何が問題なのですか? – jarlh
私は1つずつ試してみるとすべて失敗します。 –