Взаимозависимые таблицы - PullRequest
0 голосов
/ 26 апреля 2019

Я работаю над проектом с базой данных Java, Spring Boot, JPA и H2. Тем не менее, я запутался с тем, как были разработаны таблицы базы данных. Есть 3 таблицы A, B и C.

Таблица A имеет первичный ключ таблицы B в качестве внешнего ключа.

Таблица B имеет первичный ключ таблицы C в качестве внешнего ключа.

Таблица C имеет первичный ключ таблицы A в качестве внешнего ключа. Поскольку каждая таблица зависит от других таблиц, при создании схемы всех трех я получаю сообщение об ошибке, указывающее, что таблица B не найдена

Я даже пытался использовать команды ALTER, но все еще сталкивался с той же проблемой.

Вот мой код

DROP TABLE IF EXISTS TEAMS;
CREATE TABLE IF NOT EXISTS TEAMS (
  `team_id` int (11) NOT NULL AUTO_INCREMENT,
  `name` varchar (100) NOT NULL DEFAULT '0',
  `train_id` int (11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`team_id`),
  CONSTRAINT `FK_teams_trains` FOREIGN KEY (`train_id`) REFERENCES TRAINS (`train_id`)
);

DROP TABLE IF EXISTS USERS;
CREATE TABLE IF NOT EXISTS USERS (
  `user_id` int (11) NOT NULL AUTO_INCREMENT,
  `team_id` int (11) DEFAULT NULL,
  `reports_to` int (11) DEFAULT NULL,
  PRIMARY KEY (`user_id`),
  CONSTRAINT `FK_users_teams` FOREIGN KEY (`team_id`) REFERENCES TEAMS (`team_id`),
  CONSTRAINT `FK_users_users` FOREIGN KEY (`reports_to`) REFERENCES USERS (`user_id`)
);


DROP TABLE IF EXISTS TRAINS;
CREATE TABLE IF NOT EXISTS TRAINS` (
  train_id INT (11) NOT NULL AUTO_INCREMENT,
  train_name varchar (100) NOT NULL DEFAULT '0',
  team_coach INT (11) NOT NULL DEFAULT '0',
  train_vp INT (11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`train_id`)
);

 ALTER TABLE TRAINS ADD CONSTRAINT `FK_trains_users` FOREIGN KEY (`team_coach`) REFERENCES USERS (`user_id`);
 ALTER TABLE TRAINS ADD CONSTRAINT `FK_trains_users_2` FOREIGN KEY (`train_vp`) REFERENCES USERS (`user_id`);
 ALTER TABLE TEAMS ADD CONSTRAINT `FK_teams_trains` FOREIGN KEY (`train_id`) REFERENCES TRAINS (`train_id`);
 ALTER TABLE USERS ADD CONSTRAINT `FK_users_teams` FOREIGN KEY (`team_id`) REFERENCES TEAMS (`team_id`);
 ALTER TABLE USERS ADD CONSTRAINT `FK_users_users` FOREIGN KEY (`reports_to`) REFERENCES USERS (`user_id`);

Как я могу решить эту проблему?

...