微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多对多关系实体双间接外键问题

如何解决多对多关系实体双间接外键问题

我的表之间有以下关系:

CREATE TABLE `class`  (
  `id` int(0) NOT NULL,`grade` varchar(255) NOT NULL COMMENT 'first,second,etc (grade)',`province` varchar(255) NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB ROW_FORMAT = Dynamic;

CREATE TABLE `class_province`  (
  `id` int(0) NOT NULL,`class` int(0) NOT NULL,`province` int(0) NOT NULL,PRIMARY KEY (`id`) USING BTREE,INDEX `fk_nm_class`(`class`) USING BTREE,INDEX `fk_nm_province`(`province`) USING BTREE,CONSTRAINT `fk_nm_class` FOREIGN KEY (`class`) REFERENCES `class` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT `fk_nm_province` FOREIGN KEY (`province`) REFERENCES `province` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB ROW_FORMAT = Dynamic;

CREATE TABLE `class_schooltype`  (
  `id` int(0) NOT NULL,`schooltype` int(0) NOT NULL,INDEX `fk_nm_schooltype`(`class`) USING BTREE,CONSTRAINT `fk_nm_classschooltype` FOREIGN KEY (`class`) REFERENCES `class` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT `fk_nm_schooltype` FOREIGN KEY (`class`) REFERENCES `school_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB ROW_FORMAT = Dynamic;

CREATE TABLE `country`  (
  `id` int(0) NOT NULL,`name` varchar(255) NOT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB ROW_FORMAT = Dynamic;

CREATE TABLE `province`  (
  `id` int(0) NOT NULL,`country` int(0) NOT NULL,INDEX `fk_province_country`(`country`) USING BTREE,CONSTRAINT `fk_province_country` FOREIGN KEY (`country`) REFERENCES `country` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB ROW_FORMAT = Dynamic;

CREATE TABLE `school_type`  (
  `id` int(0) NOT NULL,INDEX `fk_schooltype_country`(`country`) USING BTREE,CONSTRAINT `fk_schooltype_country` FOREIGN KEY (`country`) REFERENCES `country` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB ROW_FORMAT = Dynamic;

我的问题是现在班级可以有一个省(有A国)和一个可以有B国的学校类型。这应该是不可能的。 我可以改变什么? 提前致谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。