【发布时间】:2017-09-25 03:09:51
【问题描述】:
所以我现在有三个数据库。这是生成每个表的 SQL 代码。
CREATE TABLE `Course` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(25) NOT NULL,
`startTime` time NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `School` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`schoolname` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `SchoolCourse` (
`schoolid` int(11) NOT NULL,
`courseid` int(11) NOT NULL,
PRIMARY KEY (`schoolid`,`courseid`),
KEY `FK_course` (`courseid`),
CONSTRAINT `FK_course` FOREIGN KEY (`courseid`) REFERENCES `Course` (`id`),
CONSTRAINT `FK_Student` FOREIGN KEY (`schoolid`) REFERENCES `School` (`id`)
);
我对这些表格的目标是让它看起来像这样
---------------------------------------------------
|School Name | Courses |
---------------------------------------------------
| School1 | Course1, Course2, Course3 |
| School2 | Course1, Course3 |
| School3 | Course3 |
| School4 | Couse1, Course2, Course3, Course4 |
---------------------------------------------------
我似乎无法弄清楚如何做到这一点。我试过输入这样的值。
INSERT INTO 'ShcoolCourse' VALUES (
(1, 1), (1, 2), (1, 3),
(2, 1), (2, 3),
(3, 3),
(4, 1), (4, 2), (4, 3), (4, 4));
然后我会从那里执行连接并尝试将值放入一列但到目前为止没有运气, 我环顾了其他问题,其中一些有相同的想法,但不完全是我 正在做。任何帮助将不胜感激。
【问题讨论】:
-
别这样,不符合规范化规则。
-
@nobalG 那么有什么好的解决方法呢?如果我不这样做呢?
-
@nobalG 它已经足够规范化了,这里真正的问题是关于如何获得所需的结果(
SchoolCourse由School分组) -
@nobalG 在这个设计中,一列中存储的值不超过一个。