mysql - 创建值列表作为字段

标签 mysql

我是 mysql 新手,尝试做类似的事情: 我需要一个可以容纳无限数量的用户 ID 的表,我认为我可以这样做:

TABLE USER FIELDS:
user_id - PK
group_id - FK
TABLE GROUP FIELDS:
group_id - PK
user_id - FK

当然它不会工作,因为主键是唯一的,所以我现在得到了 1:1 关系,完全没有任何关系, 我试图不将 group_id 设置为 PK ,而不是我可以有类似 n:n 关系的东西,但你不能在 NOT UNIQUE 字段上创建外键,所以这是不可能的。 有人可以帮助我吗?

最佳答案

从你的问题中绝对不清楚你的最终目标是什么,但如果你正在寻找一种在用户和组之间创建 N:N 关系的方法,你可以通过引入这样的数据透视表来实现

CREATE TABLE users
(
  user_id INT NOT NULL PRIMARY KEY, 
  user_name VARCHAR(255)
);

CREATE TABLE groups
(
  group_id INT NOT NULL PRIMARY KEY, 
  group_name VARCHAR(255)
);

CREATE TABLE group_user
(
  group_id INT NOT NULL,
  user_id INT NOT NULL,
  PRIMARY KEY (group_id, user_id),
  FOREIGN KEY (group_id) REFERENCES groups (group_id),
  FOREIGN KEY (user_id) REFERENCES users (user_id)
);

这是一个 SQLFiddle 演示

关于mysql - 创建值列表作为字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27672934/

相关文章:

php不显示数据库结果

php - PDO rowCount() 支持的数据库

php - MySQL User_ID - 需要帮助

mysql - 高语 : Losing scope in database

php - mysql_connect 第二次不起作用

php - JavaScript 聊天室用户名颜色

mysql - 查询中的日期数组

mysql - 7 天用户统计 SQL 查询

mysql - Laravel 通知 - 向选定的用户发送通知

MySql 将多个时间戳查询分组在同一个查询中