MySQL学习笔记(3.5)

这里给出一道MySQL的练习题,能够熟练掌握后对外键的使用和理解有很大帮助

 

假如左表代表了一个公司的员工信息统计表,而右表代表了公司拥有的主机列表,每个员工可以分配多个主机,而每台主机也可以交给多个用户使用,那么要怎样表示这种关系呢?

 可以像这样表示某个用户被分配了哪些主机,但是如果我们想要查找某台主机正在被哪个用户使用时,这个过程就会变得比较困难

解决方法

其实很简单,只要再建一张表把用户和主机的关系进行记录就好了

这里给出笔者的解答方法:

Table: t3 -- 用户表
Create Table: CREATE TABLE `t3` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` char(10) DEFAULT NULL,
  `gender` enum('1','2','3') DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table: t4 -- 主机表
Create Table: CREATE TABLE `t4` (
  `id` int NOT NULL AUTO_INCREMENT,
  `主机名` char(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table: t5 -- 关系表
Create Table: CREATE TABLE `t5` (
  `id` int NOT NULL AUTO_INCREMENT,
  `uid` int NOT NULL,
  `hostid` int NOT NULL,
  PRIMARY KEY (`id`),
  KEY `u_c` (`uid`),
  KEY `c_c` (`hostid`),
  CONSTRAINT `c_c` FOREIGN KEY (`hostid`) REFERENCES `t4` (`id`),
  CONSTRAINT `u_c` FOREIGN KEY (`uid`) REFERENCES `t3` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值