数据库一对一 一对多 多对多关系

参考: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;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值