我对相关表没有太多经验,但我会添加一个records
表,而不是复制表的 3 个字段,subscription
将插入/选择(使用 INNER JOIN)插入/从records
.
注意:以它为例,而不是真正的应用程序模式。
CREATE TABLE `Subscriptions` (
`id` INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
);
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
);
CREATE TABLE `courses` (
`id` INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
);
CREATE TABLE `records` (
`user_id` INT NOT NULL,
`course_id` INT NOT NULL,
`subscription_id` INT NOT NULL,
`date_start` TIMESTAMP,
`date_end` TIMESTAMP,
PRIMARY KEY (`user_id`, `course_id`, `subscription_id`)
);
我是从头开始做的,不知道下一步是否/完成以上。如果其他人可以改进这个答案,请成为我的客人。
ALTER TABLE `records` ADD CONSTRAINT `records_user` FOREIGN KEY (`user_id`) REFERENCES users(`id`);
ALTER TABLE `records` ADD CONSTRAINT `records_course` FOREIGN KEY (`course_id`) REFERENCES courses(`id`);
ALTER TABLE `records` ADD CONSTRAINT `records_subscription` FOREIGN KEY (`subscription_id`) REFERENCES Subscriptions(`id`);