如何 link mySQL 中的两个关系表
How to link two relational tables in mySQL
我有两个table
- Video(v_id,v_duration,v_status,upload_date)视频table中的主键是v_id。
- video_tags(tag_name, video_id)
视频可以有很多标签,这就是为什么我将它们分成两个 table 的原因。问题是当我使用 mySQL 数据库创建这两个 table 时,我设法使用下面的 sql 语句创建了第一个 table,
创建 table video (v_id int, v_duration double, v_status varchar(50) default 'needs approval', upload_date DATE, primary key(v_id))
但是第二个我不能,因为对参考键的误解。
这个mySQL说法是真的吗?
创建 table video_tags(tag_name varchar(50), video_id int, 主键(vidoe_id, tag_name))
这应该有效:
CREATE TABLE `video_tags` (
`tag_id` INT NOT NULL,
`tag_name` VARCHAR(50) NOT NULL,
`video_id` INT NOT NULL,
PRIMARY KEY (`tag_id`),
INDEX `video_id` (`video_id` ASC),
INDEX `tag_name` (`tag_name` ASC),
CONSTRAINT `video_id_fk`
FOREIGN KEY (`video_id`)
REFERENCES `video` (`v_id`))
使用另一列作为主键
我有两个table
- Video(v_id,v_duration,v_status,upload_date)视频table中的主键是v_id。
- video_tags(tag_name, video_id)
视频可以有很多标签,这就是为什么我将它们分成两个 table 的原因。问题是当我使用 mySQL 数据库创建这两个 table 时,我设法使用下面的 sql 语句创建了第一个 table, 创建 table video (v_id int, v_duration double, v_status varchar(50) default 'needs approval', upload_date DATE, primary key(v_id))
但是第二个我不能,因为对参考键的误解。
这个mySQL说法是真的吗?
创建 table video_tags(tag_name varchar(50), video_id int, 主键(vidoe_id, tag_name))
这应该有效:
CREATE TABLE `video_tags` (
`tag_id` INT NOT NULL,
`tag_name` VARCHAR(50) NOT NULL,
`video_id` INT NOT NULL,
PRIMARY KEY (`tag_id`),
INDEX `video_id` (`video_id` ASC),
INDEX `tag_name` (`tag_name` ASC),
CONSTRAINT `video_id_fk`
FOREIGN KEY (`video_id`)
REFERENCES `video` (`v_id`))
使用另一列作为主键