mysql - 需要帮助使用 mysql 创建简单的多对多关系

标签 mysql database

所以我太习惯使用教义了,以至于忘记了考试时需要的标准 mysql 语法。

我想创建一个名为“youtube”的测试数据库 包含 app_users 表和 app_videos 表。

在“现实生活”中,这将是一个一对多的关系,但我需要 研究创建多对多关系。

所以它 “许多 app_users” -> 有“许多 app_videos” 反之亦然。

所以首先我创建了一个数据库;

CREATE DATABASE youtube;
use youtube;

然后我创建了用户和视频表

CREATE TABLE app_users(
    id INT AUTO_INCREMENT,
    username VARCHAR(20),
    password VARCHAR(40),
    first_name VARCHAR(20),
    last_name VARCHAR(20),
    video_id INT,
    PRIMARY KEY(id)
);

CREATE TABLE app_videos(
    id INT AUTO_INCREMENT,
    video_path VARCHAR(20),
    description VARCHAR(20),
    likes INT(20),
    dislikes INT(20),
    user_id INT,
    PRIMARY KEY(id)
);

然后我创建了一个关系表

CREATE TABLE vid_uid 
(
    id INT AUTO_INCREMENT,
    video_id INT,
    user_id INT,
    PRIMARY KEY(id)
);

现在我需要做的是以某种方式将列相互连接,但我的语法永远不起作用

realationship

我知道我需要改变这个

ALTER TABLE app_users
ADD FOREIGN KEY(video_id)
REFERENCES app_videos(video_id);

一些有用的东西:/

最佳答案

您需要将 app_videos(video_id) 更改为 app_videos(id)。此外,您还想更改表 vid_uid (不是 app_users),因为这是引用外部键的表:

ALTER TABLE vid_uid
ADD FOREIGN KEY(video_id)
REFERENCES app_videos(id);

您还需要执行以下操作:

ALTER TABLE vid_uid
ADD FOREIGN KEY(user_id)
REFERENCES app_users(id);

关于mysql - 需要帮助使用 mysql 创建简单的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28257084/

相关文章:

php - MySQL 加入一张表。使用 where 子句列出值,然后在下方列出值

java - 如何在桌面应用程序中存储数据库凭据?

mysql - 如何在 WHERE 条件下使用存储函数

mysql - 具有大量字段的约束唯一键会损害 MySQL 性能吗?

java - 从数据库中检索数据并将新数据写入mysql

带有 TextFields 问题的 Java 插入查询

mysql - 按行分割的平均响应是多少?

mysql - 如何将具有多个主键的RDBMS数据传输到Elasticsearch中

c# - SQL 或 C# 的配对速度更快吗?

php - 插入mysql导致重复键