参考:https://blog.csdn.net/u013144287/article/details/79024130
自己在项目中写的实例:
‘实体’和‘公理’具有多对多关系,即一个实体可以对应多个公理,一个公理也可以包含多个实体。
多对多关系需要一张纽带表来实现。
// 实体表格
create table if not exists `entity_management`
(
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`entity_string` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '实体字符串',
`entity_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '实体类型',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `entity_management_name_uindex` (`entity_string`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
# // 公理表格,公理表示实体之间的关系。实体和公理之间存在多对多关系
create table if not exists `axiom_management`
(
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`axiom_string` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '公理对应字符串',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `entity_management_name_uindex` (`axiom_string`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
# // 实体和公理之间的纽带表
create table if not exists `EntityMapAxiom_management`
(
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '关系id',
`entity_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '实体id',
`axiom_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '公理id',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `entity_id` (`entity_id`),
KEY `axiom_id`(`axiom_id`),
CONSTRAINT `entity_id` FOREIGN KEY (`entity_id`) REFERENCES `entity_management`(`id`),
CONSTRAINT `axiom_id` FOREIGN KEY (`axiom_id`) REFERENCES `axiom_management`(`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;